2008年11月3日月曜日

暇暇にRailsとやらを試してみる

風邪である。ひきこもりである。暇である。
ってわけで普段だったらたぶん時間なくてできないことをひたすらやってみる。その一つがInstantRails使ってみよう。
なんで突然Ruby on Railsなのかというと、ひとつにはRedMineっていうサーバーにおいて使う形の管理ツールを使ってみたかったから+サーバーにアプリケーションおいていじるの一度やってみたかったから。まーたぶん今後はサーバーになんでもおいてそれを共有ってタイプの作業や処理が増えてくるであろうし、全然畑違いの物理ギョーカイのわれわれもその辺知っておいたほうがなにかといいんじゃねーかと。Fortranだけじゃなんもできんしな。たぶんサーバーにデータベースおいてそれいじる簡単な方法は知っといて損ないだろ。
で、流行ってるとことには便利なものがあるもんで、Eclipseを日本語化してそれにInstantRailsやそれようのIDE(Aptana?)やらなんかPythonとかも全部ほりこんでくれているPleiades all in one日本語ディストリビューションってのがあった。それのUltimet版とやらを落として解凍するだけでJavaのみならずからInstantRails、RubyからPythonからC++まで全部使える環境が手に入る。うはーいい時代だなぁ。新しく始める人間にとって実にありがたい。ほっとんどプログラム関係のこと知らんくてもサクッとお試しできるんだもんなー。
とりあえずeclipse起動して、パースペクティブ?をRedRailsのそれにして軽く試す。新規プロジェクトつくるだけで、一通り仕組みに必要なファイルが書き出されて、Mongrelとかゆーサーバーが起動して、初期設定画面が出てくる。そこに書いてあるチュートリアルどおりにいじって動くことは確認。へーこんなあっさり鯖ができてDBができてそれを操作ってRoRすげーとか思う。

さて問題は、ちょっと自分が使えるような簡単なものを作ってみるかって時に大抵発生する。ネットでいろいろやり方をさがして試してみるもなんだかうまくいかん。ネットの例は大抵ROR+mySQLだったんだが調べた結果
・Ruby on Rails 1.x とRuby on Rails 2.x では動作が全然違う
・2.x ではデータベースがデフォではSQlite3ってやつらしい→プロジェクト作る時にmySQL指定とかしないとmySQL使ってくれないらしい。
・eclipse経由だとInstant Railsを別に起動しとかないとmySQLを使えない(eclipseはDBにmySQL指定してもmySQLを立ち上げるわけじゃないっぽい?)
のがうまくいかない原因だったぽい。
とりあえず自分が「んー学会発表リストをつくってみるか」とおもってそれらしきものをつくった手順をメモっとく。参考にさせてもらったここのサイト見れば、陥りがちな日本語うまくいかねーとかも回避。
1 プロジェクトとしてlistってのを作成。データベースはmysql指定

2 Instant Rails起動

3 ジェネレーターって書いてあるところでscaffoldを選択。 パラメーターは list name:string place:string title:string from:datetime to:datetime coauthor:string で実行 (ruby script/generate list name:string place:string title:string from:datetime to:datetime coauthor:string ってコマンドラインで打つのと一緒ぽい )
これで、name place title from to coauthor っていう要素をもったテーブルをデータベースに作る用のファイルが001_create_lists.rbとかいう風にdb\migrateのフォルダにできる。同時にそうした要素への処理とかのメソッド?をいろいろ記述したのがapp\views下にいろいろできてるはず。

4 mysqlで必要なデータベースを作る。Instant Rails のI型のボタン押して、Railsアプリケーション→Railsアプリケーションの管理。新規アプリケーションの作成を押すとパスがとおった状態でコマンドプロンプトが開くので、cdとかつかってeclipseのプロジェクト置いてあるとこへ移動。
mysql -u root -p
create database list_development;
create database list_test;
create database list_production;
とやると、上記3つのデータベースができる。これはconfig\database.ymlに書かれている、Railsが使う3つのデータベースの名前に合わせてあって、デフォルトはプロジェクト名+developmentとかだ。
この段階でたとえば
use list_development;
show table;
とかやると、中身が空なのが分かる。

5 eclipseにもどって、テーブルの中身についてはさっきので指定してあるのでRakeタスクっていうタブ(ペインっちゅーんか?)を開いてdb:migrationを選択して実行する。( rake db:migration)するとデータベースにテーブルが作られる。
use list_development;
show table;
desclibe lists(←テーブル名);
でなんか変更が反映されてるのがわかる。

6 サーバーを起動。http://127.0.0.1:サーバーがふり当てられたポート番号/listsで動いていることを確認。

こんなんで動いた。RoRのすげーなところはデフォルトで、show edit destroyなんかのボタンが既にできているところで、単純な仕組みをつくるだけでいいならほんと一瞬でそれらしきものができてしまうあたり。DBのしくみとかほとんど知らなくてもなんか動くものできちゃったもんなぁ。というわけでしばらくこれいじって遊んでそうな気がする。rubyって誕生石だし。明日からは本業もせんとなぁ・・・

0 コメント: