Module: DynamicActiveModel::Setup::ClassMethods

Defined in:
lib/dynamic-active-model/setup.rb

Overview

ClassMethods various class methods for configuring a module

Instance Method Summary collapse

Instance Method Details

#connection_options(options = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/dynamic-active-model/setup.rb', line 29

def connection_options(options = nil)
  if options.is_a?(String)
    name = options
    options = ActiveRecord::Base
                .configurations
                .configs_for(
                  env_name: Rails.env,
                  name: name
                )
                .configuration_hash
  end

  if options
    config = dynamic_active_model_config
    config[:connection_options] = options
    redefine_class_method(:dynamic_active_model_config, config)
  end

  dynamic_active_model_config[:connection_options]
end

#create_models!Object



100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/dynamic-active-model/setup.rb', line 100

def create_models!
  redefine_class_method(
    :database,
    DynamicActiveModel::Explorer.explore(
      self,
      connection_options,
      skip_tables,
      relationships
    )
  )
  database.update_all_models(extensions_path, extensions_suffix) if extensions_path
  database
end

#databaseObject



15
16
17
# File 'lib/dynamic-active-model/setup.rb', line 15

def database
  nil
end

#dynamic_active_model_configObject



19
20
21
22
23
24
25
26
27
# File 'lib/dynamic-active-model/setup.rb', line 19

def dynamic_active_model_config
  {
    connection_options: nil,
    skip_tables: [],
    relationships: {},
    extensions_path: nil,
    extensions_suffix: '.ext.rb'
  }
end

#extensions_path(path = nil) ⇒ Object



82
83
84
85
86
87
88
89
# File 'lib/dynamic-active-model/setup.rb', line 82

def extensions_path(path = nil)
  if path
    config = dynamic_active_model_config
    config[:extensions_path] = path
    redefine_class_method(:dynamic_active_model_config, config)
  end
  dynamic_active_model_config[:extensions_path]
end

#extensions_suffix(suffix = nil) ⇒ Object



91
92
93
94
95
96
97
98
# File 'lib/dynamic-active-model/setup.rb', line 91

def extensions_suffix(suffix = nil)
  if suffix
    config = dynamic_active_model_config
    config[:extensions_suffix] = suffix
    redefine_class_method(:dynamic_active_model_config, config)
  end
  dynamic_active_model_config[:extensions_suffix]
end

#foreign_key(table_name, foreign_key, relationship_name) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/dynamic-active-model/setup.rb', line 74

def foreign_key(table_name, foreign_key, relationship_name)
  config = dynamic_active_model_config
  current_relationships = config[:relationships]
  current_relationships[table_name] ||= {}
  current_relationships[table_name][foreign_key] = relationship_name
  redefine_class_method(:dynamic_active_model_config, config)
end

#relationships(all_relationships = nil) ⇒ Object



65
66
67
68
69
70
71
72
# File 'lib/dynamic-active-model/setup.rb', line 65

def relationships(all_relationships = nil)
  if all_relationships
    config = dynamic_active_model_config
    config[:relationships] = all_relationships
    redefine_class_method(:dynamic_active_model_config, config)
  end
  dynamic_active_model_config[:relationships]
end

#skip_table(table) ⇒ Object



59
60
61
62
63
# File 'lib/dynamic-active-model/setup.rb', line 59

def skip_table(table)
  config = dynamic_active_model_config
  config[:skip_tables] << table
  redefine_class_method(:dynamic_active_model_config, config)
end

#skip_tables(tables = nil) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/dynamic-active-model/setup.rb', line 50

def skip_tables(tables = nil)
  if tables
    config = dynamic_active_model_config
    config[:skip_tables] = tables
    redefine_class_method(:dynamic_active_model_config, config)
  end
  dynamic_active_model_config[:skip_tables]
end