ActiveSupportのString#inquiry便利

例えば、Railsのviewでタブ的なものを書いていて、選択されているタブを表現するのに

/ hoge.html.slim
= render 'tab', current: 'hoge'

/ _tab.html.slim
li class=('active' if current == 'hoge') hoge
li class=('active' if current == 'huga') huga

と書くより、

/ hoge.html.slim
= render 'tab', current: 'hoge'

/ _tab.html.slim
current = current.inquiry
li class=('active' if current.hoge?) hoge
li class=('active' if current.huga?) huga

って書くほうがメッセージっぽくて良さそうな気がする。

実装はこんな感じで、method_missingで処理してるので速度気にしてるとアレかもしれない。

def method_missing(method_name, *arguments)
  if method_name[-1] == '?'
    self == method_name[0..-2]
  else
    super
  end
end

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/string_inquirer.rb