Разворачиваем Spree Commerce на Heroku

Эта статья продолжит наш цикл коротких технических статей о Spree Commerce, в ней мы попробуем развернуть магазин на Heroku. Кратко о Heroku — это облачная PaaS-платформа, поддерживающая ряд языков программирования. Компанией Heroku владеет Salesforce. Heroku, одна из первых облачных платформ, появилась в июне 2007 года и изначально поддерживала только язык программирования Ruby, но на данный момент список поддерживаемых языков также включает в себя Java, Node.js, Scala, Clojure, Python и PHP (неофициально). На серверах Heroku используются операционные системы Debian или Ubuntu (которая также основана на Debian).

Первое, что вы должны выполнить — это указать версию ruby в Gemfile:
ruby ‘2.2.0’

Не закрываем Gemfile, добавляем туда строку:
gem ‘rails_12factor’, group: :production

По умолчанию, при развертывании на Heroku, Rails пытается инициализировать себя, прежде чем асеты будут прекомпелированы. Вполне ожидаемо получаем ошибку, потому что приложение пытается установить соединение с базой данных, которая еще даже не установлена/подготовлена на Heroku. Что бы обойти эту проблему нужно отредактиривать файл config/application.rb последней строкой в секции config.assets прописать следующее:
config.assets.initialize_on_precompile = false

Асеты по прежнему прекомпелированы, но при этом Rails уже не будет пытаться себя инициализировать в процессе.
Настраиваем в Spree загрузку изображений на Amazon S3, добавляем строки представленные ниже в файл config/initializers/spree.rb:
[gist id=»399b5c474aa9fafc98c2″]

Теперь мы должны указать как должен строится урл к изображениям, для этого нужно добавить ниже представленный код вне блока +config+ в файле config/initializers/spree.rb:
[gist id=»fb9c7953500425b8659d»]

Все подготовительные манипуляции выполнены, пушим на Heroku.
Запускаем терминал, выполняем команды
$ cd myapp
$ git init

Инициализируем пустой репозиторий Git в .git/
$ git add .
$ git commit -m «my first commit»

Был выполнен первый комит
5df2d09: my first commit
44 files changed, 8393 insertions(+), 0 deletions(-)
create mode 100644 README
create mode 100644 Procfile
create mode 100644 app/controllers/source_file

Запускаем команду, создаем Heroku приложение:
$ heroku create
Creating falling-wind-1624… done, stack is cedar
http://falling-wind-1624.herokuapp.com/ | git@heroku.com:falling-wind-1624.git
Git remote heroku added

Продолжаем колдовать с Git, связываем наш локальный репозиторий с репозиторием Heroku:
$ git remote -v
heroku     git@heroku.com:falling-wind-1624.git (fetch)
heroku     git@heroku.com:falling-wind-1624.git (push)

Деплоим на  Heroku, выполняя команду:
$ git push heroku master
Initializing repository, done.
updating ‘refs/heads/master’

Как правило при деплое получаем ошибку ключей:
Permission denied (publickey).You can fix this by using keys:add to notify Heroku of your new key.

Для устранения ошибки добавляем ключи:
$ heroku keys:add
Found existing public key: /Users/adam/.ssh/id_rsa.pub
Uploading SSH public key /Users/adam/.ssh/id_rsa.pub… done

Как видите процедура разворачивания Spree на Heroku достаточно проста, как и все что связано с Spree. Оставайтесь с нами, мы будем продолжать наш цикл коротких технических статей о Spree с конкретными, практическими примерами.

Команда JetRuby Agency — разрабатываем интернет магазины под ключ, на базе платформы 1R Commerce.

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

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