最近、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の方が何かと便利な気がする。