この記事の目的
・現在、Railsチュートリアルを学習しています。Railsチュートリアルで理解したことをアウトプットすることにより理解を深め、のちに行うアプリケーション開発に役立てていきたいと考えています。また、私みたいな初学者の方との情報共有になればと思います。 ※Git Github Herokuの扱い方などはまた別にまとめてみようと思います。3.1セットアップ
・新しくRailsプロジェクトを作成する ※手順がわかりやすいように番号をつけてまとめてみました。 *** 1 サンプルアプリケーションを生成する。$ rails _6.0.3_ new sample_app
$ cd sample_app/
2 Gemfileを編集、gemをインストール
$ bundle _2.2.17_ config set --local without 'production'
$ bundle _2.2.17_ install
3 Yarnを使ってWebpackerをインストール
$ rails webpacker:install
4 Hello Worldを出力してみる。 動くかどうか確認 application_controllerにhelloアクションを追加 + ルーティングの設定
def hello
render html: "hello, world!"
end
root 'application#hello'
3.2静的なページ
・Railsのアクションやビューを使って静的なHTMLのみのページを作成し、その後、静的なページを動的なページに作り変える。 *** StaticPagesコントローラを生成する$ rails generate controller StaticPages home help
:::メモ
$ rails generate controller コントローラー名(複数形の名前にする) アクション名
コントローラーの作成と同時にアクションも生成できる
:::
config/roures.rbにhomeアクションとhelpアクションが定義される
Rails.application.routes.draw do
get 'static_pages/home'
get 'static_pages/help'
end
StaticPages内にhomeアクションを追加したため、/static_pages/homeにアクセスすることでページを取得(GET)することができる。
$ rails s
生成されたStaticPagesコントローラー
コントローラー生成時に自動的にhomeアクションとhelpアクションに対応したview(views/static_pages/)も生成される
class StaticPagesController < ApplicationController
def home
end
def help
end
end
HomeページのHTMLを修正するとHelpページのHTMLを修正して終了。
3.3最初のテスト
Aboutページを作成しその際、テストを作成する。また、何らかの変更を行う際は常に『自動化テスト』を作成する習慣を身につける。テストをしっかりと行っていればバグが出た時にも対処しやすくなる。 *** rails generate controllerを実行した時に生成されたテストを確認してみましょうrequire 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
test "should get home" do
get static_pages_home_url
assert_response :success
end
test "should get help" do
get static_pages_help_url
assert_response :success
end
end
下のテストはHomeページのテスト。GETリクエストをhomeアクションに対して発行(=送信)せよ。そうすれば、リクエストに対するレスポンスは[成功]になるはず という意味になる。
test "should get home" do
get static_pages_home_url
assert_response :success
end
テストを実行し、成功するのを確認
$ rails db:migrate # システムによっては必要
$ rails test
2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
Aboutページのテストを書く
test "should get about" do
get static_pages_about_url
assert_response :success
end
rails tをするとエラーになる
エラーメッセージを確認する。メッセージによると「AboutページへのURLが見つからない」
$ rails test
NameError: undefined local variable or method `static_pages_about_url'
about用のルートを追加する。
get 'static_pages/about'
rails tをするとエラーになる
エラーメッセージを確認する。メッセージによると「StaticPagesコントローラにaboutアクションがない」
$ rails test
AbstractController::ActionNotFound:
The action 'about' could not be found for StaticPagesController
aboutアクションを追加する。
def about
end
rails tをするとエラーになる
エラーメッセージを確認する。メッセージによると「テンプレートがない」
$ rails test
ActionController::UnknownFormat: StaticPagesController#about
is missing a template for this request format and variant.
about.html.erbを追加し、編集
$ touch app/views/static_pages/about.html.erb
rails t するとGREENになる
$ rails test
3 tests, 3 assertions, 0 failures, 0 errors, 0 skips