2014年6月12日木曜日

Rubyのancestorsメソッドヘ(^o^)ノ

ancestorsメソッドはクラスの親クラスを配列にして返します。

インクルードしたモジュールも含まれます。

ところで。。。

RailsでDate.tomorrowとすれば、明日の日付が取得できます。

RubyのDateクラスを拡張していますね−。

モンキーパッチは手軽で簡単に拡張できます。

Railsは。。。

調べてみましょう。

Railsコンソールで実行すると
$ Date.ancestors
=> [Date, DateAndTime::Calculations, Comparable, Object, ActiveSupport::Dependencies::Loadable, PP::ObjectMixin, JSON::Ext::Generator::GeneratorMethods::Object, Kernel, BasicObject]

注目すべきは
DateAndTime::Calculations

ちなみにRubyのirbで実行すると
$ Date.ancestors
=> [Date, Object, Kernel, BasicObject]

todayやtomorrowはDateAndTime::Calculationsに定義されています。
[参考] DateAndTime::Calculations

これModuleですねー。

なぜ、わざわざモジュールに定義してインクルードしているのか?
class date
  include DateAndTime::Calculations
end

それはオープンクラス拡張の可視化です。

モンキーパッチは手軽ですが、わかりずらいのです。

DateAndTime::Calculationsを見ればどんな拡張しているのか一目瞭然ですよね!

( ̄(エ) ̄)彡☆

0 件のコメント:

コメントを投稿