Module: AnonymousActiveRecord
- Defined in:
- lib/anonymous_active_record.rb,
lib/anonymous_active_record/factory.rb,
lib/anonymous_active_record/version.rb,
lib/anonymous_active_record/generator.rb
Overview
Usage:
klass = AnonymousActiveRecord.generate(columns: ['name']) do
def flowery_name
"🌸#{name}🌸"
end
end
instance = klass.new(name: 'Darla Charla')
instance.save!
instance.flowery_name # => "🌸Darla Charla🌸"
Defined Under Namespace
Constant Summary collapse
- DEFAULT_CONNECTION_PARAMS =
{ adapter: 'sqlite3', encoding: 'utf8', database: ':memory:' }.freeze
- VERSION =
'1.0.5'
Class Method Summary collapse
- ._factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
-
.factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
Initializes instances of a pseudo anonymous class in a particular namespace of your choosing.
-
.factory!(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
Initializes instances of a pseudo anonymous class in a particular namespace of your choosing.
-
.generate(table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
Defines a pseudo anonymous class in a particular namespace of your choosing.
Class Method Details
._factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
98 99 100 101 |
# File 'lib/anonymous_active_record.rb', line 98 def _factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) klass = generate(table_name: table_name, klass_namespaces: klass_namespaces, klass_basename: klass_basename, columns: columns, timestamps: , parent_klass: parent_klass, indexes: indexes, connection_params: connection_params, &block) AnonymousActiveRecord::Factory.new(source_data, klass) end |
.factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
Initializes instances of a pseudo anonymous class in a particular namespace of your choosing.
85 86 87 88 |
# File 'lib/anonymous_active_record.rb', line 85 def factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) factory = _factory(source_data: source_data, table_name: table_name, klass_namespaces: klass_namespaces, klass_basename: klass_basename, columns: columns, indexes: indexes, timestamps: , parent_klass: parent_klass, connection_params: connection_params, &block) factory.run end |
.factory!(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
Initializes instances of a pseudo anonymous class in a particular namespace of your choosing.
91 92 93 94 |
# File 'lib/anonymous_active_record.rb', line 91 def factory!(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) factory = _factory(source_data: source_data, table_name: table_name, klass_namespaces: klass_namespaces, klass_basename: klass_basename, columns: columns, indexes: indexes, timestamps: , parent_klass: parent_klass, connection_params: connection_params, &block) factory.run! end |
.generate(table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
Defines a pseudo anonymous class in a particular namespace of your choosing.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/anonymous_active_record.rb', line 47 def generate(table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: "ActiveRecord::Base", connection_params: DEFAULT_CONNECTION_PARAMS, &block) gen = AnonymousActiveRecord::Generator.new(table_name, klass_namespaces, klass_basename, parent_klass) klass = gen.generate(&block) connection_params = YAML.load_file(connection_params) if connection_params.is_a?(String) klass.establish_connection(connection_params.dup) klass.connection.create_table gen.table_name do |t| columns.each do |col| if col.is_a?(Hash) # :name and :type are required at minimum name = col.delete(:name) type = col.delete(:type) t.column(name, type, col) elsif col.is_a?(Array) t.column col[0], col[-1] || :string else t.column col, :string end end indexes.each do || if .is_a?(Hash) column_names = .delete(:columns) t.index column_names, elsif .is_a?(Array) if .length == 1 t.index [0] else t.index [0], **[-1] end else t.index end end t. if end klass end |