ベトナムの Ruby コミュニティというエントリで、cntt.tv というサイトを紹介した。このサイトが、事実上、ベトナム人による唯一の Ruby コミュニティになっている。日本に住むベトナム人の Đào Thanh Ngọc さんによって運営が行われている。
このサイトは OpenKH という CMS で構築されている。このシステムも Ngọc さんが主体になって、Ruby on Rails で構築されている。自分で作った CMS で自分のサイトを運営するなんて、しびれるね〜。
Ngọc さんに「一緒に OpenKH の開発をしませんか」と誘われて、ちょっとうれしかったので、てもとの Debian etch にインストールしてみることにした。しかし、これが案外難航した。
最新版は、http://github.com/ngocdaothanh/openkh/tree/master にあるようなので、これをインストールすることを試みた。README は安定版向けなので、この手順どおりにはできない。
数時間、試行錯誤を重ねた結果、次のようにやれば(とりあえず)インストール可能である。
まずはシステム本体のインストールだ。プラグインは、サブモジュール(外部プロジェクトへのリンク)になっており、git submodule xxx とする必要があることに注意。
% git clone git://github.com/ngocdaothanh/openkh.git
% cd openkh
% git submodule init
% git submodule update
設定ファイルの編集。とりあえず database.yml だけはきちんと設定しておこう。
% cp conf.rb.sample conf.rb % cp database.yml.sample_mysql database.yml % vi database.yml
データベースを忘れずに作っておく。collate を utf8_general_ci に指定しておかないと、あとで日本語を使うときに問題が発生する。
% mysql -u root -p Welcome to the MySQL monitor. Commands end with ; or \g. ... create database openkh default character set utf8 collate utf8_general_ci; create database openkh_test default character set utf8 collate utf8_general_ci;
この状態で rake コマンドをたたくと
/usr/local/lib/ruby/1.8/fileutils.rb:338:in `symlink': No such file or directory - /foobar/openkh_old/modules/core/content_common/public or /foobar/openkh_old/public/modules/content_common (Errno::ENOENT)
というエラーになる。エラーを避けるためには、config/initializers/assets.rb の14行付近を修正する。
dirname = File.dirname(dest) # 追加 FileUtils.mkdir_p(dirname) # 追加 FileUtils.ln_s(parent, dest)
ここまでやって
% rake gems:install
とする。これでこのアプリに必要な gem がインストールされるはず。(だが私の場合はなぜかうまくいかなかったので、個別に gem をインストールした)
README には書かれていないが、どうやら tmp/edict.utf8 という辞書ファイルが必要であるようだ。このために次のコマンドを実行する。
% rake developer:dict:ja_en
これで、辞書ファイルがネットからダウンロードされて、tmp/edict.utf8 として配置される。
次に基本的なデータベースを作成する。普通なら rake db:migrate とするところだが、OpenKH では、
% rake user:install
とする。
ここまで来たら、今度は、rake user:demo として、デモ・アプリをインストールするのだが、このままだと
responses was supposed to be a Array, but was a String
というよくわからないエラーが出る。
これは、/foobar/openkh/lib/tasks/user_demo.rake の80行目 が原因であり、77行目から101行目をコメントアウトしておく。もちろんこれは根本的な解決策ではないが、テストデータの一部がデータベースに入らなくなるだけなので、とりあえずよしとする。
ここまでやって、
% rake user:demo
とする。
これで、
% ruby script/server
として、ブラウザで http://(ホスト名):3000/ をアクセスすれば、とりあえず OpenKH が動いているのが見られるはずだ。
正直これが正しいやり方なのか確信はない。しかし、もうちょっとインストールが簡単だとありがたいな・・・。