Capistrano:在远程部署后有条件地运行命令

时间:2010-11-26 11:51:47

标签: capistrano deployment

我想在部署完成后删除遥控器上的一些文件夹。我目前正在使用

task :set_permissions do

  parallel do |session|
    session.when "in?(:xb_test)", "cat #{deploy_to}test.htaccess >> #{current_path}/.htaccess"
  end

真的有两个问题,这是最好的方法吗?如何在多个函数上运行这种语句而不必编写重复代码?

session.when "in?(:xb_test)" ...
session.when "in?(:xb_dev)" ...
session.when "in?(:xb_live)" ...

任何帮助都会受到赞赏,因为我对Capistrano很新。

1 个答案:

答案 0 :(得分:1)

  • 关于你的第一个问题,“这是最好的方法吗?” :

    我不认为这是最好的方法。 “测试”“开发”和“活”呃...看起来你正在部署到不同的阶段,那么我最好使用https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension

  • 关于你的第二个问题,“如何在不必编写重复代码的情况下对多个函数运行这种语句?”:

    capistrano deploy.rb只是一个ruby文件,你可以使用一种方法

    def htaccess_stuff
      "cat #{deploy_to}test.htaccess >> #{current_path}/.htaccess"
    end

然后

task :set_permissions do

  parallel do |session|
    session.when "in?(:xb_test)", htaccess_stuff
  end