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 +4 -4
- data/lib/anonymous_active_record.rb +47 -10
- data/lib/anonymous_active_record/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 122443ea21e04dc844dfc547f12dacc18fa889ebf91b988b580f5c32cd63f547
|
4
|
+
data.tar.gz: 9948435b6b32dd03ad00ff89c1f0740da2ae5f74ebd3b87a2851e48f94ee59d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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:
|
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
|
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
|
-
|
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
|
-
|
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:
|
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,
|
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:
|
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,
|
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:
|
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,
|
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
|
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.
|
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-
|
11
|
+
date: 2021-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|