昨日 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]
まぁ 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 の整理が追い付いてなかったのですが、これでうまくできそうです。 懸案ひとつ解決で、すっきりです。 🙂