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