anonymous_active_record 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
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