19

私は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 に詳しくないため、適切に行う方法がわかりません。

4

2 に答える 2

28

コードは次のようになります。

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()構造を尊重したりしないことに注意してください。

于 2013-11-06T10:45:30.927 に答える
18

これは、'fetch' を介して実現されるようになりました。

fetch(:app_environment)
于 2013-11-06T10:45:37.040 に答える