我需要在多个数据库中插入一个值.

我想通过命令行或another rake任务将这个值传递到rake任务中.

我该怎么做?

推荐答案

选项和依赖项需要位于数组内部:

namespace :thing do
  desc "it does a thing"
  task :work, [:option, :foo, :bar] do |task, args|
    puts "work", args
  end
  
  task :another, [:option, :foo, :bar] do |task, args|
    puts "another #{args}"
    Rake::Task["thing:work"].invoke(args[:option], args[:foo], args[:bar])
    # or splat the args
    # Rake::Task["thing:work"].invoke(*args)
  end

end

然后

rake thing:work[1,2,3]
=> work: {:option=>"1", :foo=>"2", :bar=>"3"}

rake thing:another[1,2,3]
=> another {:option=>"1", :foo=>"2", :bar=>"3"}
=> work: {:option=>"1", :foo=>"2", :bar=>"3"}

注意:变量task是任务对象,除非您了解/关心Rake内部 struct ,否则没有多大帮助.

RAILS NOTE:

如果从Rails运行任务,最好通过添加=> [:environment]来预加载环境,这是设置dependent个任务的一种方式.

  task :work, [:option, :foo, :bar] => [:environment] do |task, args|
    puts "work", args
  end

Ruby相关问答推荐

当bsearch将数组中的第一个元素与2个值匹配时,它返回nil.为什么?

ruby:比较两个单词并从中提取不常见的字母

使用数组作为其中之一转换键和值

删除带括号的子表达式

Ruby 的 .() 运算符是如何工作的?

ri 和 rdoc 有什么区别

查看 Savon 请求 XML 而不发送到服务器

无法在 Heroku 教程中使用 Python 启动工头

如何判断 Capistrano 中是否存在文件(在远程服务器上)?

Ruby:获取不带扩展名的文件名

Ruby字符串上的扫描和匹配有什么区别

Ruby 中方法名称的限制是什么?

Ruby 被空格分割

Ruby RVM apt-get 更新错误

使用哈希参数进行 DRY Ruby 初始化

是否有更简单的(单行)语法来别名一个类方法?

将两个数组组合成哈希

如何在 Ruby 中向异常消息中添加信息?

*nix 是什么意思?

JavaScript Array:获取项目的范围