Fastladder を mod_rails にインストール

昨日 Redmine を入れるために Ruby / Ruby on Rails の環境を、Cent OS 5.5 のローカルサーバにつくりました。

というわけで、今日はさらにそこに Fastladder Open Source を入れてみます。 なかなか手ごわかったですが、なんとか動いたようです。 🙂

Fastladder はサーバインストール型の RSS リーダです。

Fastladder Open Source / Free Download

オープンソース版「Fastladder」は、サーバインストール型のRSSリーダーです。法人で管理しているサーバや、個人でお持ちのPCなどにインストールして使用できますので、イントラのRSSも読むことができます。

以前から Gregarius をインストールして使っていたのですが、ちょっと遅い、、ということで Fastladder。 こちらも前からやってみたかったのですが、 Rails の環境が用意できなかったので断念していました。

[tegaki]とりあえず動いた! の図。 :)[/tegaki]

fastladder01

まぁ ASP 版とほとんどいっしょなので ASP つかえって話ですが、やっぱりデータがこちらのおなかにあるのは、いろいろ使い勝手がいいのでローカルサーバで動かすことにしています。

さて、CentOS 5.5 へのインストールですが、Ruby とかライブラリとかの関係でなかなか動かすのが大変でした。。 覚えている限りでひっかかったところを、書いていきます。

とりあえず、作業した環境

[root@localhost ~]# cat /etc/httpd/conf.d/passenger.conf 
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/bin/ruby
 
[root@localhost ~]# ruby -v
ruby 1.8.5 (2006-08-25) [i386-linux]
[root@localhost ~]# gem -v
1.3.1

まず必要となる Freeimage ライブラリは、コンパイルしていれました。 make; make install して ldconfig すれば入ると思います。

rfeedfinder については、hpricot が依存するのですが、0.8 系だとエラーになるようなので、0.7 系を入れています。

gem install hpricot --version 0.7

これで、Fastladder の INSTALL.txt はクリアできると思います。

で次に、Rails アプリケーションの設定。 せっかく、昨日 Postgres 入れたのでこちらを使うようにしました。

[hiromasa@localhost config]$ cat /opt/fastladder/config/database.yml
production:
  adapter: postgresql
  database: fastladderdb
  username: fastladder
  password: パスワード
  host: localhost
  encoding: utf8

でもって、ポスグレに DB とユーザ追加。

   1: sudo -u postgres createuser -U postgres -dEeP
   2: sudo -u postgres createdb -e -U postgres -O fastladder fastladderdb "For Fastladder"

httpd.conf に Rails アプリを追加。

<VirtualHost *:80>
   ServerName localhost.localdomain
   DocumentRoot /var/www/html
   RailsBaseURI /redmine
   <Directory /var/www/html>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>
 
<VirtualHost *:8081>
   ServerName localhost.localdomain
   DocumentRoot /opt/fastladder/public 
   <Directory /opt/fastladder/public>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>

上が Redmine 用で下の 8081 が Fastladder です。 *:80 のほうに RailsBaseURI に /fastladder を追加でいけるはずだったのですが、Fastladder にアクセスするとコンテキストパス(?) が無視されて / にすっとばされてしまうので、しょうがなくポートを分けました。

config.action_controller.relative_url_root の設定を config/environment.rb にしてみたりもしたのですが、だめそう。。 Fastladder がパスを固定でもっちゃってるのかもしれません。(フレームワーク使っているのにあるかなぁという疑問はありつつ)

で、これでアクセスで動くと思いきやまだまだ苦難が。(笑)

log/production.log を tail して動かしていくといいかもです。

まず、Rails のバージョンが新しいせいなのか、フレームワークのファイル名の命名規則が変わっていてコントローラでおちちゃいます。

app/controllers/application.rb をapp/controllers/application_controller.rb にリネームする方向で。

次に、rfeedfinder.rb が引数がおかしいだかで落ちますので、/usr/lib/ruby/gems/1.8/gems/rfeedfinder-0.9.13/lib/rfeedfinder.rb の、

#data = Rfeedfinder.open_doc(fulluri, options)
data = Rfeedfinder.open_doc(fulluri)

2引数になっている、open_doc を 1引数にパッチ。

それから、lib/string_utils.rb で strip_tags() が no such method とかいわれて落ちるので、

class String
  # for strip_tags
  #include ActionView::Helpers::TextHelper
  include ActionView::Helpers::SanitizeHelper
  extend ActionView::Helpers::SanitizeHelper::ClassMethods

extend の行を追加します。

たしか以上で動いたはずです。 いろいろやっていたらログとばしてしまいました。。

あ、あと RSS の URL のバリデータがきつかったのでとばしました。 なんか Google のバリデータだったような気がします。 どこだったか失念(笑) 必要ならログにでますので、コメントアウトすればいいと思います。

RoR はおろか Ruby もよくわかっていないでやっていますので、変なことしていたらすいません。

あとは、クローラを init.d で自動起動するようにすればいいと思います。 動いてしまえば順調。 いい感じですぞ。

最近、WordPress 関係でお会いする方が増えて、RSS の整理が追い付いてなかったのですが、これでうまくできそうです。 懸案ひとつ解決で、すっきりです。 🙂

コメントを残す