RailsによるアジャイルWebアプリケーション開発第8章
この章で結構DBを扱うわけですが、productsテーブルの時はscaffoldでDBも一緒に作ったので、後から作るのは初めて。
手順は、
ruby script/generate migration create_line_items
でmaigrationファイルの雛形を作る。
db/migrate/20081214092439_create_line_items.rb
が作成される(ファイル頭の数字は作成時刻が付く)
この定義ファイルを以下のように編集。
class CreateLineItems < ActiveRecord::Migration def self.up create_table :products,:force => true do |t| t.integer :product_id t.integer :quantity t.decimal :unit_price end end def self.down drop_table :products end end
書き方はこちらを参考。
idのカラムは自動的に付きます。終わったら
rake db:migrate
で更新する。注意するのは、またDBの変更が必要な時はさきほど作ったcreate_line_itemsを編集してrake db:migarateするのではなく、一度 ruby script/generate migration ファイル名 で新しいマイグレーションファイルを作って編集してから、rakeをするということです。
なんだか回りくどい気が...システムを運用していく時に役立つんでしょうかね。
RailsによるアジャイルWebアプリケーション開発第7章まで
7章は問題なく終了。
前回の日記に書けば良かったが、ビューの拡張子がrhtmlからhtml.erbになっている。
scaffoldではhtml.erbが生成されるがrhtmlも使えるらしい。
このテンプレートファイルの拡張子についてはこちらを参考。
あとスタイルシートを自分で書くのはだるいのでソースをダウンロードしようとしたらアドレスが変わっていた。
http://www.oiax.jp/rails/rails2/erb.html
ここまで来て思ったのは、以前phpでsmartyっていうテンプレートエンジンを使ったことがあるが、それはビューとシステムを分けるためのものだった。
確かに、ビューとシステムを分けるのはメリットが感じられた。
railsではMVCモデルを使っているけど、MとCを分けるメリットって何なんだろうか?
デバックやメンテナンスが楽になるとは聞くがまだあまり体験できていない。
この本を読み終えるころには理解できてるのだろうか。
RailsによるアジャイルWebアプリケーション開発第6章まで
とりあえず5章までは何の問題もなく終了。
しかし6章でおもいっきりつまづいた。
$ruby script/generate scaffold product admin exists app/models/ exists app/controllers/ exists app/helpers/ exists app/views/products exists app/views/layouts/ exists test/functional/ exists test/unit/ wrong number of arguments (1 for 2)
調べてみたらこんな記事が見つかった
scaffoldがwrong number of arguments (1 for 2)でエラーになる
んー、今の僕の症状とぴったりですね。
ようするにrails1.2とrails2では使用が違うということですね。
それで日記の続きにあるようにやってみました。
最初から書くと、
プロジェクト作成 $ rails depot create create app/controllers ... $ cd depot scaffoldで生成 $ ruby script/generate scaffold product title:string description:text image_url:string price:decimal データベース作成 $ rake db:migrate $ ruby script/server
といった感じで
http://localhost:3000/products
に正しく表示されるようになりました。
ちなみにrails1.2ではデータベーステーブルを作ってからscaffoldする必要がありましたが、rails2ではscaffoldする時にデータベースの定義ファイルを作ってくれるので、先にscaffoldしてからrakeします。
本ではMySQLを使ってますが、rails2ではデフォルトのデータベースがSQLiteになったということでここではSQLiteでの方法を紹介しました。
rails2.2.2が正しくインストールされてる状態から上記の手順を踏めばうまく表示できるはずです。
なんかid:taka_2さんの日記とほとんど同じ内容になってしまった(笑
railsのバージョンでこんなに仕様が違うとは...
前途多難です。
RailsによるアジャイルWebアプリケーション開発
![RailsによるアジャイルWebアプリケーション開発 第2版 RailsによるアジャイルWebアプリケーション開発 第2版](https://images-fe.ssl-images-amazon.com/images/I/51Y%2BviLzM5L._SL160_.jpg)
RailsによるアジャイルWebアプリケーション開発 第2版
- 作者: Dave Thomas,David Heinemeier Hansson,Leon Breedt,Mike Clark,Andreas Schwarz,James Duncan Davidson,Justin Gehtland,前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2007/10/26
- メディア: 大型本
- 購入: 18人 クリック: 300回
- この商品を含むブログ (134件) を見る
ruby on rails勉強中です。
オライリーの「初めてのruby」を一通り読み終えてrailsの勉強に入っていきます。
この「RailsによるアジャイルWebアプリケーション開発」の方針はオンラインショッピングサイトを作りながら学べるということで、何か作っていきながらの勉強じゃないとモチベーションが続かない僕にピッタリです。
第二版も出てますが、高かったので中古で安くなってた第一版を買いました。
開発環境は、macbook,Max OS X 10.5.5,ruby 1.8.6,Rails 2.2.2、carbon emacsで行きます。
はてなダイアリーを始めてみる。
ここ以外にもブログ書いてるんですが、そっちにはプログラムのコード書いたりしにくいということで、こっちはエンジニアとしての日記を書いて行こうと思います。
つくばの居酒屋検索サイト「ツクのみ」開発者ブログもやってます。