2007年 03月26日(Mon) [長年日記]
_ [Webサイト][ruby]WWW::MechanizeをXREAにインストール(その1)
ここしばらくPragger触りたくて仕方が無いんですが、仕事忙しいから全然触れず。
今一番やりたい事はmixiのrss化。だって会社からmixi見れないんだもん。
もちろんそんなツールも探せば既にあります。あるんですが、試しに一つ使ってみたけど何か自分が望んでいたものと少し違う感じ。何より私はPraggerを触りたいんだい!
以上前振り。
で、そういった事をしたいならWWW::Mechanize(参考:Ruby's WWW::Mechanize 日本語リファレンス)が必要になるらしく、この土日でXREAにWWW::Mechanizeをインストールしようと奮闘してたのでした。
……これがなかなか上手く行かなくてねぇ。結局スマートには行かなかったので良いノウハウにはならないんだけど、まあ自分用メモとして残しておこうかな、と。
ありゃ、だいぶ長くなりそうだ。というわけでこの項続く。
_ [Webサイト][ruby]WWW::MechanizeをXREAにインストール(その2)
断っておきますが、以下はメモに過ぎないので参考にする分には構いませんが、書いてあるまま信じないように。というか試行錯誤の時間が長かったので、細部がいい加減です。
とりあえずWWW::MechanizeをインストールするにはRubyGems使うと良いよとの事なのでまずはRubyGemsをインストール。
インストール前に.htaccessに次の環境変数を追加。IDの部分は随時環境に合わせて書き換えること。あと横に長いのは適当に改行してます。
SetEnv GEM_HOME /virtual/ID/lib/ruby/gems/1.8 SetEnv RUBYLIB /virtual/ID/lib/ruby/site_ruby/1.8: /virtual/ID/lib/ruby/gems/1.8/gems:/virtual/ID/lib/ruby
本当はPATHも追加したいんだけど、PATHはread only属性になってるみたい。
で、RubyGems自体はsetup.rbを実行してインストール。といってもオプションを追加したいので以下のようなスクリプトを組んでCGIで実行したんだけど。
#!/usr/local/bin/ruby require 'shell' path = ENV['PATH'] ENV['PATH'] = path + ':/virtual/ID/bin :/virtual/ID/lib/ruby/gems/1.8/bin' sh = Shell.new sh.cd("/virtual/ID/src/rubygems-0.9.2") print sh.system('ruby','setup.rb','all', '--prefix=/virtual/ID')
.htaccessに
AddHandler cgi-script-debug .rb
とか書いとくとCGIのエラーとかprint結果が見れたりしていろいろと便利。
次にhpricotをインストール。何故かというとWWW::Mechanizeはhpricotを利用してるため。ただしgemを使うからかなり楽。
#!/usr/local/bin/ruby require 'shell' path = ENV['PATH'] ENV['PATH'] = path + ':/virtual/ID/bin :/virtual/ID/lib/ruby/gems/1.8/bin :/virtual/ID/lib/ruby/site_ruby/1.8' sh = Shell.new sh.cd("/virtual/ID") print sh.system('gem','i','hpricot') < 'input.txt'
input.txtは途中でUnix版を入れる(ruby)かWindows版を入れる(mswin32)か聞かれるのでコンソールからの入力の代わりに。中身は
1
とか書いてあるだけ。
ただ自分がやった時は途中でエラーが出てインストールが終了しませんでした。何かforkができないとか何とか。今思うとRDocとか作成しようとして時間がかかり過ぎて強制終了されたのかもしれない。分からないけど。
まあ途中までといってもgemspecファイルが出来てなかっただけだったので、ローカル(WinXPマシン)のhpricot-0.5-mswin32.gemspecとかいうファイルをコピーしてmswin32という部分(中身とファイル名両方)をrubyに書き換えてアップロードして無理やり解決。本当にそれでいいのか良く分からないけど動いてるからいいや(^^;
で、ようやくWWW::Mechanizeのインストール。やり方はhpricotと変わらず、
sh.system('gem','i','mechanize') < 'input.txt'
とするだけ。途中で他のライブラリとかをインストールするか聞いてくるので、input.txtに
y y
とか書いてアップしておきます。
以上、本当にただのメモ程度。