Mina部署:一旦`current`符号链接更新,就调用任务

时间:2013-11-07 12:42:55

标签: ruby deployment web-deployment mina

我正在使用Mina (Capistrano的一个更简单的替代方案)来部署我的ruby网站,我试图在current符号链接后运行一些任务更新。

到目前为止,这是我在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 

我的问题是,当Mina点击to :launch块时,current符号链接尚未更新,因此它不存在(如果它是此项目的第一个部署)或者它是仍然指向n-1版本(因此,服务器使用过时的项目版本)。

所以我希望能够在新版本移动到发布目录并且当前:restart已更新后调用我的symlink任务。

1 个答案:

答案 0 :(得分:0)

我认为这是Mina的一个错误。在in_directory上下文中使用时,to似乎无法正常工作。一个快速而肮脏的解决方法是在@commands[:default] = commands(@to)块的末尾添加in_directory

desc "Manually restart Thin web server"
task :restart do
  in_directory "#{deploy_to}/current" do
    queue! %[bundle exec thin restart -C "#{thin_yml}"]
    @commands[:default] = commands(@to)
  end
end