【问题标题】:Calling a Capistrano task with argument from other task使用来自其他任务的参数调用 Capistrano 任务
【发布时间】:2014-04-25 06:07:19
【问题描述】:

我有一个更新文件的 Capistrano 2 任务

task :update_file, roles: :app do
 ...
end

现在我需要编写一个任务,对文件夹中的所有文件执行一些操作,所以在update_folder 中我想调用update_file 将要更新的文件的名称传递给它,但我有很难做到。

如何设置 Capistrano 任务以接受参数并从其他任务中调用它?

谢谢

【问题讨论】:

    标签: capistrano


    【解决方案1】:

    你可以这样做:

    $gkey=""
    $gvalue=""
    
    
    desc "generate config files"
    task :gen_conf_files do
         $servers.each do |key,value|
          $MYSQL["mysql"]["passwd"]="#{key.to_s}++"
          $gkey=key.to_s
          $gvalue=value.to_s
          $NODE_NAME="#{key.to_s}"
          $NODE_NUM=key.to_s[9,10]
    
    
    
          gen_mfs_conf
          gen_cfs_conf
          gen_client_conf
          gen_config_shell
          gen_cdn_reacheyes_net
          gen_click_reacheyes_net
          gen_log_reacheyes_net
          gen_fluent_conf
          gen_nagios_conf
    
    
         end
    
        end
    
    desc "genrate fluent config file"
    task :gen_fluent_conf do
            file = "#{generate_conf_dir}/#{$gvalue}/fluent.conf"
            filename ="#{config_file_path}/fluent.conf.sample"
            erb = ERB.new(File.read(filename))
            erb.filename = filename
            File = File.new("#{file}", "w")
            File.puts erb.result
    
    
        end
    

    首先定义一个全局变量 $gvalue=""

    那么你可以在不同的任务之间使用这个变量

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 2019-02-20
      相关资源
      最近更新 更多