私はMina (Capistrano のより単純な代替手段)current
を使用して Ruby Web サイトをデプロイしています。シンボリックリンクが更新されたら、いくつかのタスクを実行しようとしています。
これまでのところ、 deploy.rb ファイルにあるものは次のとおりです。
desc "Deploys the current version to the server."
task :deploy => :environment do
deploy do
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
to :launch do
invoke :restart
end
end
end
desc "Manually restart Thin web server"
task :restart do
in_directory "#{deploy_to}/current" do
queue! %[bundle exec thin restart -C "#{thin_yml}"]
end
end
to :launch
私の問題は、Mina がブロックにヒットしたとき、current
シンボリック リンクがまだ更新されていないため、シンボリック リンクが存在しない (このプロジェクトの最初の展開である場合) か、まだ n-1 リリースを指している (したがって、サーバーは古いバージョンのプロジェクトを使用しています)。
:restart
そのため、新しいリリースがリリース ディレクトリに移動され、現在のリリースsymlink
が更新されたら、自分のタスクを呼び出すことができるようにしたいと考えています。