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

StackOverflow https://stackoverflow.com//questions/23019503

  •  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 команда.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top