Capistrano - развертывание Rails-приложения для Staging - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть приложение Rails в рабочей среде, и я хочу развернуть свое приложение в Staging с использованием Capistrano до того, как перейти к производству, поэтому моя команда сделала копию приложения на другом хосте, который должен действовать как Staging.У меня есть 2 отдельные настройки среды Capistrano, одна для производства, другая для постановки.На самом деле они различаются по IP-адресу сервера, остальное - та же стандартная настройка.

Я также добавил config/evironments/staging.rb файл, который очень похож на config.environments/production.rb с единственным отличием в

config.action_controller.asset_host

, потому что в Staging мне нужно загрузить ресурсы с промежуточного хоста.

config / environment / production.rb

config.action_controller.asset_host = "my_production_host"

config / environment / staging.rb

config.action_controller.asset_host = "my_staging_host"

но после того, как я выполню bundle exec cap staging deploy и осмотрю консоль браузера, я вижу ошибку 404 Failed to load resource, которая по какой-то причине указывает на ресурсы рабочего узла.404 Failed to load resource

<link rel="stylesheet" media="all" href="https://my_prduction_host/assets/application-7d22d41de3a16146e566368364a8b2c769a9ebd68d1333e71d624250fa2fd187.css" />

, поэтому кажется, что он не читает мои config/environments/staging.rb.

config / deploy / staging.rb

server "1.2.3.4", user: "my_user", roles: %w{app db web}, port: 50022

set :stage, :staging
set :rails_env, :staging

Показывает журналы Capistrano current release: current (production)

config/environments/staging.rb добавлено в репозиторий, так почему же он не читает мою промежуточную конфигурацию?Что мне не хватает?Есть идеи, почему оно запускает приложение в рабочем режиме?

ОБНОВЛЕНИЕ

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Вы должны добавить переменную окружения RAILS_ENV на сервер подготовки.Для получения дополнительной информации см. Здесь: https://askubuntu.com/a/58828/369247

Чтобы установить переменную только для текущей оболочки: VARNAME = "my value" Чтобы установить ее для текущей оболочки и всех процессов, запущенных из текущей оболочки: export VARNAME = "my value "# короче, менее переносимая версия Чтобы установить ее навсегда для всех будущих сеансов bash, добавьте такую ​​строку в файл .bashrc в каталоге $ HOME.

0 голосов
/ 26 ноября 2018

Я понял это.Мне пришлось добавить rails_env staging; к /etc/nginx/sites-available/my_site и перезапустить Nginx.

0 голосов
/ 25 ноября 2018

Capistrano не устанавливает RAILS_ENV, вам, вероятно, необходимо настроить его на уровне сервера приложений, например:

 root /home/www/public/app-name/current/public;
 passenger_ruby /home/app-name/.rbenv/shims/ruby;
 passenger_app_env staging;
 passenger_enabled on;

(здесь приведена конфигурация Passenger + nginx, но аналогичные настройки будут существовать длядругие приложения)

Здесь passenger_app_env указывает Пассажиру загружать приложение при использовании промежуточной среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...