23/02/2008
Fastladder on Windowsをrev.26に更新。
rev.25からrev.26は追加ファイルがたくさんあって、こうなると個別ファイルコピーはもう非現実的。素直にsvn&patchコマンドのお世話になる。
まずsvnコマンドでパッチの作成。LANG=Cをする理由はこちら、-r16:headの理由はこちらを参照。
C:\Program Files\Fastladder>set LANG=C
C:\Program Files\Fastladder>svn diff -r16:head http://fastladder.googlecode.com/svn/trunk/fastladder
> patch.txt
次に、スタートメニュー→[コントロールパネル]→[管理ツール]→[サービス]を開き、Fastladderを右クリックして停止。クローラも動かしているのであれば停止。
そしてpatchコマンドでパッチの適用。
C:\Program Files\Fastladder>patch -p0 patching file test/unit/crawl_status_test.rb
patching file test/test_helper.rb
patching file test/lib/fastladder/crawler_test.rb
patching file test/fixtures/crawl_statuses.yml
patching file test/fixtures/feeds.yml
patching file test/fixtures/favicons.yml
patching file app/models/feed.rb
Assertion failed: hunk, file patch.c, line 343
(app/views/reader/index.rhtml)
なぜかこんな調子で時々エラーが起きて止まるのだけど、エラーが起きたファイルの前まで(patching file app/models/feed.rbの前、つまりpatching file test/fixtures/favicons.ymlへの差分まで)をpatch.txtから消して、再度実行すると今度はうまく進む。この作業を繰り返していると、そのうち全パッチの適用が終わる。
それから、バイナリファイルはpatchで作成されないので、patch.txt内で「svn:mime-type = …」とか書かれているファイルを確認し、そのファイルは改めて取得。rev.16からrev.26ではtest/fixtures/files/favicon.icoだけ。
取得がすんだら、更新作業は終了。スタートメニュー→[コントロールパネル]→[管理ツール]→[サービス]を開き、Fastladderを右クリックして開始する。
Posted at 21:37
gem in FastladderでRuby/MySQLインストール
Windows版Fastladderインストーラではrubyやgemも同梱されて入ってくる。このgemでRuby/MySQLを追加できるものか良く分からなかったのだけど、試してみたらできたみたい。
C:\PROGRAM FILES\FASTLADDER\RUBY-WIN32\bin>gem install mysql
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed mysql-2.7.3-x86-mswin32
1 gem installed
Installing ri documentation for mysql-2.7.3-x86-mswin32…
Installing RDoc documentation for mysql-2.7.3-x86-mswin32…
ERROR: While generating documentation for mysql-2.7.3-x86-mswin32
(略)C:\PROGRAM FILES\FASTLADDER\RUBY-WIN32\bin>
おかしなところ(C:\RUbyの下とか)にインストールされないかとかも心配だったのだけど FASTLADDER\RUBY-WIN32\lib\ruby\gems\1.8\gems\mysql-2.7.3-x86-mswin32 というディレクトリができている。
Posted at 12:41
Posted at 12:14
10/02/2008
Fastladderの(認証)プロキシ対応
Fastladderのプロキシ対応と、認証プロキシ対応にチャレンジ中。Feedの追加周りはどうにかなったっぽい。
まずruby\1.8内にあるopen-uri.rb。これは元々、環境変数を見て、HTTP_PROXYとかCGI_HTTP_PROXYとかが設定されていればプロキシを使ってくれる。ここでは、プロキシ認証用にユーザとパスワードも渡すように変更。
if proxy
- klass = Net::HTTP::Proxy(proxy.host, proxy.port)
+ klass = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password)
end
次にgems内にあるrfeedfinder.rbの268行目から。こちらはプロキシ対応がまったくないので、open-uriにあわせて環境変数方式でプロキシが選択されるようにする。
Timeout::timeout(20) {
- html = Net::HTTP.get(URI.parse(link))
+ html = nil
+ proxy = URI::HTTP::find_proxy
+ if proxy
+ html = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password).get(URI.parse(link))
+ else
+ html = Net::HTTP.get(URI.parse(link))
+ end
data = Hpricot(html, :xml => true) if html.to_s !~ /404 Not Found/
これで、フィード追加時のバックエンドプロセスが、一通り以下のような環境変数を反映して動作してくれた。
HTTP_PROXY=http://joe:opensesami@proxy.example.com:8080
余談だけど、僕はFastladderのWindows版で遊んでいて、修正はすぐに反映されなかった。
ちょっと悩んだのだけど、Windows版はFastladderのWebサーバプロセスが自動的にサービスに追加されるようになっていて、サービスの再起動が必要だったみたい。[コントロールパネル]-[管理ツール]-[サービス]で「Fastladder」というサービスを再起動する。
あとはクローラ側を直せば、すべてOKなのかな?クローラ内で「URI::HTTP::find_proxy」したらエラーになったみたいで、よく分からないんだよな。まあボチボチやろう。
Posted at 12:40
