Ruby on Railsの勉強 -RailsTutorial 第2章-

第2章Toyアプリケーション

第2章ではscaffoldというジェネレータの説明と、それを使用したRailsのWebプログラミングの概要が学べる。

Railsアプリケーションの作成

1章と同じようにRailsアプリケーションの作成から。

rails new アプリケーション名(任意)

Gemfile

チュートリアルの通り適当にGemfileを修正してgemのインストールを実施。

bundle install --without production

Gemfileには各環境(開発環境、本番環境等)毎にインストールするライブラリを分けることができ、--withoutオプションで指定したグループのライブラリをスキップすることが可能。

ルーティング
Railsアプリケーションが受け付けるリクエストを定義。また、リクエストに対応するコントローラのアクションに紐づけるための定義ファイル。

“コントローラ名”#“アクション名"のルールで任意のコントローラ、アクションへの紐付けが可能になる。

# config/routes.rb
Rails.application.routes.draw do
  # コンテキストルートへのリクエストは ApplicationController.main が処理を受け付ける
  root 'application#main'

  # '/about'へのリクエストは ApplicationController.about が処理を受け付ける
  get '/about',     to: 'application#about'
end

コントローラ
その他の通りコントローラ。上記ルーティングを例にすると次のようになる。

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base

  def main
  end

  def about
  end
end

Git / Heroku
その後はGit(Bitbucket)へコミットしてから、Herokuへデプロイして準備完了。

# Gitにコミット
git commit -am "add 'hello, world'"

# Herokuに新規アプリケーションを作成してアプリをデプロイ
heroku create
git push heroku master

rails generate
rails generateを使用するとモデルやコントローラ等、様々なテンプレートを自動生成することができる。チュートリアルではrails generate scaffoldを使用した。

scaffoldを使用すると、登録、編集、削除、一覧表示を行うために必要なリソース(コントローラ、モデル、ビュー、マイグレーション等の全部入り)が自動生成される。

# Userテーブルに対して登録、編集、削除、一覧ができるアプリケーションテンプレートを作成
rails generate scaffold User name:String age:integer

rails db:migrate
具体的な仕組みはまだ理解できていないけども、マイグレーションファイルに基づいてDBの構築まで実施してくれる。

# rails generate scaffoldでテンプレート作成実施
rails generate scaffold User name:String age:integer

# データベースのマイグレーションを行う
rails db:migrate

上記の例では'name'と'age'のカラムを持った'User'テーブルの自動生成が行われる。


適当にgenerateするだけですぐに動くものが作れる気軽さにびっくり。DBへのマイグレーションの非常に簡単だった。せこせこDDLとか作ったりする必要ないのかな?