2007年10月12日金曜日

ZK: Ruby on ZK を試す

ZK Forumで紹介されていたRuby on ZKを試してみました。
とりあえずダウンロードしたrozk_r0.2.warを展開してみるとmySql.sqlなるファイルがあり、中身を確認するとテーブル作成ddlだったのでmysqlで実行してtestデータベースにテーブルを作成してみました。

$ cd ~/tmp
$ unzip rozk_r.0.2.war
$ mysql -u myadmin -p test
Enter password:
mysql> \. mySql.sql
...
mysql> exit
Bye

アプリケーションに必要なテーブルが作成できたと思い、rozk_r0.2.warをTOMCAT_DIR/webappsに配備後tomcatを再起動しました。
tomcatにより展開されてできたアプリケーションディレクトリのcustomer.zulとinvoice.zulにmysqlユーザとパスワードの記述があるので実状に合わせ変更します。
WEB-INF/libの中が空っぽなのでZKライブラリをコピーします。
またWEB-INF/web.xmlが不完全なので動作しているZKアプリのweb.xmlをコピーしました。

$ diff customer.zul customer.zul~
8c8
< dbc=Dbc.new('test','MySql','myadmin','XXXXXX')
---
> dbc=Dbc.new('test','MySql','root','david')

$ diff invoice.zul invoice.zul~
9c9
< dbc=Dbc.new('test','MySql','myadmin','XXXXXX')
---
> dbc=Dbc.new('test','MySql','root','david')

# cp zk-bin-3.0.0-RC/dist/lib/*jar TOMCAT_DIR/webapps/rozk_r0.2/WEB-INF/lib

# cp zk-bin-3.0.0-RC/dist/lib/ext/*jar TOMCAT_DIR/webapps/rozk_r0.2/WEB-INF/lib

# cd TOMCAT_DIR/webapps
# cp ZKAPP_DIR/WEB-INF/web.xml rozk_r0.2/WEB-INF

Firefoxでアクセスして見たところエラーです。


ワークディレクトリの設定がうまくいっていないようなのでrozk_r0.2/rozk/bl_init.rbを編集しアプリケーションのフルパスを記入してアクセスしてみたところ動作させることができました。

# vi bl_init.rb
...
else # change the working directory to the webapps, if tomcat
# Dir.chdir('webapps'+work_path) # 'webapps/rozk_sample'
Dir.chdir('/usr/tomcat/webapps'+work_path) # 'webapps/rozk_sample'
end
...



どうやら

customer.zul
...
# 他になんの設定もなしで
dbc=Dbc.new('test','MySql','myadmin','XXXXXX')
#データベースに接続し

# 他になんの設定もなしで
dao_cus = Dao.new(dbc,'cus','cus as Customer, name as Name, email as eMail','cus')
# DAOが出来上がり

# 生成されたDAOから自動的に
AutoGrid.dao_2_grid(dao_cus,$cus_form)
# DAO操作用のグリッドが作成されるようです!!



ということはambitionを試すで作ったpetsテーブルの操作はこれだけでOK?

pet.zul
<?page zscript-language="Ruby"?>
<window >
<div id='pet_form'/>
<zscript src='rozk/bl_init.rb'/>
<zscript>
dbc=Dbc.new('sampledb','MySql','myadmin','XXXXXX')
pets = Dao.new(dbc,'pets','id as ID, name as Name, age as Age','pets')
AutoGrid.dao_2_grid(pets,$pet_form)
</zscript>
</window>



でした、面白いですね。



こちらも気に掛かりますひがやすをさんのブログ

...
来週出す予定のSeasar2の次のバージョン(2.4.18)で、S2Daoが統合されます。
...
目玉は、ManyToOne、OneToMany、OneToOneの完全サポートでしょうか。
...

List employees =
jdbcManager.from(Employee.class).join("department").getResultList();



わくわくしますね。

0 件のコメント: