Module: DynamicActiveModel::Setup::ClassMethods
- Defined in:
- lib/dynamic-active-model/setup.rb
Overview
ClassMethods provides various class methods for configuring a module
Instance Method Summary collapse
-
#connection_options(options = nil) ⇒ Hash
Sets or gets the database connection options.
-
#create_models! ⇒ Database
Creates all models and applies extensions This method: 1.
-
#database ⇒ Database?
Gets the database instance.
-
#dynamic_active_model_config ⇒ Hash
Gets the current configuration.
-
#extensions_path(path = nil) ⇒ String?
Sets or gets the path for model extensions.
-
#extensions_suffix(suffix = nil) ⇒ String
Sets or gets the suffix for extension files.
-
#foreign_key(table_name, foreign_key, relationship_name) ⇒ Object
Adds a custom foreign key relationship.
-
#relationships(all_relationships = nil) ⇒ Hash
Sets or gets the custom relationships.
-
#skip_table(table) ⇒ Object
Adds a single table to the skip list.
-
#skip_tables(tables = nil) ⇒ Array<String>
Sets or gets the list of tables to skip.
Instance Method Details
#connection_options(options = nil) ⇒ Hash
Sets or gets the database connection options
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/dynamic-active-model/setup.rb', line 58 def ( = nil) if .is_a?(String) name = = ActiveRecord::Base .configurations .configs_for( env_name: Rails.env, name: name ) .configuration_hash end if config = dynamic_active_model_config config[:connection_options] = redefine_class_method(:dynamic_active_model_config, config) end dynamic_active_model_config[:connection_options] end |
#create_models! ⇒ Database
Creates all models and applies extensions This method:
-
Creates models using Explorer
-
Applies any model extensions if configured
152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/dynamic-active-model/setup.rb', line 152 def create_models! redefine_class_method( :database, DynamicActiveModel::Explorer.explore( self, , skip_tables, relationships ) ) database.update_all_models(extensions_path, extensions_suffix) if extensions_path database end |
#database ⇒ Database?
Gets the database instance
39 40 41 |
# File 'lib/dynamic-active-model/setup.rb', line 39 def database nil end |
#dynamic_active_model_config ⇒ Hash
Gets the current configuration
45 46 47 48 49 50 51 52 53 |
# File 'lib/dynamic-active-model/setup.rb', line 45 def dynamic_active_model_config { connection_options: nil, skip_tables: [], relationships: {}, extensions_path: nil, extensions_suffix: '.ext.rb' } end |
#extensions_path(path = nil) ⇒ String?
Sets or gets the path for model extensions
126 127 128 129 130 131 132 133 |
# File 'lib/dynamic-active-model/setup.rb', line 126 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) ⇒ String
Sets or gets the suffix for extension files
138 139 140 141 142 143 144 145 |
# File 'lib/dynamic-active-model/setup.rb', line 138 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
Adds a custom foreign key relationship
115 116 117 118 119 120 121 |
# File 'lib/dynamic-active-model/setup.rb', line 115 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) ⇒ Hash
Sets or gets the custom relationships
102 103 104 105 106 107 108 109 |
# File 'lib/dynamic-active-model/setup.rb', line 102 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
Adds a single table to the skip list
93 94 95 96 97 |
# File 'lib/dynamic-active-model/setup.rb', line 93 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) ⇒ Array<String>
Sets or gets the list of tables to skip
82 83 84 85 86 87 88 89 |
# File 'lib/dynamic-active-model/setup.rb', line 82 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 |