Class: ActiveMocker::ModelReader

Inherits:
Object
  • Object
show all
Defined in:
lib/active_mocker/model_reader.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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(options={})
  @file_reader = options[:file_reader] ||= FileReader
  @model_dir   = options[:model_dir]
end

Instance Attribute Details

#file_readerObject (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_dirObject (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_nameObject (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_methodsObject



49
50
51
# File 'lib/active_mocker/model_reader.rb', line 49

def class_methods
  klass.methods(false)
end

#class_methods_with_argumentsObject



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

#collectionsObject



77
78
79
# File 'lib/active_mocker/model_reader.rb', line 77

def collections
  klass.collections.flatten.compact
end

#eval_fileObject



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_pathObject



45
46
47
# File 'lib/active_mocker/model_reader.rb', line 45

def file_path
  "#{model_dir}/#{model_name}.rb"
end

#instance_methodsObject



65
66
67
# File 'lib/active_mocker/model_reader.rb', line 65

def instance_methods
  klass.public_instance_methods(false)
end

#instance_methods_with_argumentsObject



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

#klassObject



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_fileObject



41
42
43
# File 'lib/active_mocker/model_reader.rb', line 41

def read_file
  file_reader.read(file_path)
end

#relationshipsObject



73
74
75
# File 'lib/active_mocker/model_reader.rb', line 73

def relationships
  relationships_types.to_h.values.flatten
end

#relationships_typesObject



69
70
71
# File 'lib/active_mocker/model_reader.rb', line 69

def relationships_types
  klass.relationships
end

#single_relationshipsObject



81
82
83
# File 'lib/active_mocker/model_reader.rb', line 81

def single_relationships
  klass.single_relationships.flatten.compact
end