Sha256: 03c1c480d03410738b8da7781689b1db466bafb7f99a41679f3087ed3ebea01a
Contents?: true
Size: 1.58 KB
Versions: 8
Compression:
Stored size: 1.58 KB
Contents
module ActiveMocker class ModelReader attr_reader :model_name, :model_dir, :file_reader def initialize(options={}) @file_reader = options[:file_reader] ||= FileReader @model_dir = options[:model_dir] end def parse(model_name) @model_name = model_name klass self end def klass @klass ||= eval_file end def eval_file failure = true while failure begin m = Module.new m.module_eval(read_file) rescue NameError => e raise e result = e.to_s.scan /::(\w*)$/ # gets the Constant name from error const_name = result.flatten.first Logger_.debug "ActiveMocker :: Can't can't find Constant #{const_name} from class #{model_name}..\n #{caller}" # Object.const_set(const_name,const_name) next end failure = false model = m.const_get m.constants.first end model end def read_file file_reader.read("#{model_dir}/#{model_name}.rb") end def class_methods klass.methods(false) end def class_methods_with_arguments class_methods.map do |m| {m => klass.method(m).parameters } end end def instance_methods_with_arguments instance_methods.map do |m| {m => klass.new.method(m).parameters } end end def instance_methods klass.public_instance_methods(false) end def relationships_types klass.relationships end def relationships relationships_types.to_h.values.flatten end end end
Version data entries
8 entries across 8 versions & 1 rubygems