Sha256: 971796ee89ef8bbd034f06354c2f5fe7b0676ed1ff8e078d592bc7b95f0aad37
Contents?: true
Size: 1004 Bytes
Versions: 2
Compression:
Stored size: 1004 Bytes
Contents
# encoding: utf-8 require 'active_support' # attr_accessor + initialize module AttributesInitializable extend ActiveSupport::Concern module ClassMethods # generate attr_accessor + initialize # params # - symbols : attribute names def attr_accessor_init(*symbols) generate_accessors(symbols) generate_initializer(symbols) end private def generate_accessors(symbols) accessors = symbols.reduce([]) do |accessors, sym| fail TypeError, "invalid type #{sym.class}. you have to use Symbol" unless sym.class == Symbol accessors << ":#{sym.to_s}" end class_eval "attr_accessor #{accessors.join(',')}" end def generate_initializer(symbols) instance_eval do define_method :initialize do |values = nil, &block| return block.call self if block symbols.each { |symbol|method("#{symbol.to_s}=").call values[symbol] } end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tbpgr_utils-0.0.11 | lib/attributes_initializable.rb |
tbpgr_utils-0.0.10 | lib/attributes_initializable.rb |