0

なぜ機械化のフルネームが必要なのですか?

#!/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でやや似ているように見えますが、あいまいな場合のみです。ここでは、あいまいなことは何もありません。Mechanize が 1 つだけあります。

申し訳ありませんが、実際の前の質問は上記のリンクと完全に矛盾しています。私が参照していた前の質問はこちらです。繰り返しますが、2 つの異なる質問と 2 つの異なる答えです。たぶん、API またはイディオムが変更されました。

4

1 に答える 1

1

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
[...]

で Ruby にアクセスしているため、Mac OS を使用していると思われます/usr/bin。Ruby は、デフォルトでは Windows または Linux にインストールされておらず、通常はそのパスにはありません。

Apple の Ruby のバージョンには Mechanize が含まれていないため、ある時点で追加されました。Apple がインストールしていないため、更新しても無害であるはずです。

sudo gem update mechanize

Apple は Mac OS のアプリに Ruby を使用しているため、プリインストールされた gem を更新する際にはそのことに注意する必要があります。

于 2012-01-24T00:49:24.150 に答える