sinkin' in the rain

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を右クリックして開始する。

Tags : ruby fastladder

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 というディレクトリができている。

Tags : ruby fastladder

Tags : ruby fastladder

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」したらエラーになったみたいで、よく分からないんだよな。まあボチボチやろう。

Tags : ruby fastladder

page 1 of 1
Tumblr » powered Sid05 » templated