※まとまりのない文章になってますがご容赦ください※
前回はrails以前のgem, rake, bundleについてと、
Railsインストール及びアプリケーション生成を行いました。
今回はその続きとして、パRails1章の後半にあたるscaffoldを使ったRails開発体験をしてみます。
scaffoldって何?
scaffoldの前にgenerateコマンドの確認
Railsにはgenerate
というサブコマンドがあります。
このコマンドは、Railsアプリケーションを構成するModelやView、Controllerといったものを生成することができるコマンドです。
これらのModel、View、Controllerは、Railsの基本概念として使用されている
MVCフレームワークの各要素です。
これは2章以降でまた出てくるので、その時に改めて調べます。
で、scaffoldって?
そもそものscaffoldの意味は、
(建築現場などの)足場、(ビルの窓をふく時に使うような)吊り足場、絞首台、断頭台、(絞首・断頭による)死刑、(野外の)組み立て舞台
『英和辞典 Weblio辞書』より
らしい。読みは「スカフォード」という感じ。
スカフォードと聞いて某戦争ゲームを思い出したり
rails generate scaffold
を使うと、前述のMVCをまとめて生成できます。
より具体的には、パーフェクトRuby on Railsによれば、
scaffoldでは指定したテーブルに対してのCRUD(Create, Read, Update, Delete)操作を行うMVCそれぞれのコードと、データベースのテーブル定義を行うmigrationファイルなどが生成されます。
とあります。
…あまり良いまとめ方が思い浮かばなかったので、
実際に使ってみて理解したほうが早そうです。
使ってみよう
$ ./bin/rails generate scaffold モデル名 content:text
とするだけです。簡単。ズラーっと色々なファイルが生成されます。
今回はパRailsの例に従い、"モデル名"の部分をtaskにします。
この場合、Taskがモデル名となり、tasksテーブルが出来上がります。
更に、モデル名の後にあるcontent:text
はテーブルのカラムを示しており、
カラム名がcontent、テキスト型のデータを格納するという意味になります。
content:text
の後にスペースを入れ、hoge:fuga
のような記述を追記していくことで、カラムを追加することができます。
モデル名が〜、カラムが〜と言っていますが、モデルに関するファイルだけでなく、
- app/controllers/tasks_controller.rb
- app/views/tasks/*.erb
- app/models/task.rb
など、MVCに関わるファイルがそれぞれ生成されています。
これらは、前述したようなCRUD操作を行うための、MVCそれぞれのファイルです。
詳しいことはまた2章以降になったときに改めて。
migrationファイル?
前節ではMVCファイルが作られると言いましたが、他にも作られているファイルがあります。
その中でも重要なファイルの一つに"migrationファイル"があります。
ちなみにmigrationは移住、移転といった意味の英単語です。
このファイルは
- db/migrate/******_create_tasks.rb
といったようなファイル名で存在しています。
このmigrationファイルは、パRailsによると、
Rubyのコードで書ける内部DSLになっています。このファイルにデータベース上のテーブルに対する操作を抽象化した処理を記述します。
とあります。 何を言っているのかよくわかりません。
内部DSLの話は置いといて、テーブルに対する操作を記述するものだということだけとりあえずおさえておきます。
このファイルをもとにテーブルが作成されます。実際に作ってみましょう。
以下のコマンドを打つとdbの生成とテーブルの生成が行えます。
$ ./bin/rake db:create
$ ./bin/rake db:migrate
これでtasksテーブルが作成されます。
ここまでの処理で、Railsアプリケーション内にscaffoldで生成されたひな形が動作するようになっています。
実際に
$ ./bin/rails s
でサーバを起動し、http://localhost:3000/tasks
にアクセスしてみましょう。
(ちなみに、rails s
はサーバの起動コマンドであるrails server
の省略形です。)
"Listing tasks"といくつかの文字列が書かれたページが表示されましたか?
表示されたら成功です。New TaskやEdit、Showなどといった操作をしてみましょう。
まとめ
scaffoldでRailsアプリに新しいモデルを追加することができました。
scaffordについてもう少し深掘りしてもいいのですが、
まず基本となるMVCについて知らなければ…ということで、
次回からは2章の「Ruby on RailsとMVC」を読んでいき、
RailsにおけるMVCモデルについて調べていきたいと思います。