インクルードしたモジュールも含まれます。
ところで。。。
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 件のコメント:
コメントを投稿