リリースパスにアクセスする場所によって異なります。リソース、つまりコールバックの「内部」は、iikeを使用して簡単に実行できます
deploy "/home/prj" do
before_migrate do
gemfile = File.read("#{release_path}/Gemfile")
end
end
リソースの外部では、release_path変数を使用できません。ただしcurrent
、現在デプロイされているバージョン、つまり最後のリリースを指すシンボリックリンクを使用できます。
current_path = "home/prj/current"
release_path = File.readlink(current_path)
current_path
ほとんどの場合、シンボリックリンクターゲットの解決に頼ることなく、直接物事に取り組むことができます。
とは言うものの、通常、実際にそこで直接何かをしたくはありません。代わりに、共有ディレクトリ(つまり/home/prk/shared
)に追加のファイルを生成し、デプロイ中にchefにそれらのファイルをリリースにシンボリックリンクさせることをお勧めします。それがまさにそのsymlink_before_migrate
目的です。そうすれば、実際にリリースパスを自分で知る必要はありませんが、シェフにそれを処理させることができます。