anonymous_active_record 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07dc07f9d324b2e9a0eb1bbe5df6950c1bb13e6b2ce482e3a4c7fb120dd2ed52
4
- data.tar.gz: 284a9119d3f2435a35eb7264caff017d04840d4839698636ecbef5df6b2311b2
3
+ metadata.gz: 122443ea21e04dc844dfc547f12dacc18fa889ebf91b988b580f5c32cd63f547
4
+ data.tar.gz: 9948435b6b32dd03ad00ff89c1f0740da2ae5f74ebd3b87a2851e48f94ee59d8
5
5
  SHA512:
6
- metadata.gz: aa09c958e0f3bfd13a3da9e66df741c738a23b3766f1991410b7ad929d5bd5a4571e974a9a84e7043a40850c89bc80280238fb95e9d4da9ee8ed7859618b2a8a
7
- data.tar.gz: db09ff69d00af99b04f192c43e52491317f44bbafa77c76dd3d34243a03cd7124bfadea8153e8964f5fd475091f273433c87029475479fb4a98d488ca737f3be
6
+ metadata.gz: fd9b89d81ed386ee4e5b988d127bd266bcd546d3c1f5f242da5f2ea4af14be5a5dc307125a87859ee7066033db0c804d4d76f44871f9819167ff2d8eb688e414
7
+ data.tar.gz: 53f79696142eb5df7bb52470a651caafe1c98170ffe849f324861b17601eeb564ef7764488af91bb430222c9b3579779158564eeb0835a20017b3f7024f6790b
@@ -42,14 +42,15 @@ module AnonymousActiveRecord
42
42
  encoding: 'utf8',
43
43
  database: ':memory:'
44
44
  }.freeze
45
+ DEFAULT_PARENT_KLASS = 'ActiveRecord::Base'
45
46
 
46
47
  # Defines a pseudo anonymous class in a particular namespace of your choosing.
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)
48
+ def generate(table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: DEFAULT_PARENT_KLASS, connection_params: DEFAULT_CONNECTION_PARAMS, &block)
48
49
  gen = AnonymousActiveRecord::Generator.new(table_name, klass_namespaces, klass_basename, parent_klass)
49
50
  klass = gen.generate(&block)
50
51
  connection_params = YAML.load_file(connection_params) if connection_params.is_a?(String)
51
52
  klass.establish_connection(connection_params.dup)
52
- klass.connection.create_table gen.table_name do |t|
53
+ klass.connection.create_table(gen.table_name) do |t|
53
54
  columns.each do |col|
54
55
  if col.is_a?(Hash)
55
56
  # :name and :type are required at minimum
@@ -57,7 +58,15 @@ module AnonymousActiveRecord
57
58
  type = col.delete(:type)
58
59
  t.column(name, type, **col)
59
60
  elsif col.is_a?(Array)
60
- t.column col[0], col[-1] || :string
61
+ if col[-1].is_a?(Hash)
62
+ if col[-1].present?
63
+ t.column col[0], **col[-1]
64
+ else
65
+ t.column col[0], :string
66
+ end
67
+ else
68
+ t.column col[0], col[-1] || :string
69
+ end
61
70
  else
62
71
  t.column col, :string
63
72
  end
@@ -69,8 +78,10 @@ module AnonymousActiveRecord
69
78
  elsif idx_options.is_a?(Array)
70
79
  if idx_options.length == 1
71
80
  t.index idx_options[0]
72
- else
81
+ elsif idx_options[-1].is_a?(Hash)
73
82
  t.index idx_options[0], **idx_options[-1]
83
+ else
84
+ t.index idx_options[0], idx_options[-1]
74
85
  end
75
86
  else
76
87
  t.index idx_options
@@ -82,26 +93,52 @@ module AnonymousActiveRecord
82
93
  end
83
94
 
84
95
  # Initializes instances of a pseudo anonymous class in a particular namespace of your choosing.
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)
96
+ def factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: DEFAULT_PARENT_KLASS, connection_params: DEFAULT_CONNECTION_PARAMS, &block)
86
97
  factory = _factory(
87
- source_data: source_data, table_name: table_name, klass_namespaces: klass_namespaces, klass_basename: klass_basename, columns: columns, indexes: indexes, timestamps: timestamps, parent_klass: parent_klass, connection_params: connection_params, &block
98
+ source_data: source_data,
99
+ table_name: table_name,
100
+ klass_namespaces: klass_namespaces,
101
+ klass_basename: klass_basename,
102
+ columns: columns,
103
+ indexes: indexes,
104
+ timestamps: timestamps,
105
+ parent_klass: parent_klass,
106
+ connection_params: connection_params,
107
+ &block
88
108
  )
89
109
  factory.run
90
110
  end
91
111
 
92
112
  # Initializes instances of a pseudo anonymous class in a particular namespace of your choosing.
93
- 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)
113
+ def factory!(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: DEFAULT_PARENT_KLASS, connection_params: DEFAULT_CONNECTION_PARAMS, &block)
94
114
  factory = _factory(
95
- source_data: source_data, table_name: table_name, klass_namespaces: klass_namespaces, klass_basename: klass_basename, columns: columns, indexes: indexes, timestamps: timestamps, parent_klass: parent_klass, connection_params: connection_params, &block
115
+ source_data: source_data,
116
+ table_name: table_name,
117
+ klass_namespaces: klass_namespaces,
118
+ klass_basename: klass_basename,
119
+ columns: columns,
120
+ indexes: indexes,
121
+ timestamps: timestamps,
122
+ parent_klass: parent_klass,
123
+ connection_params: connection_params,
124
+ &block
96
125
  )
97
126
  factory.run!
98
127
  end
99
128
 
100
129
  private
101
130
 
102
- 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)
131
+ def _factory(source_data: [], table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: DEFAULT_PARENT_KLASS, connection_params: DEFAULT_CONNECTION_PARAMS, &block)
103
132
  klass = generate(
104
- table_name: table_name, klass_namespaces: klass_namespaces, klass_basename: klass_basename, columns: columns, timestamps: timestamps, parent_klass: parent_klass, indexes: indexes, connection_params: connection_params, &block
133
+ table_name: table_name,
134
+ klass_namespaces: klass_namespaces,
135
+ klass_basename: klass_basename,
136
+ columns: columns,
137
+ timestamps: timestamps,
138
+ parent_klass: parent_klass,
139
+ indexes: indexes,
140
+ connection_params: connection_params,
141
+ &block
105
142
  )
106
143
  AnonymousActiveRecord::Factory.new(source_data, klass)
107
144
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AnonymousActiveRecord
4
- VERSION = '1.0.7'
4
+ VERSION = '1.0.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anonymous_active_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-13 00:00:00.000000000 Z
11
+ date: 2021-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler