概要
Module#class_attribute
詳細
Module#class_attribute について
Module#class_attribute
クラスレベルの属性を設定する。
継承先でも引き継がれる。
インスタンスからも利用可能。
instance_readerオプション、instance_writerオプションの指定によって
インスタンスからのアクセス制御をすることも可能。
詳細は下記のサンプルコードおよびリンク先にて確認。
サンプル
# encoding: utf-8 require 'active_support/core_ext/class/attribute' require 'tbpgr_utils' class A class_attribute :default self.default = { hoge: "default_hoge", hige: "default_hige", hage: "default_hage", } end class B < A self.default = { hoge: "b_nized_default_hoge", hige: "b_nized_default_hige", hage: "b_nized_default_hage", } end class C < B; end bulk_puts_eval binding, <<-EOS A.default B.default C.default A.new.default B.new.default C.new.default B.default = "change in b" C.default EOS __END__ 下記はTbpgrUtils gemの機能 bulk_puts_eval 詳しくは下記参照 https://rubygems.org/gems/tbpgr_utils https://github.com/tbpgr/tbpgr_utils
出力
A.default # => {:hoge=>"default_hoge", :hige=>"default_hige", :hage=>"default_hage"} B.default # => {:hoge=>"b_nized_default_hoge", :hige=>"b_nized_default_hige", :hage=>"b_nized_default_hage"} C.default # => {:hoge=>"b_nized_default_hoge", :hige=>"b_nized_default_hige", :hage=>"b_nized_default_hage"} A.new.default # => {:hoge=>"default_hoge", :hige=>"default_hige", :hage=>"default_hage"} B.new.default # => {:hoge=>"b_nized_default_hoge", :hige=>"b_nized_default_hige", :hage=>"b_nized_default_hage"} C.new.default # => {:hoge=>"b_nized_default_hoge", :hige=>"b_nized_default_hige", :hage=>"b_nized_default_hage"} B.default = "change in b" # => "change in b" C.default # => "change in b"