代码之家  ›  专栏  ›  技术社区  ›  igniteflow

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

  •  1
  • igniteflow  · 技术社区  · 14 年前

    一旦部署完成,我想删除远程上的一些文件夹。我正在使用

    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)" ...
    

    我对卡皮斯特拉诺还不太熟悉,如果有任何帮助,我将不胜感激

    1 回复  |  直到 14 年前
        1
  •  1
  •   David    14 年前
    • 关于你的第一个问题,“这是最好的方法吗?”:

      我不认为这是最好的方法。 “测试”“开发”和“现场”嗯。。。看起来你要部署到不同的阶段,那么我最好使用 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