Ruby OptionParser выдает ArgumentError

это мой первый раз, когда я использую 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 resolve': absolute URL needed (not -v) (ArgumentError)from /Users/jay/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/http/agent.rb:223:infetch' из / 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:в 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

Либ/версия:

module myModel
  module Scraper
    VERSION = '0.1.2'
  end
end

Думаю, я делаю это совершенно неправильно, может кто-нибудь объяснить, что здесь происходит?


person TuxedoTomson    schedule 26.08.2014    source источник
comment
Какую команду вы используете для вызова скрипта? Это сработает, если вы вытащите opts.parse! за пределы блока?   -  person robbrit    schedule 26.08.2014
comment
Ваша ошибка исходит от механизации, а не от OptionParser.   -  person matt    schedule 26.08.2014
comment
Я пытаюсь использовать mymodel-scraper -v. Мой класс библиотеки mymodel-scraper.rb   -  person TuxedoTomson    schedule 26.08.2014


Ответы (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 }

но я понимаю, почему вы можете захотеть, чтобы он появился в конце списка помощи.

person the Tin Man    schedule 26.08.2014