さて、rubyを触り始めて2日目ですが、これまでの軌跡としてはこんな感じ。
rubyをEclipseで使ってみる
rubyをEclipseで使ってみる2
rubyをEclipseで使ってみる3
rubyをEclipseで使ってみる4
ということで、サンプルに沿ってやってたら頓挫した、という感じ。
で、このままおいとくのも根性ない感じですが、まあ、ここで踏ん張ることが最適とも思えなかったので一度仕切りなおしてみることにしました。
別のサンプルを探してたらいい感じのところがありました。
Ruby On Rails チュートリアル&MORE
参考にさせていただきます。
早速新しくプロジェクトを作成してみる。
と、ここで始めてしったんですけど、プロジェクト作成時に
Create a WEBrick server
Create a Mongrel server
という選択肢があると思うんですけど、これrubyでできたWEBサーバだそうで。Apacheとかのセットアップしてないのにどうして動くんだろう?Radrailsに組み込まれてるのかなーとか、思ってましたがそーゆーことなんですね。え?知ってるって?
とにかく作ります。「Todolist」と。
次に・・・お、前回のサンプルと違います。次はDBを作成します。rakeで作るんじゃなくて手で作ります。
rubyをEclipseで使ってみる3でセットアップしたInstant railsが役に立ちそう。
コマンドプロンプトで以下のとおりにやってみる。
===========
C:\InstantRails-2.0\mysql\bin>mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 71 to server version: 5.0.27-community
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
===========
入れた。
そのままDBとテーブルも作成
===========
mysql> CREATE DATABASE todolistdb;
Query OK, 1 row affected (0.13 sec)
mysql> USE todolistdb;
Database changed
mysql> CREATE TABLE todolists (
-> id SMALLINT (5) NOT NULL auto_increment,
-> subject VARCHAR (255),
-> content TEXT,
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.14 sec)
===========
お手本だと、ここでdatabase.ymlにrootのパスワードを記述するようになってるけど、とりあえずローセキュリティーの方向で。
で、次に・・・前回頓挫したscaffoldの作成です。
scaffold Todolist
でGo・・・今度はうまく生成されたっぽい。
サーバを再起動シロと書いてあるので再起動
Generatorsタブと同じならびになるServersタブを選んで(なければWindow>Show view>Other>Serversででる)再起動。
前回のプロジェクトは残したままなので今回はポート3001が割り当てられていた。
でブラウザでアクセス。。。うまくいかね。
あれーなんでだろう、と思って生成されたファイルの確認をしようとしたら、ない。
いろいろ探してたら、なんと前回のenqueteプロジェクトの方にできてた。よくよくGeneratorsタブの中を見てみると、左上のところに「Current Rails Project: enquete」ってなってた。うわ、そーゆーことかよ。
Generatorsタブの並びから少し外れたところにRと小さく添えられたフォルダアイコンっぽいプルダウンがあって、そこで変えられた。
再生成してもう一回トライ。
うまくいった!と思ったらエラーが変わってただけだった。
#42000Unknown database 'todolist_development'
うん、これはわかる。database.ymlを書き換えてもいいし、DBのほうを変えてもいいでしょう。今回は早いほうでdatabase.ymlを書き換えた。
サーバを再起動して再々トライ。
・・・出た!やったー!初rubyアプリでございます。
ってスゲー!ここまででコーディングこれっぽっちもしてない!
ちょっと物足りない気もするけど、まあ事始だから。
ここまでで、学んだことは
DBはmigrationするよか手で作ったほうがうまくいく。ということだろうか。。
というわけで、今日はここまで。
追記:(2008-05-19)
なお、このままだとどの画面でも動きはするけど、何もでてこない状態になってしまう。
scaffoldのときに
Todolist subject:string content:string
のようにやると、一覧で各要素のデータが表示されたりedit画面で編集領域がでてきたりと、よりそれっぽくなる。