こんなスクリプトが公開されていたので試してみました。
twitterからmixiボイスにマルチポストするRubyスクリプト書いた
http://d.hatena.ne.jp/gigi-net/20090918/1253224665
自分のサーバーはRubyが使えると思っていたのですが、入ってなかったのでまずRubyをサーバーにインストールしました。
しかしハマりました。
・ruby単体をインストールしただけではこのスクリプトは動かない。
・どうやらライブラリも含めインストールする必要があるらしい。
・Mechanizeというライブラリをインストールする必要があるらしい。
・rubygemというライブラリインストール用のコマンドがある。
・でもaptitude(debianパッケージ管理システム)経由でもrubyライブラリはインストールできる。
・aptitudeとrubygemのどっちを使えばいいんだ?どっちからでも可?
・とりあえずrubygemからmechanizeをインストール
→うまく動かない
・それならばaptitudeからmechanizeをインストール
→うまく動かない
# ./test.rb
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:ingem_original_require': no such file to load -- Mechanize (LoadError)
require’
from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in
from ./test.rb:3
もしかして入れる順番とか関係ある?同じライブラリを上書きしてておかしくなってる?
とかいろいろ考えたんだけど、ふと、
パッケージ名がmechanizeで、インストールされたスクリプト名はmechanize.rb
エラーはMechanize
で出ているので、もしやと思い
/usr/lib/ruby/mechanize.rb
のあるディレクトリで
ln -s mechanize.rb Mechanize.rb
としたらうまく通りました。
インストール方法が間違ってたんかな?でもこれはくだらない不具合のような気が…
debian+ruby環境でしか起こらないのかどうかも気になります。
ネットで調べてみたところでは、同じような現象に悩んでいる人はいなさそうなので固有の問題かも知れん。
それにしても、Rubyではmixiにログインするコードはこれだけで済むのか。美しいな。
page = agent.get(“http://mixi.jp/”)
form = page.forms.first
form[“email”] = mixi_username
form[“password”] = mixi_password
form.submit
RubyかわいいよRuby.