Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

Rails チュートリアルをやってみる(10) 4章 Rubyについて

Rails風味のRuby」とのこと。味わってみよう。

4.1

リスト4.1で例として、app/views/layouts/application.html.erbの以下のコードを取り上げている。

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>

Rubyを知らなければ、この表記は戸惑うんだろうなあ。Ruby的には

stylesheet_link_tag( 'application', media: 'all', {'data-turbolinks-track': 'reload' })

なので、引数3つのメソッド呼び出しである。

ちなみに、キーワード引数がなかった昔のRubyではこれは

stylesheet_link_tag( 'application', {:media => 'all', 'data-turbolinks-track' => 'reload'} )

だった。そして、実はあんまりキーワード引数の仕様にくわしくないので、この辺りの私の理解は曖昧だ。

それはいいとして、これを「Railsの組込関数」と表現されると悩ましい。 Rubyではすべてはメソッドで、「Rubyの組込関数」とはKernelモジュールのメソッドのことだからだ。

Rails APIのリファレンスへのリンクが示されているのでそこを見ると、このメソッドは ActionView::Helpers::AssetTagHelperのメソッドらしい。 ということは、このERBが評価されるコンテキストではAssetTagHelperがincludeされているということだ。 しかし、「なんだこのメソッド?」と思ったときに所属しているクラスを突き止めるのは大変そうだな。

・・・などと思うんだけど、それはたぶん先を読めば書いてある(笑)。先に進もう。

4.1.2はカスタムヘルパーだ。置き場所としてapp/helpers/application_helper.rbが最初から作られてるので、 そこにメソッドを作ってみようとのこと。ふむふむ。

楽しみのために仕様を理解して、リスト4.2を見ないで作ってみる。

module ApplicationHelper
    def full_title(page_title = '')
        out = ["Ruby on Rails Tutorial Sample App"]
        out.unshift page_title unless page_title.empty?
        out.join(" | ")
    end
end

テストがないと不安だな。これをレイアウトに適用してみる。うん、ちゃんと動いているようだ。

あとは4.2からこの章の最後まで、バージョン1.4から付き合っているRubyistとしては特に新しい知識はなかった。