我在我的php项目中使用了capistrano 2,在那里我用来定义这样的自定义变量:
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不太熟悉,所以我没有看到如何正确地做到这一点。
答案 0 :(得分:28)
代码应为:
run "echo '#{fetch(:app_environment)}' > #{releases_path}/#{fetch(:release_name)}/protected/config/mode.php"
虽然即使这是不正确的,因为Cap3中不存在run()
,但它现在是execute()
,所以:
execute "echo '#{fetch(:app_environment)}' > #{releases_path}/#{fetch(:release_name)}/protected/config/mode.php"
注意构建您的命令,这样就不会使用命令映射,也不会尊重within()
,as()
或with()
构造。
答案 1 :(得分:16)
现在通过'fetch'实现:
fetch(:app_environment)