【问题标题】:Can a list of strings be supplied to Capistrano tasks?可以将字符串列表提供给 Capistrano 任务吗?
【发布时间】:2011-08-18 00:26:03
【问题描述】:

我有一个任务,它在“运行”中的命令是相同的,除了一个值。该值将不在潜在值列表中。我想做的是创建一个任务,该任务将使用此值列表来定义任务,然后在“运行”中定义的命令中使用相同的值。关键是,如果我不必为每个值重复几乎相同的任务定义,那么定义任务会很棒。

例如:我想要一个任务,该任务将从我在数组中定义的程序列表中获取单个程序的状态。我想将任务定义为:

set programs = %w["postfix", "nginx", "pgpool"]
programs.each do |program|
  desc "#{program} status"
  task :#{program} do
    run "/etc/init.d/#{program} status"
  end
end

这显然行不通,但希望它显示了我在这里尝试的内容。

想法?

【问题讨论】:

    标签: capistrano task


    【解决方案1】:

    嗯,我回答了我自己的问题……经过一些反复试验。我也对命名空间做了同样的事情,所以服务的控制很好而且很优雅。效果很好!

    set :programs, %w[postfix nginx pgpool]
    set :init_commands, %w[status start stop]
    
    # init.d service control
    init_commands.each do |init_command|
      namespace :"#{init_command}" do
        programs.each do |program|
          desc "#{program} #{init_command}"
          task :"#{program}" do
            run "/etc/init.d/#{program} #{init_command}"
          end
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多