OpenKH のインストール

ベトナムの 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 が動いているのが見られるはずだ。

正直これが正しいやり方なのか確信はない。しかし、もうちょっとインストールが簡単だとありがたいな・・・。