Ruby
Rails
RubyOnRails
Railsチュートリアル
Rails5

Ruby on Rails 第2章 チュートリアル やることリストと学んだこと

Rails5.1.4(第4版)でのRails tutorialの第2章のやることのリスト(要約)と学んだことを個人的にをまとめました。なにか、訂正や間違いがあればご指摘していただけると助かります。

scaffoldを使ってToyアプリケーションの作成

1.新規作成(下準備)
2.
3.
4.

1.新規作成(下準備)

第1章と同じ手順で

  • 新規アプリを作成して
bash
cd ~/environment
$ rails _5.1.4_ new toy_app
$ cd toy_app/

Gemfileを↓に書き換えて

Gemfile
  source 'https://rubygems.org'

gem 'rails',        '5.1.4'
gem 'puma',         '3.9.1'
gem 'sass-rails',   '5.0.6'
gem 'uglifier',     '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks',   '5.0.1'
gem 'jbuilder',     '2.7.0'

group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug',  '9.0.6', platform: :mri
end

group :development do
  gem 'web-console',           '3.5.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.0.2'
  gem 'spring-watcher-listen', '2.0.1'
end

group :production do
  gem 'pg', '0.20.0'
end

# Windows環境ではtzinfo-dataというgemを含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Gemパッケージをインストール(アップデート)

bash
$ bundle install --without production
[ $bundle update ]

toyアプリをバージョン管理下に置くためにローカルリポジトリを作成してcommit

bash
$ git init
$ git add -A
$ git commit -m "Initialize repository"

リモートリポジトリを作成してtoyアプリをpush

  • Bitbucketのサイトで [Create] ボタンをクリック
bash
$ git remote add origin git@bitbucket.org:<username>/toy_app.git
$ git push -u origin --all

前章と同じようにHello Worldを表示すりためにapplication_controller.rbとroutes.rbを変更し、変更をコミット

$ git commit -am "Add hello"

本番環境にデプロイにするためにHerokuサーバーにサンプルアプリケーションの実行場所を作成しpush

bash
$ heroku create
$ git push heroku master

下準備終わり

Ruby on Ralis チュートリアル

2 Scaffoldでアプリ作成

  • Usersリソースの作成
    • ユーザー用のデータモデルと、そのモデルを表示するためのWebインターフェイスを合わせてUsersリソ ースという。Usersリソースは、ユーザーというものを、HTTPプロトコル経由で自由に作成/取得/更新/削除できるオブジェクト。
    • scaffoldを使えば簡単にUsersリソースを作成することができる。
bash
$ rails generate scaffold User name:string email:string

- 新しいデータモデルでデータベースを更新する

bash
$ rails db:migrate
  • indexページ(/users)の仕組み image.png

resources :users というルーティングルールが追加される

routes.rb
Rails.application.routes.draw do
  resources :users
  root 'users#index'
end
  • usersリソースが提供するRESTfulなルート
    スクリーンショット 2018-05-05 7.07.14.png

  • scaffoldで生成されたUsersコントローラの骨格

users.controller
class UsersController < ApplicationController
  .
  .
  .
  def index
    .
    .
    .
  end

  def show
    .
    .
    .
  end

  def new
    .
    .
    .
  end

  def edit
    .
    .
    .
  end

  def create
    .
    .
    .
  end

  def update
    .
    .
    .
  end

  def destroy
    .
    .
    .
  end
end

index、show、new、editアクションはいずれもページを出力しているが、
create、update、destroyはページを出力せずにデータベース上のユーザー情報を操作する。

  • 継承

    • Controller controllers/users_controller.rbは
      Users_controller >> ApplicationController >> ActionController::Base を継承
    • Model models/user.rbは
      User >> ApplicationRecord >> ActiveRecord::Base を継承

3

4