Быстрый старт с Spree Commerce

В очередной раз вспомним, что Spree это ecommerce фреймворк для Ruby on Rails. Все чаще и чаще Spree становится решением к которому приходят, попробовав дорогие решения, основанные на Magento или Shopify. Приходят по простой причине — Spree позволяет реализовать их задумки быстрее и проще, чем конкуренты. В данной статье рассмотрим быстрый старт с точки зрения развертывания приложения, т.е. исключительно технические аспекты.

Для начала установим Spree, выполнив команду:
$ gem install spree

Несложно, однако, двигаемся дальше и создаем новый rails проект:
$ bundle exec rails new spree_app
далее попробуйте выполнить следующую команду:
$ bundle exec spree install spree_app
Или такую, если вы уже находитесь в директории созданного rails проекта spree_app:
$ bundle exec spree install
В результате запуска вышеописанных команд, вы получите в консоли некоторое количество вопросов от инсталятора, отвечаем на них следующим образом:
Would you like to install the default gateways? (Recommended) (yes/no) [yes]
Spree добавит свои стандартные платежные шлюзы для обработки онлайн платежей. Для стран СНГ следует выбирать ответ No, т.к. те платежные шлюзы, которые предоставляются по умолчанию для стран СНГ неактуальны.

Would you like to install the default authentication system? (yes/no) [yes]
Согласие на использование встроенной системы аутентификации на основе gem ‘devise’.

Would you like to run the migrations? (yes/no) [yes]
Предложение тут же запустить миграции для базы данных.

Would you like to load the seed data? (yes/no) [yes]
Создаст базовый перечень данных для магазина.

Would you like to load the sample data? (yes/no) [yes]
Загрузит стандартные продукты и их атрибуты в базу данных.

На практике стоит использовать ключ -А в команде spree install для автоматического подтверждения параметров, будут установлены все параметры по умолчанию.

Spree установлен, инсталлятор не задает нам больше вопросов, пришло время создать пользователя с правами администратора  (Admin user):
Create the admin user (press enter for defaults).
Email [spree@example.com]:
Password [spree123]:
Оставляйте все опции по умолчанию, в таком случае будут использованы значения в квадратных скобках.

В процессе инсталляции вы можете получить такое сообщение:
[WARNING] You are not setting Devise.secret_key within your application!
You must set this in config/initializers/devise.rb. Here’s an example:
Devise.secret_key =»a0c5e56c8764a93b03fce02083f4aed18aef63ef4d7be33f351accb002d4e2187ac6ba4a78090c341281f51a6abebd4fe499″
Сейчас постараемся рассказать вам как решить эту проблему. Если вы откроете свой Gemfile, то там вы увидите примерно следующее:
source ‘https://rubygems.org’

gem ‘rails’, ‘4.0.5’
gem ‘sqlite3’

gem ‘sass-rails’, ‘~> 4.0.2’
gem ‘uglifier’, ‘>= 1.3.0’
gem ‘coffee-rails’, ‘~> 4.0.0’

gem ‘jquery-rails’
gem ‘turbolinks’
gem ‘jbuilder’, ‘~> 1.2’

group :doc do
gem ‘sdoc’, require: false
end

gem ‘spree’, ‘2.2.2’
gem ‘spree_gateway’, github: ‘spree/spree_gateway’, branch: ‘2-4-stable’
gem ‘spree_auth_devise’, github: ‘spree/spree_auth_devise’, branch: ‘2-4-stable’

Обратите внимание на три последних гема. Spree является нашей с вами целью инсталляции, два других spree_gateway и spree_auth_devise нужны соответственно для поддержки платежных операций и авторизации пользователей. Гем spree_auth_devise при инсталляции не создает свои файлы конфигурации, поэтому нам следует добавить их отдельно при помощи следующей команды:
$ bundle exec rails g spree:auth:install

Результатом будет создание файла devise.rb:
create  config/initializers/devise.rb

В качестве альтернативного варианта, вы можете создать инициализатор самостоятельно, скопировать и вставить в файл секретный ключ устройства. Для генерации секретного ключа нужно будет выполнить такую rake команду:
$ bundle exec rake secret 9ba50700679fc17712ce1a1538bb9dd05c31038e12d1155cb8d437a9dd69a0a2fc8b7f9425f254c77d5bfa0587c9e50df0931f3803d947eb5fe13c7d1b6cec00

Все готово, ошибок нет, можем запускать приложение:
$ bundle exec rails s

Если вы в браузере откроете урл localhost:3000, вы увидите базовый (коробочный) вариант Spree. Отлично! Но скорее всего вам не понравится как выглядит дизайн базовой версии, давайте добавим немного bootstrap! В Gemfile, допишем:
gem ‘spree_bootstrap_frontend’, github: ‘200Creative/spree_bootstrap_frontend’, branch: ‘2-4-stable’

Для установки выполняем bundle и запускам генератор:
$ bundle install
$ bundle exec rails generate spree_bootstrap_frontend:install

В процессе выполнения команды вам будет задан вопрос “Would like to overwrite one of your assets?”, ответить следует Y (yes).

Если все прошло успешно, как результат вы увидите более приемлемый внешний вид вашего магазина, кроме того верстка адаптивна и приемлемо будет выглядеть на разных устройствах. Теперь вы можете модифицировать тему оформления как вашей душе угодно, благо что bootstrap позволяет это делать быстро и удобно.

Как видите все достаточно просто при работе с Spree и это всего лишь вводная, больше информации вы всегда сможете найти на страницах официальной документации к Spree Commerce. Стоит отметить, что документация очень качественная и описывает практически любые ситуации, с которыми вы можете столкнуться в процессе доработки Spree под свои нужды.

Команда JetRuby Agency

Быстрый старт с Spree Commerce: 2 комментария

  1. Вот подробно что происходит после установки недостающих джемов:
    «Bundler could not find compatible versions for gem «sprockets-rails»:
    In snapshot (Gemfile.lock):
    sprockets-rails (= 3.0.4)

    In Gemfile:
    rails (= 4.2.6) was resolved to 4.2.6, which depends on
    sprockets-rails

    sass-rails (~> 5.0) was resolved to 5.0.4, which depends on
    sprockets-rails (= 2.0)

    sass-rails (~> 5.0) was resolved to 5.0.4, which depends on
    sprockets-rails (= 2.0)

    spree (~> 3.0.7) was resolved to 3.0.7, which depends on
    spree_core (= 3.0.7) was resolved to 3.0.7, which depends on
    sprockets-rails (~> 2.0)

    Running `bundle update` will rebuild your snapshot from scratch, using only
    the gems in your Gemfile, which may resolve the conflict.
    »
    Бандл апдейт не помог

  2. Проблема решена:
    1) Обновил и перезапустил RVM
    2) bundle update
    3) bundle install
    4) spree install
    p.s. OS Debian Jessie (8.3), ruby 2.2.4, rails 4.2.6
    Может кому пригодится

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *