Ви вирішили запустити інтернет-магазин на 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







