gpt4 book ai didi

ruby - Thor - 方法中无法识别命令行选项

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:23 25 4
gpt4 key购买 nike

我必须使用这个命令来运行我的 ruby 程序:

$ruby filename.rb NAME --from="People" --yell

我有这样的脚本:

require 'thor'

class CLI < Thor
desc "hello NAME", "say hello to NAME"

method_option :from, :required => true
method_option :yell, :type => :boolean
def self.hello(name)
output = []
output << "from: #{options[:from]}" if options[:from]
output << "Hello #{name}"
output = output.join("\n")
puts options[:yell] ? output.upcase : output
end
end

CLI.hello(ARGV)

当我运行代码时,我得到以下输出:

c:\RubyWorkplace\Assignment1>ruby testing.rb Jay --from="Ray"
FROM: #<THOR::OPTION:0X000000031D7998>
HELLO ["JAY", "--FROM=RAY"]

c:\RubyWorkplace\Assignment1>ruby testing.rb Jay --from="Ray" --yell
FROM: #<THOR::OPTION:0X0000000321E528>
HELLO ["JAY", "--FROM=RAY", "--YELL"]

无论我指定与否,:yell 看起来总是有效,并且 options 都被读取为 name 输入 hello 方法。

从网上的教程中找了很多方法试了很多,问题都没有解决。请告诉我出了什么问题。谢谢!

最佳答案

问题是我调用CLI.hello ARGV引起的在脚本中。程序运行时会调用hello方法并将所有命令行输入识别为 hello的参数,是一个数组。

解决此问题的方法之一是制作 hello通过删除公开 self , 通过 start 调用脚本方法。

require 'thor'

class CLI < Thor
desc "hello NAME", "say hello to NAME"

method_option :from, :required => true
method_option :yell, :type => :boolean
def hello(name)
#do something
end
end

CLI.start ARGV

关于ruby - Thor - 方法中无法识别命令行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43035803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com