Как вы получаете доступ к rails_env из команды развертывания Cap?

В deploy.rb, я считаю, что :rails_env обычно устанавливается require 'capistrano/rails', найденным в вашем Capfile. Я использую рельсы, но не использую встроенный конвейер активов и, следовательно, не использую capistrano/rails и затрудняюсь вручную установить :rails_env в deploy.rb при переходе между промежуточными и производственными развертываниями. Это казалось довольно глупым, поскольку среда всегда включалась при выполнении cap staging deploy или cap production deploy. Я отправляю этот вопрос, поскольку кажется, что это может быть довольно распространенная точка боли с тривиальным решением, но после долгих поисковых запросов я пришел с пустыми руками. Поэтому я выкопал исходный код Capistrano 3.1.0, чтобы выяснить, как получить доступ к переменной этапа, введенной в командной строке, и последует за кратким ответом, который немного разъясняет.

Ответ 1

Простым ответом является добавление следующей строки вверху deploy.rb:

set: rails_env, fetch (: stage)

Переменная :stage устанавливается в capistrano/setup, которая требуется в вашем Capfile. Этот script создает задачи рейка для каждого этапа, который определен в config/deploy. Внутри определения для задачи рейка вы найдете следующее: set(:stage, stage.to_sym), который является переменной stage/rails_env из вашей команды cap staging deploy или cap production deploy.