在capistrano 3中设置自定义变量

时间:2013-11-06 10:09:32

标签: capistrano

我在我的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不太熟悉,所以我没有看到如何正确地做到这一点。

2 个答案:

答案 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)