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とか作ったりする必要ないのかな?