たんたんとがんばる

ruby, Ruby on Rails, React etc.

active_support/core_ext/array/extract_options.rbを読む

こちらもメソッドは2つだけ(実質はexctract_options!のみ)なので軽い。
extractable_options?メソッドがあることで現在は厳密にHashのみがoptionとして利用できるとわかる(Hashのサブクラスは不可)。
直接Hashかどうかを訊かないことで、Hash以外もオプションとして利用できることを将来的に想定されているのだろうか。
instance_ofは厳密にそのクラスのインスタンスであることを確認するメソッド、対してis_aはサブクラス、もしくはモジュールをインクルードしたクラス(そのサブクラス)も許容する。
popは最後の要素を取り出し、ちなみに逆はshift。

  def extractable_options?
    instance_of?(Hash)
  end
...
  def extract_options!
    if last.is_a?(Hash) && last.extractable_options?
      pop
    else
      {}
    end
  end