Ruby on rails 测试rails rake任务的命令行参数是否存在的逻辑?

Ruby on rails 测试rails rake任务的命令行参数是否存在的逻辑?,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我有一个rake任务,它返回给定电子邮件的记录数。电子邮件作为命令行参数提供给rake任务,如下所示 rake stats:count email=me@gmail.com 但是如果在没有提供电子邮件的情况下调用rake任务(即,rake stats:count),我希望出现有用的消息,如“请提供电子邮件” 我该怎么做 我试过这个 email = ENV['email'] if email.nil? puts "Please provide an email" end 但是它会因为main:

我有一个rake任务,它返回给定电子邮件的记录数。电子邮件作为命令行参数提供给rake任务,如下所示

rake stats:count email=me@gmail.com
但是如果在没有提供电子邮件的情况下调用rake任务(即,
rake stats:count
),我希望出现有用的消息,如“请提供电子邮件”

我该怎么做

我试过这个

email = ENV['email']
if email.nil? puts "Please provide an email"
end

但是它会因为main:Object的
namererror:undefined local variable或method email'而出错

通过
var=value
提供给rake任务的参数可以在rake任务内部通过
ENV['var']
访问

如果未提供参数,
ENV['var']
将返回
nil

因此,您只需检查
ENV['email'].nil?

i、 e

if ENV['email'].nil?
放入“请提供电子邮件”
其他的
#提供电子邮件时要运行的代码
结束

除非您在rake任务中定义了(
电子邮件
)变量/方法,否则您无法访问该变量/方法的可能副本。访问参数的方式取决于您在
do|u任务args
中如何命名参数,在本例中,我将其命名为
args
,因此,在您的示例中,假设您的名称空间为
namespace:stats do
<代码>任务:计数,[:email]=>:环境执行任务,参数|
。所以,在你的rake代码中,你可以访问
email
作为
args[:email]
你可以检查
如果ENV['email']
那么。对我来说很好是的,我想你需要多放一点代码。只需放置任务定义,添加一些
..
并放置在访问该值的位置,然后再添加一些
..
以隐藏您不想显示的代码,并放置
结束
以查看rake任务定义的结束位置。