**10分間で作るRailsアプリケーションをInstant Rails環境で試す**
"PythonのフレームワークTurboGears":http://lightson.dip.jp/blog/seko/1191はいかがですか?
"10分間で作るRailsアプリ":http://www.masuidrive.jp/rails/という記事がSoftware Design12月号(以後、本と記す)に載っていた。 リンクの内容をバージョンアップしたものらしい。
ここでは、その内容をInstant Railsを使って再現してみる。
**何のために行うのか**
ものごとは、やってみなければわからないことが多い。しかし、とっかかりが大変そうで、何もしないということが多いのが現実だ。
Instant Railsや10分間で作るRailsアプリはそうした障壁を下げ、多くの人にRailsのよさを知ってもらいたいと思って作っているのだと思われる。
そこで、その二つを組み合わせて、興味を持った人がまず始められるようにしたいと思う。
**Instat Railsのインストール方法**
インストール方法はこちら。ほとんどダウンロードして解凍するだけだ。
http://lightson.dip.jp/zope/ZWiki/RubyonRails
インストールされる内容は
**Instanat Railsの起動**
Instant Railsをインストールしたディレクトリにいって、InstanRails.exeをダブルクリックする。
次のように信号が緑になったらOK。

**プロジェクトを始める**
Iマークのところから、Rails Applications-Opne Ruby Console windowを選ぶ。
DOSボックスが開くので、そこに
>rails bookmark
と打ち込む。しばらくすると、雛形となるファイルが生成される結果が画面を流れる。
**データベースを準備する**
C:\Ruby\InstantRails?\rails_apps\bookmark\config\database.ymlをメモ帳で開く。(自分のインストールしたディレクトリに読み替えること)
development: adapter: mysql database: bookmark_development username: root password: socket: /path/to/your/mysql.sock
注意:
最初は、本にあるようにこのブロックのdatabase: bookmark_developmentをdatabase: bookmarkにして保存して、データベースbookmarkを作ったのだが、それだと最後にURLにアクセスしたときにbookmark_developmentがありませんと出てしまった。ひょっとしたら、私の手順のミスの可能性もあるが、私の場合は、このファイルに手を加えずに、作るデータベース名をbookmark_developmentとしたらうまくいった。
IマークからConfigure-Database(via PhpMyAdmin?)を選ぶと、何だか文字コード(UTF-8)関係のエラーが出る。
そこで、次の設定ファイルを変更する。(自分のインストールしたディレクトリに読み替えること)
C:\Ruby\InstantRails?\phpmyadmin\lang\japanese-utf-8.inc.php
しかし、このファイルをWinowsのメモ帳で開くと、漢字は正しく表示されるのに、改行を無視してずらずらつながってしまう。
仕方ないので、私はTeraPad?を用いて修正した。 今後、UTF-8のコードが使えるエディタが必要なることことも多いと思われるので準備しておこう。
直すところは、$charset = 'UTF-8';を$charset = 'utf-8';と小文字にして上書き保存。私は、ここで'uft-8'と誤って書いてしまい、8時間くらい無駄にする。"自分は正しい、わかったつもり":http://lightson.dip.jp/blog/seko/445という思い込みがまた出てしまった。
変更後、IマークからConfigure-Database(via PhpMyAdmin?)を選ぶと次のような画面がでる。
赤字でセキュリティホールを塞げと出ているが、その下の英語の解説で、Insant Railsではlocalhostからしか実行できないように設定されているので無視するように書いてあるので、何もしない。
**テーブルを定義する**
図のように新しいDBを作成しますのところに「bookmark_development」と入れて作成をクリック。
注意: 図では、bookmarkとなっているが、私の場合は最初にdatabase.ymlの中をbookmarkに直した上で、ここでbookmarkという名のDBを作ったのだが、それだとURLにアクセスしたときに、bookmark_developmentがないというエラーになった。 そこで、database.ymlはそのままに、DB名をbookmark_developmentとしたらうまくいった。

次の画面に、items,4と入力して実行。

出たきた画面につぎのように入力して保存をクリック。照会順序とは何か分からないので、適当にいれた。 idは主キーのところにチェックをいれた。

すると、つぎのような結果がでる。実行されたSQLは本に書いてあるものよりオプションが多かったようだ。 textに勝手に照会順序がついたが、多分問題ないだろう。

これで、必要なテーブルがデータベースに登録されたと信じたい。
注:phpmyadminを使って、DBを作り、そこからSQLを発行してテーブルを作るという方法もある。 その場合、本にはないprimary keyを記述しないとエラーになった。
CREATE TABLE items ( id integer primary key auto_increment, url VARCHAR(255), title VARCHAR(255), description TEXT);
**モデルの作成**
IマークからRailsApplication-Open Ruby Console Windowを選ぶと、DOSボックスが開く。
次の2行を打ち込むと C:\Ruby\InstantRails\rails_apps>cd bookmarkC:\Ruby\InstantRails\rails_apps\bookmark>ruby script/generate model Item しばらくして、こんなメッセージがでる。 exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/item.rb create test/unit/item_test.rb create test/fixtures/items.yml
C:\Ruby\InstantRails\rails_apps\bookmark>
C:\Ruby\InstantRails?\rails_apps\bookmark\app\models\item.rbがモデル定義(それ何?)なので、メモ帳を開いて確認してみる。 次の2行が書いてあるはず。Railsでは、規約でモデル名に対するファイル名やクラス名が決まっているので、こんなに簡単な定義で済むらしい。
class Item < ActiveRecord::Base end
**コントローラの作成**
次にこのモデルを操作するコントローラを作る。これもジェネレータで自動生成する。 さきほどから開いているDOSボックスに次の様にうちこむ。
C:\Ruby\InstantRails\rails_apps\bookmark>ruby script/generate controller Item
しばらくするとこんなメッセージ。
exists app/controllers/
exists app/helpers/
create app/views/item
exists test/functional/
create app/controllers/item_controller.rb
create test/functional/item_controller_test.rb
create app/helpers/item_helper.rb
C:\Ruby\InstantRails\rails_apps\bookmark>
C:\Ruby\InstantRails?\rails_apps\bookmark\app\controllers\item_controller.rbに定義されたのメモ帳で開いてみる。
class ItemController < ApplicationController endとなっているはず。ここでコントローラの動きをみるために次にように書き換えて保存。(何をやっているのだかさっぱり?)
class ItemController < ApplicationController
def test
render :text => hello rails
end
end
IマークからRailsApplication-Manage Rails Applicationを開き、bookmarkにチェックをいれ、start with WEBrick?をクリック。
注:この操作をしなくて見えるような気がしてきた。

ブラウザで、http://localhost:3000/item/testを見ると、hello railsの文字が見える。
本当は、Apacheを使いポート80で動かしたい。 SCGIのconfigurationのところを読むと、アプリケーションごとにApacheのVirtualHostを書かなくてはならないようだ。 とりあえず、今回はパス。
**一行で作るアプリケーション**
C:\Ruby\InstantRails?\rails_apps\bookmark\app\controllers\item_controller.rbをメモ帳でもう一度開き、次の様に書き換える
class ItemController < ApplicationController scaffold :item end
これで、http://localhost:3000/item/にアクセスすると無事DBにつながって追加ができる。

ここから先は本と同じのはず。
続きは、BookmarkOnInstantRails2で。