Как вы получаете доступ к rails_env из команды Cap deploy?
-
21-12-2019 - |
Вопрос
В deploy.rb
, Я верю, что :rails_env
обычно устанавливается с помощью require 'capistrano/rails'
найденный в вашем Capfile
.Я использую rails, но не использую встроенный конвейер активов и, следовательно, не использую capistrano/rails и оказался в затруднительном положении из-за необходимости вручную устанавливать :rails_env
в deploy.rb
при переключении между промежуточным и производственным развертываниями.Это казалось довольно глупым, поскольку среда всегда включается при выполнении cap staging deploy
или cap production deploy
.Я публикую этот вопрос, поскольку кажется, что это может быть довольно распространенная болевая точка с тривиальным решением, но после долгих поисков в Google я пришел с пустыми руками.Поэтому я углубился в Capistrano 3.1.0
исходный код, чтобы выяснить, как получить доступ к переменной stage, введенной в командной строке, и последует краткий ответ, который немного объясняет.
Решение
Простой ответ заключается в том, чтобы добавить следующую строку в верхней части deploy.rb
:
установить :rails_env, fetch(:stage)
Переменная :stage
устанавливается в capistrano/setup
который требуется в вашем Capfile
.Этот скрипт создает задачи rake для каждого этапа, определенного в config/deploy
.Внутри определения задачи rake вы найдете следующее: set(:stage, stage.to_sym)
которая является переменной stage/rails_env из вашего cap staging deploy
или cap production deploy
команда.