Class: ActiveMocker::ModelReader
- Inherits:
-
Object
- Object
- ActiveMocker::ModelReader
- Defined in:
- lib/active_mocker/model_reader.rb
Instance Attribute Summary collapse
-
#file_reader ⇒ Object
readonly
Returns the value of attribute file_reader.
-
#model_dir ⇒ Object
readonly
Returns the value of attribute model_dir.
-
#model_name ⇒ Object
readonly
Returns the value of attribute model_name.
Instance Method Summary collapse
- #class_methods ⇒ Object
- #class_methods_with_arguments ⇒ Object
- #collections ⇒ Object
- #eval_file ⇒ Object
- #file_path ⇒ Object
-
#initialize(options = {}) ⇒ ModelReader
constructor
A new instance of ModelReader.
- #instance_methods ⇒ Object
- #instance_methods_with_arguments ⇒ Object
- #klass ⇒ Object
- #parse(model_name) ⇒ Object
- #read_file ⇒ Object
- #relationships ⇒ Object
- #relationships_types ⇒ Object
- #single_relationships ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ ModelReader
Returns a new instance of ModelReader.
7 8 9 10 |
# File 'lib/active_mocker/model_reader.rb', line 7 def initialize(={}) @file_reader = [:file_reader] ||= FileReader @model_dir = [:model_dir] end |
Instance Attribute Details
#file_reader ⇒ Object (readonly)
Returns the value of attribute file_reader.
5 6 7 |
# File 'lib/active_mocker/model_reader.rb', line 5 def file_reader @file_reader end |
#model_dir ⇒ Object (readonly)
Returns the value of attribute model_dir.
5 6 7 |
# File 'lib/active_mocker/model_reader.rb', line 5 def model_dir @model_dir end |
#model_name ⇒ Object (readonly)
Returns the value of attribute model_name.
5 6 7 |
# File 'lib/active_mocker/model_reader.rb', line 5 def model_name @model_name end |
Instance Method Details
#class_methods ⇒ Object
49 50 51 |
# File 'lib/active_mocker/model_reader.rb', line 49 def class_methods klass.methods(false) end |
#class_methods_with_arguments ⇒ Object
53 54 55 56 57 |
# File 'lib/active_mocker/model_reader.rb', line 53 def class_methods_with_arguments class_methods.map do |m| {m => klass.method(m).parameters } end end |
#collections ⇒ Object
77 78 79 |
# File 'lib/active_mocker/model_reader.rb', line 77 def collections klass.collections.flatten.compact end |
#eval_file ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/active_mocker/model_reader.rb', line 22 def eval_file failure = true while failure begin m = Module.new m.module_eval(read_file, file_path) 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}" next end failure = false model = m.const_get m.constants.first end model end |
#file_path ⇒ Object
45 46 47 |
# File 'lib/active_mocker/model_reader.rb', line 45 def file_path "#{model_dir}/#{model_name}.rb" end |
#instance_methods ⇒ Object
65 66 67 |
# File 'lib/active_mocker/model_reader.rb', line 65 def instance_methods klass.public_instance_methods(false) end |
#instance_methods_with_arguments ⇒ Object
59 60 61 62 63 |
# File 'lib/active_mocker/model_reader.rb', line 59 def instance_methods_with_arguments instance_methods.map do |m| {m => klass.new.method(m).parameters } end end |
#klass ⇒ Object
18 19 20 |
# File 'lib/active_mocker/model_reader.rb', line 18 def klass @klass ||= eval_file end |
#parse(model_name) ⇒ Object
12 13 14 15 16 |
# File 'lib/active_mocker/model_reader.rb', line 12 def parse(model_name) @model_name = model_name klass self end |
#read_file ⇒ Object
41 42 43 |
# File 'lib/active_mocker/model_reader.rb', line 41 def read_file file_reader.read(file_path) end |
#relationships ⇒ Object
73 74 75 |
# File 'lib/active_mocker/model_reader.rb', line 73 def relationships relationships_types.to_h.values.flatten end |
#relationships_types ⇒ Object
69 70 71 |
# File 'lib/active_mocker/model_reader.rb', line 69 def relationships_types klass.relationships end |
#single_relationships ⇒ Object
81 82 83 |
# File 'lib/active_mocker/model_reader.rb', line 81 def single_relationships klass.single_relationships.flatten.compact end |