Ruby on rails 测试rails rake任务的命令行参数是否存在的逻辑?
我有一个rake任务,它返回给定电子邮件的记录数。电子邮件作为命令行参数提供给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 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任务定义的结束位置。