将参数传递给 rake 任务的问题

Problem with passing argument to rake task

我在 Ruby 2.3.1p112 和 Rails 4.2.7.1 中编写代码,并在尝试在其中一个 rake 文件中使用 if 语句时遇到此错误(?)。

我称这个抽佣任务为:

task :bar, [:argument] => :environment do |_task, arg|
  binding.pry
  if arg.blank?
    # do stuff
  else
    # do other stuff
  end
end

来自这位工人:

 # ...
 def perform(location = nil)
    Rake::Task["foo:bar"].execute(location)
 end
 # ...

当代码到达 binding.pry 行时,我遇到以下问题:

这真的是一个错误还是我缺乏一些基本知识? 谢谢!

你想要

arg[:argument].blank?

因为 arg 是具有 :argument 键的散列。

附带说明:以下将是任务的更具描述性的定义(注意复数 argslocation,因为它看起来像您正在传递位置):

task :bar, [:location] => :environment do |_task, args|
  if args[:location].blank?
    # do stuff
  else
    # do other stuff
  end
end