Ruby Mechanize требует полного имени класса - PullRequest
0 голосов
/ 24 января 2012

зачем вам полное имя для механизации, как:

#!/usr/bin/ruby -w

require 'rubygems'
require 'pp'
require 'yaml'
require "mechanize"


yml = YAML.load_file 'login.yml'
user = yml["user"]
pword = yml["pword"]

a = WWW::Mechanize.new { |agent|
  agent.user_agent_alias = 'Mac Safari'
}

a.get('http://google.com/') do |page|
  search_result = page.form_with(:name => 'f') do |search|
    search.q = 'Hello world'
  end.submit

  search_result.links.each do |link|
    puts link.text
  end
end

, когда механизированный пример этого не делает?Этот вопрос задается поверх предыдущего вопроса.Код работал только после прочтения предыдущего вопроса на эту тему и добавления полного имени класса (?).Мне кажется, что-то похожее на Java, но только когда это неоднозначно.Здесь нет ничего неоднозначного, есть только один Механизированный.

Простите, фактический предыдущий вопрос полностью противоречит приведенной выше ссылке.Предыдущий вопрос, на который я ссылался, это здесь .Повторим, два разных вопроса, два разных ответа.Может быть, API или идиома изменились.

1 Ответ

1 голос
/ 24 января 2012

Какую версию Mechanize вы используете?Попробуйте gem list mechanize.

Используя Ruby 1.8.7-p357, 1.9.2-p290 и 1.9.3-p0 и Mechanize 2.1. Я могу создать экземпляр.Например:

1.8.7 :001 > require 'mechanize'
true
1.8.7 :002 > agent = Mechanize.new
#<Mechanize:0x101baacf0
[...]

и:

1.9.3p0 :001 > require 'mechanize'
true
1.9.3p0 :002 > agent = Mechanize.new
#<Mechanize:0x102988610
[...]

Я подозреваю, что вы используете Mac OS, потому что вы получаете доступ к Ruby в /usr/bin.Ruby не устанавливается по умолчанию в Windows или Linux и обычно не идет по этому пути.

Версия Ruby от Apple не включает Mechanize, поэтому вы добавили ее в какой-то момент.Так как Apple не установила его, обновление должно быть удобным, поэтому сделайте следующее:

sudo gem update mechanize

Apple использует Ruby для приложений в Mac OS, поэтому вы должны знать об этом при обновлении предустановленных приложений.драгоценные камни.

...