Ruby - 运行 没有参数的 Thor 命令
Ruby - run Thor command without argument
我必须使用这个命令来执行脚本:
$ruby file.rb keyword --format oneline --no-country-code --api-key=API
其中,format
、no-country-code
、api-key
是thor
选项。 keyword
是我方法中的参数:
class TwitterTrendReader < Thor
method_option :'api-key', :required => true
method_option :format
method_option :'no-country-code', :type => :boolean
def execute (keyword)
#read file then display the results matching `keyword`
end
default_task :execute
end
问题是 keyword
是可选的,如果我 运行 命令没有 keyword
,脚本应该打印文件中的所有条目,否则,它只显示匹配 keyword
.
的条目
所以我有这个代码:
if ARGV.empty?
TwitterTrendReader.start ''
else
TwitterTrendReader.start ARGV
end
它只在我指定 keyword
但没有 keyword
时有效,我得到这个:
$ruby s3493188_p3.rb --api-key="abC9hsk9"
ERROR: "s3493188_p3.rb execute" was called with no arguments
Usage: "s3493188_p3.rb [keyword] --format oneline --no-country-code --api-key=API-KEY"
所以请告诉我使参数可选的正确方法是什么。谢谢!
您当前对 def execute (keyword)
的实现具有多样性 1
(也就是说,它声明了一个强制参数。)如果您想能够省略它,请将该参数设为可选。
改变
def execute (keyword)
#read file then display the results matching `keyword`
end
至:
def execute (keyword = nil)
if keyword.nil?
# NO KEYWORD PASSED
else
# NORMAL PROCESSING
end
end
我必须使用这个命令来执行脚本:
$ruby file.rb keyword --format oneline --no-country-code --api-key=API
其中,format
、no-country-code
、api-key
是thor
选项。 keyword
是我方法中的参数:
class TwitterTrendReader < Thor
method_option :'api-key', :required => true
method_option :format
method_option :'no-country-code', :type => :boolean
def execute (keyword)
#read file then display the results matching `keyword`
end
default_task :execute
end
问题是 keyword
是可选的,如果我 运行 命令没有 keyword
,脚本应该打印文件中的所有条目,否则,它只显示匹配 keyword
.
所以我有这个代码:
if ARGV.empty?
TwitterTrendReader.start ''
else
TwitterTrendReader.start ARGV
end
它只在我指定 keyword
但没有 keyword
时有效,我得到这个:
$ruby s3493188_p3.rb --api-key="abC9hsk9"
ERROR: "s3493188_p3.rb execute" was called with no arguments
Usage: "s3493188_p3.rb [keyword] --format oneline --no-country-code --api-key=API-KEY"
所以请告诉我使参数可选的正确方法是什么。谢谢!
您当前对 def execute (keyword)
的实现具有多样性 1
(也就是说,它声明了一个强制参数。)如果您想能够省略它,请将该参数设为可选。
改变
def execute (keyword)
#read file then display the results matching `keyword`
end
至:
def execute (keyword = nil)
if keyword.nil?
# NO KEYWORD PASSED
else
# NORMAL PROCESSING
end
end