kouの技術的メモ

学習した内容の定着やアウトプット用に開設しました

Railsチュートリアル4章

最初はテストの書き換え

HomeページのtitleでHomeが含まれていなければ成功というテストコードに変更する作業。

assert_select "title", "Home | Ruby on Rails Tutorial Sample App"の部分のHome | を抜き、

タイトルにRuby on Rails Tutorial Sample Appとだけ表示されればOKなテスト。

Home|Ruby on Rails Tutorial Sample App と表示されるとエラーが出る。

リスト 4.4: Homeページのタイトル確認用にテストを更新する
test/controllers/static_pages_controller_test.rb
 require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest
  test "should get home" do
    get static_pages_home_url
    assert_response :success
    assert_select "title", "Ruby on Rails Tutorial Sample App"
  end

なぜこれでエラーが出るか少し悩んだが、調べた所

assert_select "title", "Welcome" # titleタグの文字列が、「Welcome」と一致すれば成功。

assert_select "title", /Welcome/ # titleタグの文字列に、「Welcome」が含まれていれば成功。

だそうなので、 今回はassert_select "title", "Ruby on Rails Tutorial Sample App" と、""が使われているのでtitle部分が完全一致しないとエラーになってしまう書き方らしい。

次はruby

4.2.4 メソッドの定義 Rubyのメソッドには「暗黙の戻り値」がある。メソッド内で最後に評価された式の値が戻り値として自動的に返される。 つまり Return 戻り値 と書いてなくても最後に出した式や数値、文字が戻り値として返されるということ。

配列

a = [42, 8, 17]

の配列を取り出すときに、インデックスに-も使える。 a[-1]が最後から一番目(つまり17)、[a-2]が最後から2番め(つまり8)となる。

今回学んだことまとめ。

  • Rubyの世界では、すべてがオブジェクトであり、コントローラーやモデルなども幾重の継承によって作られている。
  • Rubyは文字列を扱うためのメソッドを多数持っている
  • Rubyではdefというキーワードを使ってメソッドを定義する
  • Rubyではclassというキーワードを使ってクラスを定義する
  • Railsのビューでは、静的HTMLの他にERB (埋め込みRuby: Embedded RuBy) も使える
  • Rubyの組み込みクラスには配列、範囲、ハッシュなどがある
  • Rubyのブロックは (他の似た機能と比べ) 柔軟な機能で、添え字を使ったデータ構造よりも自然にイテレーションができる
  • シンボルとはラベルである。追加的な構造を持たない (代入などができない) 文字列みたいなもの
  • Rubyではクラスを継承できる