9arrows を (MySQLで) 試してみました

本家から 9arrows の最新版を落とし、対応するバージョンの Rails も入れておきます。データベースには PostgreSQL を使用するみたいですが、今回は MySQL で強引に動かしてみます。

% svn co http://9arrows.googlecode.com/svn/trunk/ 9arrows
% gem install rails -v 2.1.0


早速、database.yml を書き替えて、rake コマンドをたたきます。あ、その前に MySQL にデータベースも用意しないといけないですね。

development:
  adapter: mysql
  database: 9arrows_development
  username: root
  password: 
  host: 127.0.0.1
(snip)
% mysql -u root -p

mysql> create database 9arrows_development;
mysql> create database 9arrows_production;
mysql> create database 9arrows_test;
mysql> exit;

% cd 9arrows
% rake db:schema:load


rake コマンドの結果を見るに、テーブルの作成はうまくいってますが、初期データの登録で失敗しているっぽいです。そこで、schema.rb の中で execute で呼ばれている中身を手動インサートすることにします。ちなみに、datetime のフォーマットが PostgreSQL と微妙に違うのか、そのままだとインサートできなかったで、ちょこっとだけ手を加えてました。

-INSERT INTO mst_messages VALUES (2, 'project_name', 1, 'プロジェクト名', 'プロジェクト名', 'プロジェクト名', 'プロジェクト名', 1, NULL, '2007-07-08 19:32:00+09', NULL, '2007-07-08 19:39:20.984+09');
+INSERT INTO mst_messages VALUES (2, 'project_name', 1, 'プロジェクト名', 'プロジェクト名', 'プロジェクト名', 'プロジェクト名', 1, NULL, '2007-07-08 19:32:00', NULL, '2007-07-08 19:39:20.984');


作成したデータベースに流し込みます。

% rake db:schema:load > insert.sql
(上述のようにちょっといじって...)

% mysql -u root -p

mysql> use 9arrows_developemt;
mysql> charset utf8;
mysql> source insert.sql;
mysql> exit;


"ERROR 1366 (HY000): Incorrect string value" あたりのエラーがでて、うまく行かなにようなら文字コードの確認を。

mysql> show variables like 'character%';
+--------------------------+--------------------
| Variable_name            | Value
+--------------------------+--------------------
| character_set_client     | utf8
| character_set_connection | utf8
| character_set_database   | utf8
| character_set_filesystem | binary
| character_set_results    | utf8
| character_set_server     | utf8
| character_set_system     | utf8


さて、このままだと auto increment な id が増えていないと思うので、sequence の current 値を変更しようと setval あたりを呼びたいなぁと思ったのですが、そんな関数はないと怒られます。

mysql> SELECT setval('mst_messages_id_seq', max(id)) FROM mst_messages;
ERROR 1305 (42000): FUNCTION 9arrows_development.setval does not exist


