【问题标题】:Ruby OptionParser throwing ArgumentErrorRuby OptionParser 抛出 ArgumentError
【发布时间】:2014-10-20 03:58:20
【问题描述】:

这是我第一次使用 OptionParser,我收到了这个错误:

/Users/jay/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mechanize-> 2.7.3/lib/mechanize/http/agent.rb:651:in @ 987654321@fetch' 来自 /Users/jay/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize.rb:440:in get' from /Users/jay/Code/linkedin-scraper/lib/myModel-scraper/profile.rb:20:ininitialize' 来自 ./bin/myModel-scraper:6:in new' from ./bin/myModel-scraper:6:in'

斌:

require 'rubygems'
require 'optparse'

opts = OptionParser.new do |opts|
 opts.on_tail("-v", "--version", "Show version") { puts myModel::Scraper::VERSION; exit }
 opts.parse!
end

Lib/版本:

module myModel
  module Scraper
    VERSION = '0.1.2'
  end
end

我想我完全错了,有人能解释一下这里发生了什么吗?

【问题讨论】:

  • 您使用什么命令来调用脚本?如果将opts.parse! 拉到块外,它会起作用吗?
  • 您的错误来自 mechanize,而不是 OptionParser。
  • 我正在尝试使用mymodel-scraper -v。我的库类是mymodel-scraper.rb

标签: ruby-on-rails ruby gem optionparser


【解决方案1】:

我通常会这样写一个 OptionParser 块:

OptionParser.new do |opts|
  opts.on_tail("-v", "--version", "Show version") { puts myModel::Scraper::VERSION; exit }
end.parse!

我可能会使用on 而不是on_tail

opts.on("-v", "--version", "Show version") { puts myModel::Scraper::VERSION; exit }

但我理解您为什么希望它出现在帮助列表的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    相关资源
    最近更新 更多