2009年05月24日

Rails学習中

最近、Ruby on Railsなんていうライトな子と戯れている。

Railsは「設定よりも規約」というキャッチコピーを持つように、プログラマが勝手に名前を付けてweb.xmlやらstruts-config.xmlみたいなものにそれを書き込むのではなく、リクエストとController、テーブルとModelなどが規約通りに命名されていれば勝手に繋がってくれる。

それがあるので「10分で簡単なアプリケーションが出来る」とかいう「売り文句としては上等な」長所を実現できたりする。

「手軽に出来る」こともあるが「手軽にソースを追える」メリットも大きい。URLからrewriteを見て、web.xmlやら何やらを見て、Actionを見つけて、という手間が省けるし、自動生成の雛形から物を作るという経路を皆が経験すれば、誰もが似た構成のアプリケーションを作るようになる。


インストールはgemsで簡単に行える。その前に、「ruby」、「RubyGems」、「sqlite」等のインストールを済ませておく必要はあるが。

上記の代物が入っていれば、あとはsqliteとrubyの連結をする、sqlite3-rubyを入れ、
$ gem install sqlite3-ruby

railsを入れ
$ gem install rails

これだけでインストールは終了する。


アプリケーションの作成は、以下のコマンドで出来る
$ rails appName
appNameは任意で決めるアプリケーション名

出来上がったディレクトリに中に移動
$ cd appName

とりあえずhogeという名前の雛形を作ってみる
$ script/generate scaffold hoge str1:string str2:string

で、出来上がった雛形からテーブルとかを勝手に作ってもらう
$ rake db:migrate

サーバを起動する
$ script/server

これでDBの値を触れるアプリケーションが出来上がる
名前は指定したhogeにsを付けたものになる。
http://localhost:3000/hoges


DBの内容を見たい時は、こんな感じ
$ script/dbconsole
$ .tables
hogesというテーブルが出来ているのがわかる。「scaffold hoge」みたいに作って「db:migrate」すると、hogesテーブルが出来るわけだ。


自分はWEBアプリケーションとしてではなく、DBを触るスクリプトを気軽に作りたいという目的でRailsを入れているので、サーバ起動とかはせずにコンソールから使う。


以下のコマンドで、Railsを使ってるものを読み込んだ状態でirbを起動できる
$ script/console

起動したら、試しにDBに値をINSERTするプログラムを書いてみる
$ hoge = Hoge.new
Hogeクラスは、hogesテーブルに対応するActiveRecord

こんな感じでテーブルへのINSERTが出来る
$ hoge.str1 = "string1"
$ hoge.str2 = "string2"
$ hoge.save

閲覧はこんな感じ
$ list = Hoge.find(:all)
$ list.each do | hoge |
$   p hoge.str1
$ end

ファイルから実行したい場合は、hoge.rbか何かを作って
$ script/runner hoge.rb
とすれば、script/consoleで打った時と似たような状態でスクリプトを実行できる。


このように、WEBアプリケーションだけでなく、ちょっとしたスクリプトを書く際にもDBへの接続やら何やらを考える手間が省ける。

とても良いのだが、個人的にRubyがあまり好きではないので(endという文字と、引数無しの関数に括弧を付けなくても良い辺りが今ひとつ)、やっぱDjangoかなぁと思いつつ、しかし日本語を扱う上ではやはりRubyの方が何かと便利な気がする。