タグ

2013年11月1日のブックマーク (2件)

  • ActiveSupport::Concern でハッピーなモジュールライフを送る | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 以前のエントリで「includeされた時にクラスメソッドとインスタンスメソッドを同時に追加する頻出パターン」をご紹介しました。 今回は、それに関する定形処理を肩代わりしてくれる ActiveSupport::Concern をご紹介します。 includeされた時にクラスメソッドとインスタンスメソッドを同時に追加するパターン Before 以前のエントリ(includeされた時にクラスメソッドとインスタンスメソッドを同時に追加する頻出パターン)でご紹介していますが、おさらいしましょう。 module M def self.included(base) base.extend(ClassMethods) end module ClassMethods def foo puts 'foo' end end def bar puts 'bar' end end

    rryu
    rryu 2013/11/01
    ActiveRecordを拡張するモジュールを作るときに便利なモジュール。
  • ActiveRecord::Core.generated_feature_methods が何をしているか?

    今日参加させて頂いたKobe Rubyist Meetup 1stで話題になった、 ActiveRecord::Core.generated_feature_methods の意味が良く分からない問題を追跡してみました。 ■疑問 @sutetotanuki さんより下記のコードの意味が分からないとの質問がありました。 以前から私も良く分からないコードだな~と思っていたのですが、理由を良く知りませんでした。 97 def generated_feature_methods 98 @generated_feature_methods ||= begin 99 mod = const_set(:GeneratedFeatureMethods, Module.new) 100 include mod 101 mod 102 end 103 end moduleをその場で生成しincludeしている

    rryu
    rryu 2013/11/01
    すでにインクルードしてあるモジュールにメソッドを追加することでオーバーライドの優先順位を制御する話。