第2章お疲れさまでした。
またここから始められる方、共にがんばりましょう。
※不要と思われる箇所は飛ばしてます。きになる方はサイトを御覧ください
※前回の記事で記載ある重複しているものも飛ばしてます。
前提条件と用意するもの
PC ※タブレットでも動作はするみたいですがPCにしましょう
cloud9のアカウント
→こちらはgithubのアカウントをお持ちであればすぐに作成できます
手を動かし続けれる方
以上です
早速ですが第三章を始めます
1.cloud9にてworspaceを作成してください
作成したのちrails new sample_app
を実行してください
※今回のプロジェクトはsample_appとします
2.Gemfileの編集
使用するgemを追記していきます。最終的には下記のようなGemfileにしてください
※のちのち説明が入るので記載内容の説明は、省かせていただきます
※バージョンも合わせていただけたらと思います(動作確認済みのバージョンとなりますので)
3.お決まりのコマンド
では、Gemfileを編集したので、その後は必ず下記コマンドを実行します
bundle update
※不要な場合もあります
bundle install
4.ではgithubにpushしましょう
新たにrepositoryを作成し、そこにpushを行います
終わりましたら作業用のbranchを作成し切り替えを行ってください
5.controllerの作成を行います
前回は、コードジェネレーター(コード自動生成機能)を使用しましたが今回は下記コマンドを実行してください
rails g controller StaticPage home help
5−1.ここでスペル間違い等何かしらの間違いをしてしまった場合
rails destroy controller名
※同じくmodelの作成でも機能いたします
6.ひとまずサーバを立ち上げてみる
rails s -p $PORT -b $IP
上記コマンド実行後に表示されるポップアップのURLをクリックしアクセスしURLの末尾に/static_page/homeと入れてください
下記画像のように表示がされるかと思います。
7.ではviewのファイルの編集をします
app/views/home.html.erb
<h1>Sample App</h1>
<p>This is the home page for the
<a href="http://www.railstutorial.org">Ruby on RailsTutorial</a>
sample application.
</p>
app/views/help.html.erb
<h1>Sample App</h1>
<p>Get help on the Ruby on Rails Tutorial at the
<a href="http://railstutorial.jp/help">Rails Tutorial help section</a>.
To get help on this sample app,see the
<a href="http://railstutorial.jp"><em>Ruby on RailsTutorialRailsTutorial</em>book.</a>
</p>
※画面はリロードすれば確認ができるかと思います
8.ここからはテスト駆動開発に少し触れつつ学んでいきます
開発に関してもそうですが、個人で何か作る際も最低限のテストが大切になってきます。
かつ以下にあるものは、画面にも出てくるようなエラー内容になってます。
こういったエラーとひたすら向き合うのもエンジニアとしてスタートした最初は大切になってきますので心が折れないようにがんばりましょう。
~/workspace/sample_app(branch名)$ls test/controllers
上記コマンド実行後
static_pages_controller_test.rb
と表示されれば問題ありません
8−1.先ほど確認が取れたファイルの中を見てみる
以下のような記述が書かれているかと思われます
test "should get home" do
get :home
assert_response :success
end
testメソッドが内がtestの内容となります
getリクエストをhome(action)に対して発行(発信)すれば、リクエストに対し問題なくレスがあればassert_responseの右にあるsuccessが表示されるという処理になります
8−2.テストを行ってみる
rake test
上記コマンド実行後に以下のような返答があれば問題ない
Run options: --seed 12354
Running:
Finished in 0.312928s, 6.3913 runs/s, 6.3913 assertions/s.
2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
この状態をGREENと呼びます
見ていただくとわかると思うのですが、0 failures, 0 errorsとありますこれは、testに引っかかった箇所がないことを意味します
8−3.異常ケースの確認
まず最初にapp側にないactionの記述をtest側のcontrollerに記述する
test "should get help" do
get :help
assert_response :success
end
test "should get about" do#以下を追記
get :about
assert_response :success
end
上記のように記述を加えたら以下コマンドを実行
rake test
返答が以下のようなものが返ってくることが確認できる
1) Error:
StaticPagesControllerTest#test_should_get_about:
ActionController::UrlGenerationError: No route matches {:action=>"about", :controller=>"static_pages"}
test/controllers/static_pages_controller_test.rb:15:in `block in class:StaticPagesControllerTest'
3 runs, 2 assertions, 0 failures, 1 errors, 0 skips
先ほどと違いerrorsが1になっているのがわかると思います
これが異常ケース=REDという言い方をします
8−4.結果をもとに修正を行っていきます
No route matchesと書かれている(赤字の箇所※こちらで色を付けてます)
→routeと一致してないよという認識で大丈夫です
ではrouteを追記してみます。config/routes.rbに以下を追記
get 'static_pages/about'
再度テストを実行します。rake test
〜略〜
AbstractController::ActionNotFound: The action 'about' could not be found for StaticPagesController
〜略〜
error内容が変わったのが確認できましたでしょうか?
次はaboutというactionが見当たらないよって怒られています
8-5.では、app/controller/static_pages_controller.rbを編集します
def about
end
を追記します。※中の処理は空で問題ないです
再度テストを実行します rake test