Запускаем локально Ruby on Rails приложение в production mode.

Процесс запуска Ruby on Rails приложения в production mode на локальной машине будет отличаться в зависимости от конфигурации приложения.

В общих чертах - нужно создать все условия, которые у вас на production-сервере.

1. Убедитесь, что в database.yml присутствует production. Нужно чтобы он выглядел также, как и development. Отличаться должно лишь название базы данных. 

2. Создайте базу данных 'appname_production' (используйте имя из database.yml).

Создание базы данных в POSTGRES вручную:
psql
CREATE DATABASE appname_production;
\q
Можно создать базу при помощи rake:
RAILS_ENV=production rake db:create
Можно сразу запустить и другие rake-задачи:
RAILS_ENV=production rake db:create db:migrate db:seed
3. При запуске rake-задачи возможно мы получим некоторые ошибки связанные с определенными конфигурациями production-среды. В большинстве случаев это будет ошибка чтения определенных ENV-значений. В моем случае carrierwave в production-режиме подключается к aws, а локально у меня не установлены ENV'ы.

Можно их добавить в bash_profile и использовать AWS сервер, например staging (не рекомендую использовать production). Либо же переключиться в development режим и использовать локальное хранилище (для этого нужно поправить ваш код в carrierwave.rb).

Этот шаг подразумевает, что в зависимости от конфигураций вашего приложения - может всплыть несколько проблем, которые решаются либо добавлением ENV'ов, либо обновлением кода (переключением на кусок кода предназначенным для использования локально).

4. Если приложение использует систему авторизации devise, мы получим ошибку запуска rake-задачи:
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:

config.secret_key = 'blalba……'

Тут все понятно - добавляем значение config.secret_key = 'blalba……' в initializers/devise.rb и запускаем rake-задачу заново.

После этого Ruby on Rails приложение будет запускаться в production-режиме при условии запуска команд с RAILS_ENV=production.

Например:
RAILS_ENV=production rails s
При работе с production ENV'ами будьте внимательны, чтобы никаким образом не повлиять на работу вашего боевого приложения.
Наверх