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

#belongs_toObject



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

def belongs_to
  klass.relationships.belongs_to
end

#class_methodsObject



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

def class_methods
  klass.methods(false)
end

#class_methods_with_argumentsObject



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

def class_methods_with_arguments
  class_methods.map do |m|
    {m => klass.method(m).parameters }
  end
end

#collectionsObject



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

def collections
  klass.collections.flatten.compact
end

#constantsObject



105
106
107
108
109
110
111
112
# File 'lib/active_mocker/model_reader.rb', line 105

def constants
  const = {}
  klass.constants.each {|c| const[c] = klass.const_get(c)}
  const = const.reject do |c, v|
    v.class == Module || v.class == Class
  end
  const
end

#eval_fileObject



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/active_mocker/model_reader.rb', line 23

def eval_file
  failure = false
    begin
      m = Module.new
      m.module_eval(read_file, file_path)
    rescue Exception => e
      Logger.error "ActiveMocker :: Error loading Model: #{model_name} \n \t\t\t\t\t\t\t\t`#{e}` \n"
      Logger.error "\t\t\t\t\t\t\t\t #{file_path}\n"
      failure = true
    end
  return m.const_get m.constants.first unless failure
  return false
end

#file_pathObject



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

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

#has_and_belongs_to_manyObject



89
90
91
# File 'lib/active_mocker/model_reader.rb', line 89

def has_and_belongs_to_many
  klass.relationships.has_and_belongs_to_many
end

#has_manyObject



93
94
95
# File 'lib/active_mocker/model_reader.rb', line 93

def has_many
  klass.relationships.has_many
end

#has_oneObject



85
86
87
# File 'lib/active_mocker/model_reader.rb', line 85

def has_one
  klass.relationships.has_one
end

#instance_methodsObject



61
62
63
# File 'lib/active_mocker/model_reader.rb', line 61

def instance_methods
  klass.public_instance_methods(false)
end

#instance_methods_with_argumentsObject



55
56
57
58
59
# File 'lib/active_mocker/model_reader.rb', line 55

def instance_methods_with_arguments
  instance_methods.map do |m|
    {m => klass.new.method(m).parameters }
  end
end

#klassObject



19
20
21
# File 'lib/active_mocker/model_reader.rb', line 19

def klass
  @klass ||= eval_file
end

#parse(model_name) ⇒ Object



12
13
14
15
16
17
# File 'lib/active_mocker/model_reader.rb', line 12

def parse(model_name)
  @model_name = model_name
  klass
  return self unless @klass == false
  return false
end

#primary_keyObject



101
102
103
# File 'lib/active_mocker/model_reader.rb', line 101

def primary_key
  klass.primary_key
end

#read_fileObject



37
38
39
# File 'lib/active_mocker/model_reader.rb', line 37

def read_file
  file_reader.read(file_path)
end

#relationshipsObject



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

def relationships
  relationships_types.to_h.values.flatten
end

#relationships_typesObject



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

def relationships_types
  klass.relationships
end

#single_relationshipsObject



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

def single_relationships
  klass.single_relationships.flatten.compact
end

#table_nameObject



97
98
99
# File 'lib/active_mocker/model_reader.rb', line 97

def table_name
  klass.table_name
end