将一个或两个参数传递给Rake任务

NJ.*_*NJ. 20 rake ruby-on-rails

我有一个rake任务,我想传递参数.例如,我想发出一个命令

<prompt> rake db:do_something 1
Run Code Online (Sandbox Code Playgroud)

在rake任务中:

...
cust = Customer.find( the_id_passed_in )
# do something with this customer record, etc...
...
Run Code Online (Sandbox Code Playgroud)

很简单,对吧?

ace*_*des 38

rake命令接受和定义参数的方式很好,不太漂亮.

以这种方式调用您的任务:

<prompt> rake db:do_something[1,2]
Run Code Online (Sandbox Code Playgroud)

我添加了第二个参数来表明你需要逗号,但省略了任何空格.

并将其定义如下:

task :do_something, :arg1, :arg2 do |t, args|
  args.with_defaults(:arg1 => "default_arg1_value", :arg2 => "default_arg2_value")
  # args[:arg1] and args[:arg2] contain the arg values, subject to the defaults
end
Run Code Online (Sandbox Code Playgroud)

  • `task:do_something,[:arg1,:arg2] =>:环境do | t,args |` (10认同)
  • 我想你想要另一个逗号:`task:do_something,:arg1` ... (2认同)