web-dev-qa-db-ja.com

capistrano3でカスタム変数を設定します

私はphpプロジェクトでcapistrano2を使用していました。そこでは、次のようなカスタム変数を定義していました。

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に精通していないため、それを適切に行う方法がわかりません。

19
Anton Sergeyev

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

_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()の構成を尊重したりしないように注意してください。

28
Lee Hambley

これは現在、「フェッチ」を介して実現されています。

fetch(:app_environment)
16
D1kz