developer's diary

最近はc#のエントリが多いです

秀丸からRubyを実行する。〜秀丸からの連投を目指して〜

とりあえず、5月17日のRuby勉強会で、ujihisaさんが紹介していた、WWW::Mechanizeを使用してみる。

とりあえずインストール。

gem install mechanize

EeePCでは、メモリが足りないとか怒られてインストールできなかったので、
デスクトップPCに、インストール。

うまくいきました。*1

早速RubyScraping - Mechanizeで紹介しているソースを実行して試してみる。
施行

使用例

自動google検索。

require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new                     # インスタンス生成
agent.user_agent_alias = 'Mac Safari'          #  User-Agentの設定
page = agent.get('http://www.google.com/')     # ページ取得
search_form = page.forms.with.name('f').first  #  "f"という名前のフォームを探す
search_form.q = 'Hello'                        #  テキストボックス"q"に"Hello"を入力
search_results = agent.submit(search_form)     # フォームのsubmitボタンを押す
puts search_results.body                       # 結果の取得

RubyScraping - Mechanize

を秀丸で実行したのですが。。。。


とエラーが。

Buffer overrun error at LocalUnlock (986) <font size=-1><input type=text name=q size=41 maxlength=2048 value="Hello" ti
\util.cpp(1195) error = 0
ご面倒でなければこのエラーの再現手順を書き添えて、秀丸エディタをインストールしたフォルダ(またはマイドキュメント)にあるdump.txtの内容を作者に連絡ください。また、秀丸エディタは早めに終了させてください。

コマンドプロントより実行した場合は問題なく動きます。

だんだんとWindowsが嫌いになっていく。。。。

しかし、懲りずにもう少し進めよう。

秀まるおのホームページ(サイトー企画)−RubyEval for 秀丸マクロ Ver.0.02で、動かしてみようと思い。
下記ソースで実験。

url = $RUBY_EVAL_INSTR

require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new # インスタンス生成
agent.user_agent_alias = 'Mac Safari'
page = agent.get(url)
$RUBY_EVAL_INSTR = page.title

と、こんどは下記エラー。。。

#<SocketError: c:/ruby/lib/ruby/1.8/net/http.rb:564:in `initialize': getaddrinfo: non-recoverable failure in name resolution.>


ちなみに、エラーが指している564行目は、

      s = timeout(@open_timeout) { TCPSocket.open(conn_address(), conn_port()) }

です。

*1:EeePCでもできるようにがんばろう。