我是 Ruby 新手,我正在使用 Thor 和一些额外的 gem 创建一个 cli 应用程序。我的问题是我接受用户输入(来自控制台)并将数据作为变量传递给现有方法(此方法来自 gem)
我的方法
def search(searchtype, searchterm)
search = OtherClass.new
result = search.search.searchtype keyword: "#{searchterm}"
puts result
# search.search.searchtype is not a method in the gem im using.
end
OtherClass gem 有这些搜索方法:users, repos
用户方法
def users(*args)
arguments(args, :required => [:keyword])
get_request("/legacy/user/search/#{escape_uri(keyword)}", arguments.params)
end
回购方法
def repos(*args)
arguments(args, :required => [:keyword])
get_request("/legacy/repos/search/#{escape_uri(keyword)}", arguments.params)
end
那么如何将用户数据从 OtherClass 传递给方法呢?这是我想做的事情。SEARCHTERM 将作为方法参数动态传递给 search.search 对象。
def search(SEARCHTYPE, searchterm)
search = OtherClass.new
result = search.search.SEARCHTYPE keyword: "#{searchterm}"
puts result
end
“#{searchterm}”按预期工作,但我也想动态地将方法传递给 search.search 对象,这可能可以用 if 来完成,但我确定有更好的方法,也许是 Ruby 方法来解决这个问题问题。
最后我希望能够像这样使用这个小程序(serch方法)
./search.rb 搜索开源linux
(其中 opensource 可以是用户或其他类型的搜索,而 linux 可以是 searchtype 的搜索关键字)
如果这是可能的,我会apprechiate任何帮助!
谢谢!