2

私は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が更新されたら、自分のタスクを呼び出すことができるようにしたいと考えています。

4

1 に答える 1