Ruby on Rails 3.2.2 を使用しています。RoR ActiveSupport::Concern機能を使用して、モジュールを実装し、それをクラスに含めています。included do ... end
モジュールが含まれるクラスのクラスコンテキストで実行されるブロック作成コードを内部で使用できるようにします。
私の疑問は次のとおりです。ブロックに含めるべきではないものは何ですか? included do ... end
つまり、たとえば、次のことを行うのは「一般的」/「良い」慣行ですか?
module MyModule
extend ActiveSupport::Concern
class MyModuleClass
attr_accessor :attr1, :attr2, :attr3
def initialize(attrs)
@attr1 = attrs[:attr1]
@attr2 = attrs[:attr2]
@attr3 = attrs[:attr3]
end
end
included do
@my_module_class = MyModuleClass.new(some_attrs)
end
end
Moreは、インクルード@my_module_class
クラスの属性として使用できる変数になりますMyModule
(ところで、そのモジュールでのみ使用することを意図しているため、内部でのみ@my_module_class
「表示」したいと思います)? 上記のコードのブロックでインスタンス化しようとしているような状況を処理する方法に関する「高度な」例またはチュートリアルはありますか? 何についてアドバイスしますか?MyModule
included do ... end