Установка пользовательской переменной в capistrano 3
Я использовал capistrano 2 с моим проектом php, где я использовал для определения пользовательских переменных:
set :app_environment, "test"
И затем я обратился к нему в моих задачах развертывания, например:
run "echo '#{app_environment}' > #{releases_path}/#{release_name}/protected/config/mode.php"
Теперь в capistrano 3 я определяю эту переменную в своих конфигурационных файлах, специфичных для сцены. Но я не определил их в своих задачах:
undefined local variable or method `app_environment' for #<SSHKit::Backend::Netssh:0x007f92323d6988> config/deploy.rb:28:in `block (3 levels) in <top (required)>'
К сожалению, в новейшей версии capistrano нет много документации, и я не совсем знаком с ruby, поэтому я не вижу, как правильно это сделать.
Ответы
Ответ 1
Код следует читать:
run "echo '#{fetch(:app_environment)}' > #{releases_path}/#{fetch(:release_name)}/protected/config/mode.php"
Хотя даже это неверно, поскольку run()
не существует в Cap3, теперь он execute()
, поэтому:
execute "echo '#{fetch(:app_environment)}' > #{releases_path}/#{fetch(:release_name)}/protected/config/mode.php"
Опасайтесь, строя свою команду, как будто ничего не будет использовать карта команд, или соблюдайте конструкции within()
, as()
или with()
.
Ответ 2
Теперь это достигается с помощью 'fetch':
fetch(:app_environment)