Установка и настройка Spree Commerce (Ruby on Rails)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Установка и настройка Spree Commerce (Ruby on Rails)
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Установка и настройка Spree Commerce (Ruby on Rails)

Spree устанавливается в существующее или новое Rails-приложение как Engine. Процесс стандартный, но требует внимания к версиям: Spree 4.x работает на Rails 7.0/7.1, Spree 5.x (beta) — на Rails 7.2+. Ошибки совместимости Gemfile — типичная проблема при установке.

Системные требования

  • Ruby 3.1+ (рекомендуется 3.2 LTS)
  • Rails 7.0/7.1
  • PostgreSQL 13+ (рекомендуется; SQLite только для разработки)
  • Redis 6+ (Sidekiq, кэш)
  • Node.js 18+ (для Sprockets/importmap или Webpacker legacy)
  • ImageMagick или libvips (обработка изображений через ActiveStorage)

Создание нового Rails-приложения

gem install rails -v "~> 7.1"
rails new my_shop \
  --database=postgresql \
  --skip-test \
  --skip-action-cable \
  -T

cd my_shop

Gemfile

# Gemfile
source "https://rubygems.org"
ruby "3.2.0"

gem "rails", "~> 7.1.0"
gem "pg", "~> 1.1"
gem "puma", ">= 5.0"

# Spree core
gem "spree", "~> 4.10"
gem "spree_auth_devise", "~> 4.6"
gem "spree_backend", "~> 4.10"   # Admin UI

# Payment gateways
gem "spree_gateway", "~> 3.10"

# Backgrounds
gem "sidekiq", "~> 7.0"
gem "redis", "~> 5.0"

# Assets
gem "sprockets-rails"
gem "sassc-rails"
gem "uglifier"

# Prod
gem "bootsnap", require: false
gem "image_processing", "~> 1.2"

group :development, :test do
  gem "debug"
  gem "factory_bot_rails"
  gem "rspec-rails"
end
bundle install

Генераторы Spree

# Установить Spree Core
bin/rails g spree:install --user_class=Spree::User

# Установить аутентификацию
bin/rails g spree:auth:install

# Установить Admin UI
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)
  • API доступен на /api/v2/storefront

Конфигурация Store

# 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

# db/seeds.rb — или rake задача при первом деплое
store = Spree::Store.create_with(
  name: "My Shop",
  mail_from_address: "[email protected]",
  default_currency: "RUB",
  supported_currencies: "RUB",
  default_locale: "ru",
  supported_locales: "ru,en",
  checkout_zone_id: Spree::Zone.find_by(name: "Russia")&.id,
  seo_title: "My Shop — интернет-магазин",
  meta_description: "Описание магазина",
).find_or_create_by!(url: "myshop.ru")

Настройка зон и доставки

# Зона Россия
russia_country = Spree::Country.find_by!(iso: "RU")
ru_zone = Spree::Zone.create!(name: "Russia", kind: "country")
ru_zone.members.create!(zoneable: russia_country)

# Зона для налогов
tax_category = Spree::TaxCategory.create!(name: "НДС 20%", is_default: true)
tax_rate = Spree::TaxRate.create!(
  name: "НДС",
  amount: 0.20,
  included_in_price: false,
  zone: ru_zone,
  tax_category: tax_category,
  calculator: Spree::Calculator::DefaultTax.new
)

# Метод доставки
shipping_category = Spree::ShippingCategory.create!(name: "Default")
shipping_method = Spree::ShippingMethod.create!(
  name: "Курьером по Москве",
  admin_name: "courier_moscow",
  tracking_url: "https://track.example.com/:tracking"
)
shipping_method.zones << ru_zone
shipping_method.shipping_categories << shipping_category
shipping_method.calculator = Spree::Calculator::Shipping::FlatRate.create!(
  preferred_amount: 300,
  preferred_currency: "RUB"
)

Настройка Sidekiq и Redis

# config/sidekiq.yml
:concurrency: 5
:queues:
  - [critical, 3]
  - [default, 2]
  - [mailers, 1]
  - [low, 1]
# config/application.rb
config.active_job.queue_adapter = :sidekiq
# config/initializers/redis.rb
Redis.current = Redis.new(url: ENV.fetch("REDIS_URL", "redis://localhost:6379/0"))

Docker Compose для разработки

# docker-compose.yml
version: "3.9"
services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: spree
      POSTGRES_PASSWORD: spree_dev
      POSTGRES_DB: my_shop_development
    ports: ["5432:5432"]
    volumes: [pgdata:/var/lib/postgresql/data]

  redis:
    image: redis:7-alpine
    ports: ["6379:6379"]

  web:
    build: .
    command: bin/rails server -b 0.0.0.0
    volumes: [.:/app]
    ports: ["3000:3000"]
    depends_on: [postgres, redis]
    environment:
      DATABASE_URL: postgres://spree:spree_dev@postgres/my_shop_development
      REDIS_URL: redis://redis:6379/0

  sidekiq:
    build: .
    command: bundle exec sidekiq
    volumes: [.:/app]
    depends_on: [postgres, redis]
    environment:
      DATABASE_URL: postgres://spree:spree_dev@postgres/my_shop_development
      REDIS_URL: redis://redis:6379/0

volumes:
  pgdata:

API v2: включение и конфигурация

API v2 включается автоматически при наличии spree_api в Gemfile (входит в spree):

# config/initializers/cors.rb (для headless)
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins ENV.fetch("ALLOWED_ORIGINS", "http://localhost:3001").split(",")
    resource "/api/*",
      headers: :any,
      methods: [:get, :post, :patch, :put, :delete, :options],
      credentials: true,
      expose: ["X-Spree-Token"]
  end
end

Checklist после установки

  • БД создана, миграции применены
  • Seeds запущены (страны, зоны, роли)
  • Admin UI доступен, пароль изменён
  • Store настроен (URL, валюта, локаль)
  • Shipping zones и методы созданы
  • Tax rates настроены
  • Payment methods активированы в Admin UI
  • Sidekiq запущен
  • ActiveStorage настроен (S3 или локальная папка)
  • CORS настроен (для headless режима)

Полная установка и первичная настройка занимает 1–2 дня при наличии готовой инфраструктуры.