# File lib/archivist/archive.rb, line 3 def self.included(base) base.class_eval do extend ArchiveClassMethods protected :get_klass,:get_klass_name,:get_klass_instance_methods,:build_proxy_method end end
# File lib/archivist/archive.rb, line 45 def build_proxy_method(method_name) class_eval " def #{method_name}(*args,&block) instance = #{get_klass_name}.new(self.attributes.reject{|k,v| !#{get_klass.new.attribute_names.inspect}.include?(k.to_s)}) instance.#{method_name}(*args,&block) end " end
# File lib/archivist/archive.rb, line 27 def get_klass @klass ||= Kernel.const_get(get_klass_name) end
# File lib/archivist/archive.rb, line 36 def get_klass_instance_methods @klass_instance_methods ||= get_klass.instance_methods(false) end
# File lib/archivist/archive.rb, line 31 def get_klass_name @klass_name ||= self.class.to_s.split("::").first end
# File lib/archivist/archive.rb, line 10 def method_missing(method,*args,&block) if get_klass_instance_methods.include?(method) build_proxy_method(method.to_s) self.method(method).call(*args,&block) else super(method,*args,&block) end end
# File lib/archivist/archive.rb, line 19 def respond_to?(method,include_private=false) if get_klass_instance_methods.include?(method) return true else super(method,include_private) end end