あれれっ?と思い、ひとしきり調べてみましたが、どうやら MySQL では扱えないようです。どうしようかなぁ..と思うものの、show table status で確認してみると、ちゃんと auto increment されているではないですか!?
MySQL では、あえて弄らんでもよかったらしいです。 (^^;

mysql> show table status;
+-------------------+------+----------------+-------------+----------------+
| Name              | Rows | Avg_row_length | Data_length | Auto_increment |
+-------------------+------+----------------+-------------+----------------+
| dat_calls         |    0 |              0 |       16384 |              1 |
| dat_callusers     |    0 |              0 |       16384 |              1 |
| dat_eventfiles    |    0 |              0 |       16384 |              1 |
| dat_events        |    0 |              0 |       16384 |              1 |
| dat_eventusers    |    0 |              0 |       16384 |              1 |
| dat_milestones    |    0 |              0 |       16384 |              1 |
| dat_mylogcmts     |    0 |              0 |       16384 |              1 |
| dat_mylogs        |    0 |              0 |       16384 |              1 |
| dat_projectcomps  |    0 |              0 |       16384 |              1 |
| dat_projectlogs   |    0 |              0 |       16384 |              1 |
| dat_projects      |    0 |              0 |       16384 |              1 |
| dat_projectusers  |    0 |              0 |       16384 |              1 |
| dat_taskcmts      |    0 |              0 |       16384 |              1 |
| dat_taskfiles     |    0 |              0 |       16384 |              1 |
| dat_taskhistories |    0 |              0 |       16384 |              1 |
| dat_tasks         |    0 |              0 |       16384 |              1 |
| dat_taskusers     |    0 |              0 |       16384 |              1 |
| mst_compositions  |   29 |            564 |       16384 |             30 |
| mst_messages      |  175 |            374 |       65536 |            198 |
| mst_templates     |    2 |           8192 |       16384 |              3 |
| mst_tpevents      |    3 |           5461 |       16384 |              4 |
| mst_tpmilestones  |    4 |           4096 |       16384 |              5 |
| mst_tptasks       |   22 |            744 |       16384 |             23 |
| mst_users         |    1 |          16384 |       16384 |              2 |
+-------------------+------+----------------+-------------+----------------+
24 rows in set (0.02 sec)


ということで、問題ないようなので気を取り直して起動してみます。
# 必要があれば、test、production 環境も同様に設定を。今回は development だけで進めます。

% ruby script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.0 application starting on http://0.0.0.0:3000
...
DEPRECATION WARNING: config.action_view.cache_template_extensions option has been deprecated and has no affect. Please remove it from your config files.  See http://www.rubyonrails.org/deprecation for details. (called from send at c:/ruby/ruby-186-25/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/initialize
r.rb:455)


なんてログが出てきますが、とりあえず無事起動したようです。


http://localhost:3000/ にアクセスすると、ログインID/パスワードを指定してログインするか、新規ユーザーを登録することになります。新規にユーザーを登録するにはメールサーバの設定とかもしておかないといけなさそうなので、ひとまず初期設定されているログインID で逃げます。

# mst_users テーブルの login_id を見て、パスワードは勘で。

ninearrows/ninearrows


ログインするとプロジェクト作成画面になります。まぁ、プロジェクト管理アプリでプロジェクトがなかったら意味がないのでそりゃそうかって感じです。プロジェクトのテンプレートは「システム開発系」と「WEB製作系」の2つから選べます。前者を選んでおきます。


プロジェクトを作成すると、Todo、Event、Information、Member で 4分割された画面が開きます。これが DashBoard のようですね。同列のメニューには、WBS、Gantt、Calendar、File が並びます。それらの上でプロジェクトがタブ形式で複数並べられるようになっているので、マルチプロジェクト管理ができるんでしょう。(完全に見た目だけから機能を追っています)


DashBoard の画面は参照オンリー。


WBS 画面には先ほど選択したテンプレートで WBS がすでに描かれています。項目は、タスク、担当者、期限、状況、依頼者。ドラッグ & ドロップで列の並びは入れ替えられます。タスクの項目には、マイルストーンとイベント、そしてただのタスクが追加できます。また親タスクをクリックすることで子タスクがトグルできます。


Gantt の画面は、WBS の画面と同じ縦軸で横軸が時間になります。Gantt からでも WBS からでも同様に担当者や期限の編集はできそう。逆に両方を並べて見たいとなるとつらいのかな。


Calendar はそのまんま。タスクやマイルストーンの追加はここからでもできます。ただし、Google Calendar ほどの操作性はないみたい。


Files の画面では、ファイルを管理できます。フォルダ構造もとれるのはいいが、SCM と連携しているわけではないです。ちなみにフォルダはつくれましたが、なぜかアップロードはうまくいきませんでした。アップロードしたファイルは 9arrows_home/public/files にはいるはず。素直に SCM と連携してリポジトリブラウザみたいな画面にしちゃえばよかったのにと思うのですが..。


ざっとこんなところだと思うので、最後に ERD も眺めてみます。

  • 9arrows's ERD

9arrows's ERD

テーブル数はそれほど多くないですね。ひとまず今日はここまで。


# 9arrows は GPLv3 なんだよなぁ... (^^;