我们正在向Heroku部署rails应用程序。应用程序应该使用Trollop Gem作为命令行解析器进行youtube api调用。我们不断收到此错误。
2014-07-30T23:17:57.526014+00:00 app[web.1]: Error: unknown argument '-p'.
2014-07-30T23:17:57.526020+00:00 app[web.1]: Try --help for help.
2014-07-30T23:17:57.526541+00:00 app[web.1]: Completed 500 Internal Server Error in 7466ms
这就是我们的Trollop代码。
def self.youtube_search(query)
youtube_service_api_name = "youtube"
youtube_api_version = "v3"
# opts = HTTParty.get("https://www.youtube.com/results?search_query=russia")
opts = Trollop::options do
opt :q, 'Search term', :source => String, :default => query
opt :maxResults, 'Max results', :source => :int, :default => 25
end
更奇怪的是,它在一小时前工作,而现在却没有。有没有人有任何想法?这似乎没有记录在任何地方。
答案 0 :(得分:0)
提供未定义的参数时,Trollop将失败。在您的代码中,-q
选项已定义,但-p
未定义。
以下是parse
方法中的相关行:
<强> trollop.rb 强>
339 unless sym
340 next 0 if ignore_invalid_options
341 raise CommandlineError, "unknown argument '#{arg}'" unless sym
342 end
至于为什么它以前工作过,也许你现在正在通过-q
并无意中传递-p
?
答案 1 :(得分:0)
我决定放弃Trollop而只是硬编码我自己的选择。
所以我刚刚初始化了一个opts哈希并插入了键值对而没有更多问题。