特に障害が発生した場合、before_symlink がいつどのように実行されるかを理解しようとしています。このブロックを見てください:
deploy_revision "foo" do
action :deploy
deploy_to "/opt/foo"
...
symlink_before_migrate(app_symlinks.merge({
... }))
purge_before_symlink([])
create_dirs_before_symlink([])
symlinks({})
before_symlink do
current_release = release_path
bash "foo_buildout_install" do
user "foo"
cwd current_release
code <<-EOH
...
EOH
end
end
restart_command do
current_release = release_path
bash "foo_foreman_install_and_restart" do
restart foo || start foo
EOH
end
end
end
before_symlink ブロックはどのような条件下で実行されますか? たとえば、ビルドが失敗した場合、chef は再プロビジョニングされます - 再度実行されますか? シンボリックリンクが作成された場合、再度呼び出されることはありますか?
(私はまだ Chef を学んでおり、Ruby 開発は行っていません。そのため、deploy_revision の仕組みや Rails デプロイ モデルについて何も理解していると思い込まないでください。)