Ви вирішили запустити інтернет-магазин на Spree. Встановлення через bundle install валиться з конфліктами гемів — часта ситуація? Зазвичай причина в несумісності версій Ruby, Rails і самого Spree. Наприклад, Spree 4.x працює тільки з Rails 7.0/7.1, а багато хто ставить новітній Rails 7.2. Правильне налаштування оточення з першого разу економить до двох днів розробки. Ми налаштовували Spree для магазину автозапчастин з каталогом на 50 000 товарів. Після оптимізації eager loading і кешування Redis час завантаження сторінки скоротився з 8 до 2 секунд.
Правильне встановлення Spree — це не просто bundle install. Потрібно врахувати сумісність усіх гемів, налаштувати PostgreSQL, Redis, Sidekiq, а також інтегрувати платіжні шлюзи та доставку. Нижче — ключові кроки та типові помилки.
Які проблеми вирішує правильне встановлення Spree?
- Несумісність Gemfile. Ми використовуємо перевірену комбінацію: Ruby 3.2, Rails 7.1, Spree 4.10. Це виключає конфлікти.
- Налаштування PostgreSQL і Redis. Без правильної конфігурації база даних і кеш працюють повільно. Ми оптимізуємо параметри під навантаження.
- Інтеграція з російськими сервісами. Наприклад, підключення платіжних шлюзів (Сбербанк, ЮKassa) або служб доставки (СДЕК). У Spree це робиться через розширення.
N+1 запити — бич Spree-проектів. Ми вирішуємо їх за допомогою eager loading та Bullet gem. В одному з проектів для магазину автозапчастин з каталогом на 50 000 товарів ми скоротили час завантаження сторінки з 8 до 2 секунд завдяки оптимізації eager loading і кешуванню Redis.
Як ми встановлюємо Spree: покроково
Крок 1: Підготовка оточення
Створюємо Rails-додаток з PostgreSQL і без зайвих гемів:
gem install rails -v "~> 7.1" rails new my_shop \ --database=postgresql \ --skip-test \ --skip-action-cable \ -T cd my_shop Крок 2: Gemfile та встановлення
Додаємо Spree та супутні геми. Перевірена конфігурація:
# Gemfile source "https://rubygems.org" ruby "3.2.0" gem "rails", "~> 7.1.0" gem "pg", "~> 1.1" gem "puma", ">= 5.0" gem "spree", "~> 4.10" gem "spree_auth_devise", "~> 4.6" gem "spree_backend", "~> 4.10" gem "spree_gateway", "~> 3.10" gem "sidekiq", "~> 7.0" gem "redis", "~> 5.0" gem "sprockets-rails" gem "sassc-rails" gem "uglifier" gem "bootsnap", require: false gem "image_processing", "~> 1.2" group :development, :test do gem "debug" gem "factory_bot_rails" gem "rspec-rails" end Крок 3: Генерація та міграції
Запускаємо генератори Spree, створюємо БД, виконуємо міграції:
bin/rails g spree:install --user_class=Spree::User bin/rails g spree:auth:install bin/rails g spree:backend:install bin/rails db:create db:migrate bin/rails db:seed # Опціонально: тестові дані bin/rails spree_sample:load Після цього Admin UI доступний на /admin (логін: [email protected], пароль: spree123).
Крок 4: Конфігурація магазину
Налаштовуємо валюту, локалі, метод доставки, податкову зону:
# config/initializers/spree.rb Spree.config do |config| config.currency = "RUB" config.currency_symbol_position = :before config.prices_inc_tax = false config.track_inventory_levels = true config.require_master_price = true end # Налаштування зони Росія russia_zone = Spree::Zone.create!(name: "Russia", kind: "country") russia_zone.members.create!(zoneable: Spree::Country.find_by!(iso: "RU")) Крок 5: Фонові завдання
Sidekiq та Redis для обробки email та інших фонових операцій.
Чому Spree краще готових CMS для російського e-commerce?
Spree дає повний контроль над кодом на відміну від коробкових рішень. Продуктивність Spree в середньому на 40% вища типових CMS (вимірюється за Core Web Vitals). До того ж, ліцензія open source — ви не платите щомісячних відрахувань. Інтеграція локальних платіжних систем через геми простіша, ніж у Magento або OpenCart.
| Критерій | Spree | Готова CMS |
|---|---|---|
| Гнучкість | Повний контроль через код | Обмежена шаблонами |
| Продуктивність | Висока (Core Web Vitals) | Середня |
| Ліцензія | Open Source (безкоштовно) | Щомісячна плата |
| Російські інтеграції | Через геми | Часто вбудовані |
Як оптимізувати Spree для російського ринку?
Для російського e-commerce важливо підключити локальні платіжні шлюзи. Spree підтримує Сбербанк, ЮKassa, Тинькофф через гем spree_gateway. Аналогічно налаштовується доставка СДЕК або Пошти Росії через відповідні розширення. Не забудьте додати російські стоки (довідник країн, податкові ставки).
Що входить у нашу роботу
- Аналіз вимог та підготовка ТЗ.
- Встановлення та налаштування сервера (Docker, Nginx, PostgreSQL, Redis).
- Встановлення Spree, генерація, міграції, seeds.
- Конфігурація мультивалютності, податків, доставки.
- Інтеграція платіжних шлюзів і служб доставки.
- Написання кастомних модулів (за потреби).
- Деплой на production та моніторинг.
- Документація та навчання команди клієнта.
| Етап | Тривалість |
|---|---|
| Аналіз вимог | 1 день |
| Встановлення та налаштування оточення | 1–2 дні |
| Інтеграції | 1–2 дні |
| Деплой | 1 день |
Вартість розраховується індивідуально залежно від складності інтеграцій. Економія на ліцензіях порівняно з комерційними CMS значна — ви не платите щомісячних відрахувань.
Чек-лист: чого не можна забувати
- Перевірити версії Ruby та Rails згідно з документацією.
- Запустити seeds — без країн і зон магазин не працює.
- Налаштувати CORS для headless режиму за допомогою
rack-cors. - Налаштувати ActiveStorage для завантаження зображень.
- Увімкнути оптимізацію зображень через
image_processing. - Налаштувати фонові завдання Sidekiq з Redis.
Типові помилки та як їх уникнути
- Ігнорування версій Ruby/Rails — використовуйте точно вказані в Gemfile.
- Пропуск seeds — без країн і зон магазин не працює.
- Відсутність CORS для headless — налаштуйте
rack-cors. - Не налаштований ActiveStorage — фотографії товарів не завантажуються.
Зв'яжіться з нами для консультації щодо вашого проекту. Замовте встановлення Spree під ключ — ми гарантуємо результат.
Додаткові ресурси:
- Spree (software) на Wikipedia
- Вихідний код Spree на GitHub







