ホーム DoRuby Scaffoldはどこからくるの? 前編

Scaffoldはどこからくるの? 前編

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJのエンジニアの高瀬です。

今回、ruby on railsに関する技術コラムを書くと言う事で、
scaffoldでプログラムを作ってみて、またそのプログラムは

どの様にして作られているか解説します。

Scaffoldってそもそも何?
最近のアプリケーション(特にWeb)は、アプリケーションのデータを

DB上で管理する事が多くなっていますが、

そういったDB上のテーブルを操作するプログラムを作りたい場合に、

基本的なテンプレートを提供してくれるのがscaffoldです。

scaffoldを使うと、簡単なアプリケーションがそれこそ10分で

出来上がるので、かなり重宝します。

 実際にScaffoldで作ってみる。
まず、Scaffoldを使ってアプリケーションを作ってみます。

最初に、railsでscaffold_testプロジェクトを作ってみましょう。

コマンドプロンプト上で、

rails scaffold_test
と入力してみてください。(>は入力しなくて良いです。)

大量に[ create ~~]と出てきたと思います。

今後は、このプロジェクト上で作業を行うので、

cd scaffold_test


で、カレントディレクトリを移動しておいてください。

 

次に、scaffold_testプロジェクト内でscaffoldを作ってみます。

扱うテーブルを決める必要がありますので、とりあえずメンバー管理として、

Memberモデルをつくり、名前(name)と説明(discription)と誕生日(birthday)だけ管理しましょう。

 ruby script/generate scaffold Member name:string discription:text birthday:datetime

これで、scaffoldの土台は出来ました。

ですが、肝心のdbがないので、 DBを作成します。

rails 2.0から、db:createが出来たので、そのコマンドを使います。rake db:create

(ここでは、DBの作成方法のエラーが出た場合や、1.x系の話は割愛します)

DBが出来たら、scaffoldで作成されたmigrationファイルからテーブルを作成します。

rake db:migrate

これでテーブルが出来たのでサーバーを立ち上げて、

プログラムにアクセスしてみましょう。

ruby script/server

を実行し、 下記のURLにアクセスしてください。

http://localhost:3000/members

「Listing members」と表示されるページにアクセスできると思います。

これで、New memberと表示されているリンクをクリックすると

メンバーが登録できます。

これだけで簡単なメンバー管理システムの出来上がりです。

scaffoldのソースを見てみる。


途中で実行した

ruby script/generate scaffold Member name:string discription:text birthday:datetime

で、管理する項目や、項目の属性を指定しているのですが、

今のプロジェクトのソースを見てみましょう。

scaffold_test フォルダの下にある、

app/controllers/members_controller.rbを何かのテキストエディタで

開いてみてください。

自分が書いた覚えのないプログラムが存在していると思います。

実は、ruby script/generateコマンドを実行した時、

      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/members
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
      create  app/views/members/index.html.erb
      create  app/views/members/show.html.erb
      create  app/views/members/new.html.erb
      create  app/views/members/edit.html.erb
      create  app/views/layouts/members.html.erb
      create  public/stylesheets/scaffold.css
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/member.rb
      create    test/unit/member_test.rb
      create    test/fixtures/members.yml
      create    db/migrate
      create    db/migrate/001_create_members.rb
      create  app/controllers/members_controller.rb
      create  test/functional/members_controller_test.rb
      create  app/helpers/members_helper.rb
       route  map.resources :members
 と、大量にメッセージが出たと思いますが、ここで、createと出ている行は、railsが自動で

ソースコードを作ってくれています。      create  app/views/members
      create  app/views/members/index.html.erb
      create  app/views/members/show.html.erb
      create  app/views/members/new.html.erb
      create  app/views/members/edit.html.erb
      create  app/views/layouts/members.html.erb
      create  public/stylesheets/scaffold.css
      create    app/models/member.rb
      create    test/unit/member_test.rb
      create    test/fixtures/members.yml
      create    db/migrate
      create    db/migrate/001_create_members.rb
      create  app/controllers/members_controller.rb
      create  test/functional/members_controller_test.rb
      create  app/helpers/members_helper.rb

 というわけで、次回はこのコードがどの様にして作られているか、解説して行きたいと思います。

記事を共有
モバイルバージョンを終了