はじめに
最低限の動きをする新規アプリケーション作成のワークフローをまとめようと思います。
新規アプリケーション作成時の作業
大まかな作業は次のようになります。
- 新規アプリケーションの土台を作る
- モデルの準備
- コントローラの準備
- ルーティングの定義
- ビューの準備
- モデル、ビュー、コントローラの連携
それでは、各作業について細かく見ていきます。
新規アプリケーションの土台を作る
新規アプリケーションの作成
土台となるスケルトンを作成します。
ターミナルにて次のコマンドを実行します。
rails new fruitapp
fruitappは新規作成するアプリケーションの名前となります。
また、Railsのバージョンやデータベースの種類を指定したい場合はこの時点で指定します。
「Railsのバージョンが4.0.5」で「データベースがMySQL」の場合は次のようにコマンドを実行します。
rails _4.0.5_ new fruitapp -d mysql
データベースを作成する
ターミナルにて次のコマンドを実行します。
rake db:create
HTTPサーバを起動する
Railsには、WEBrickというHTTPサーバを利用できるライブラリが用意されています。
WEBrickサーバを起動するには、アプリケーションルートの配下にて次のコマンドを実行します。
rails s
「rails」の後に続く「s」は、「server」の略です。
「rails server」でも同じ結果となります。
サーバを停止する場合は、ターミナルにて「control + C」を入力します。
アプリケーションにアクセスする
WEBrickを起動したら、ブラウザに次のURLを入力しアクセスします。
http://localhost:3000/

デフォルトのRailsのページが表示されていれば、正しく動作しています。
ここまでで新規アプリケーションの土台づくりが終わりました。
モデルの準備
モデルクラスの作成
データベースにアクセスするためのモデルクラスを作成します。
ターミナルにて次のコマンドを実行します。
rails g model fruit name:string
「fruit」の部分はモデル名となります。
「name:string」はフィールド名とデータ型を定義しています。
コマンドを実行すると以下のファイルが作成されます。
- fruit.rb → モデルクラス
- 20190810224816_create_fruits.rb → マイグレーションファイル
- fruits.yml → フィクスチャファイル
- fruit_test.rb → モデルクラスのテスト用ファイル
この時点ではまだテーブルの作成は終わっていません。
railsではテーブルの作成や更新をする場合、マイグレーションという仕組みを使います。
「rails g model fruit name:string」コマンドによって「db/migrate」フォルダに作成された
マイグレーションファイルを使います。
マイグレーションファイルの構造
作成されたマイグレーションファイルは次のようになります。
class CreateFruits < ActiveRecord::Migration[5.2]
def change
create_table :fruits do |t|
t.string :name
t.timestamps
end
end
end
「create_table :fruits」は作成するテーブル名を定義しています。
「t.string :name」はデータ型とカラム名を定義しています。
マイグレーションファイルを書き換えることにより、作成するテーブルを修正することができます。
class CreateFruits < ActiveRecord::Migration[5.2]
def change
create_table :fruits do |t|
t.string :name
t.integer :price # 追加
t.timestamps
end
end
end
マイグレーションの実行
ターミナルにて次のコマンドを実行します。
rake db:migrate
コマンドを実行すると、マイグレーションファイルの通りにテーブルが作成されます。
id | name | price | create_at | update_at |
---|---|---|---|---|
※レコードはまだ入っていません | ||||
ここまででモデルの準備が終わりました。 |
コントローラの準備
コントローラクラスの作成
ターミナルにて次のコマンドを実行します。
rails g controller fruits
「rails」の後に続く「g」は、「generate」の略です。
「rails generate controller fruits」でも同じ結果となります。
また、「fruits」の部分はコントローラ名となります。
実行後、app/controllersフォルダにfruits_controller.rbファイルが作成されます。
class FruitsController < ApplicationController
end
コントローラクラスにアクションを定義する
アクションとは、クライアントからのリクエストに対して実行するメソッドです。
コントローラには複数のアクションを定義できます。
コントローラにindexアクションを定義する場合、次のように記述します。
class FruitsController < ApplicationController
def index
end
end
ここまででコントローラの準備が終わりました。
ルーティングの定義
ルーティングとは、クライアントからのリクエストに応じて呼び出すコントローラとアクションを決定します。
ルーティングは、「/config/routes.rb」ファイルに定義します。
Rails.application.routes.draw do
get 'fruits' => 'fruits#index'
end
上記の場合、「/fruits」が末尾に付くリクエストに対し、fruitssコントローラのindexアクションを呼び出すと定義しています。
ビューの準備
ビューの基礎
ビューとはクライアントに返されるERBテンプレートのことです。
テンプレートにはHTMLにRubyのコードを埋め込むように記述されます。
<h1>テスト</h1>
テンプレートは「/app/views」フォルダに、「コントローラ名/アクション名.html.erb」というファイル名で保存します。
今回はapplesコントローラのindexアクションに対応したテンプレートなため、構成は
「/app/views/fruits/index.html.erb」としています。
ここまででビューの準備が終わりました。
モデル、ビュー、コントローラの連携
コントローラとモデルの連携
データベース操作をする場合、コントローラのアクションにてモデルクラスのメソッドを用いることで実現できます。
class FruitsController < ApplicationController
def index
fruit = Fruit.find(1)
end
end
Fruitモデルクラスより、fruitsテーブルのidが1のレコードを取得し、
変数fruitに代入しています。
これでコントローラとモデルの連携が終わりました。
コントローラとビューの連携
テンプレート変数を用いることで、アクションとビューとでデータを受け渡すことが可能です。
テンプレート変数は、コントローラで「@テンプレート変数名 = 値」と定義します。
class FruitsController < ApplicationController
def index
@fruit = Fruit.find(1)
end
end
定義した@fruitは、ビューで「@fruit」と記述することで参照できます。
<%= @fruit.name %>
<%= @fruit.price %>

これでコントローラとビューの連携が終わりました。
おわりに
最低限の動きをする新規アプリケーション作成のワークフローをまとめました。
アプリケーション作成時はこのワークフローをもとにスムーズに作成できればと思います。