automodel-sqlserver 0.1.0
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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.rubocop.yml +81 -0
- data/.ruby-version +1 -0
- data/.travis.yml +5 -0
- data/.yardopts +1 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +82 -0
- data/LICENSE.txt +21 -0
- data/README.md +225 -0
- data/Rakefile +6 -0
- data/automodel-sqlserver.gemspec +39 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/docs/Automodel.html +161 -0
- data/docs/Automodel/AdapterAlreadyRegistered.html +144 -0
- data/docs/Automodel/AdapterAlreadyRegisteredError.html +144 -0
- data/docs/Automodel/CannotFindOnCompoundPrimaryKey.html +144 -0
- data/docs/Automodel/Connectors.html +117 -0
- data/docs/Automodel/Error.html +140 -0
- data/docs/Automodel/FindOnCompoundPrimaryKeyError.html +144 -0
- data/docs/Automodel/Helpers.html +722 -0
- data/docs/Automodel/NameCollisionError.html +143 -0
- data/docs/Automodel/SchemaInspector.html +1046 -0
- data/docs/Automodel/UnregisteredAdapter.html +144 -0
- data/docs/_index.html +206 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +496 -0
- data/docs/file.README.html +333 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +333 -0
- data/docs/js/app.js +292 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +155 -0
- data/docs/top-level-namespace.html +478 -0
- data/lib/automodel.rb +132 -0
- data/lib/automodel/automodel.rb +4 -0
- data/lib/automodel/connectors.rb +8 -0
- data/lib/automodel/errors.rb +24 -0
- data/lib/automodel/helpers.rb +141 -0
- data/lib/automodel/schema_inspector.rb +218 -0
- data/lib/automodel/version.rb +10 -0
- data/samples/database.yml +38 -0
- metadata +259 -0
@@ -0,0 +1,722 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Module: Automodel::Helpers
|
8
|
+
|
9
|
+
— Documentation by YARD 0.9.14
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
pathId = "Automodel::Helpers";
|
19
|
+
relpath = '../';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="../class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="../_index.html">Index (H)</a> »
|
40
|
+
<span class='title'><span class='object_link'><a href="../Automodel.html" title="Automodel (module)">Automodel</a></span></span>
|
41
|
+
»
|
42
|
+
<span class="title">Helpers</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="../class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Module: Automodel::Helpers
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
<dl>
|
80
|
+
<dt>Defined in:</dt>
|
81
|
+
<dd>lib/automodel/helpers.rb</dd>
|
82
|
+
</dl>
|
83
|
+
|
84
|
+
</div>
|
85
|
+
|
86
|
+
<h2>Overview</h2><div class="docstring">
|
87
|
+
<div class="discussion">
|
88
|
+
|
89
|
+
<p>Houses some helper methods used directly by <span class='object_link'><a href="../top-level-namespace.html#automodel-instance_method" title="#automodel (method)">#automodel</a></span>.</p>
|
90
|
+
|
91
|
+
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
<div class="tags">
|
95
|
+
|
96
|
+
|
97
|
+
</div>
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
<h2>
|
106
|
+
Class Method Summary
|
107
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
108
|
+
</h2>
|
109
|
+
|
110
|
+
<ul class="summary">
|
111
|
+
|
112
|
+
<li class="public ">
|
113
|
+
<span class="summary_signature">
|
114
|
+
|
115
|
+
<a href="#map_tables-class_method" title="map_tables (class method)">.<strong>map_tables</strong>(connection_handler, subschema: '') ⇒ Array<Hash> </a>
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
</span>
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
<span class="summary_desc"><div class='inline'>
|
130
|
+
<p>Takes a connection handler (an object that implements
|
131
|
+
ActiveRecord::ConnectionHandling), scrapes the target database, and returns
|
132
|
+
a list of the tables' metadata.</p>
|
133
|
+
</div></span>
|
134
|
+
|
135
|
+
</li>
|
136
|
+
|
137
|
+
|
138
|
+
<li class="public ">
|
139
|
+
<span class="summary_signature">
|
140
|
+
|
141
|
+
<a href="#railsy_column_name-class_method" title="railsy_column_name (class method)">.<strong>railsy_column_name</strong>(column) ⇒ String </a>
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
</span>
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
<span class="summary_desc"><div class='inline'>
|
156
|
+
<p>Returns a Railsy name for the given column.</p>
|
157
|
+
</div></span>
|
158
|
+
|
159
|
+
</li>
|
160
|
+
|
161
|
+
|
162
|
+
<li class="public ">
|
163
|
+
<span class="summary_signature">
|
164
|
+
|
165
|
+
<a href="#railsy_name-class_method" title="railsy_name (class method)">.<strong>railsy_name</strong>(name) ⇒ String </a>
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
</span>
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
<span class="summary_desc"><div class='inline'>
|
180
|
+
<p>Returns the given name in Railsy form.</p>
|
181
|
+
</div></span>
|
182
|
+
|
183
|
+
</li>
|
184
|
+
|
185
|
+
|
186
|
+
<li class="public ">
|
187
|
+
<span class="summary_signature">
|
188
|
+
|
189
|
+
<a href="#register_class-class_method" title="register_class (class method)">.<strong>register_class</strong>(class_object, as:, within: nil) ⇒ Class </a>
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
</span>
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
<span class="summary_desc"><div class='inline'>
|
204
|
+
<p>Registers the given class <strong>as</strong> the given name and
|
205
|
+
<strong>within</strong> the given namespace (if any).</p>
|
206
|
+
</div></span>
|
207
|
+
|
208
|
+
</li>
|
209
|
+
|
210
|
+
|
211
|
+
</ul>
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
<div id="class_method_details" class="method_details_list">
|
217
|
+
<h2>Class Method Details</h2>
|
218
|
+
|
219
|
+
|
220
|
+
<div class="method_details first">
|
221
|
+
<h3 class="signature first" id="map_tables-class_method">
|
222
|
+
|
223
|
+
.<strong>map_tables</strong>(connection_handler, subschema: '') ⇒ <tt>Array<Hash></tt>
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
</h3><div class="docstring">
|
230
|
+
<div class="discussion">
|
231
|
+
|
232
|
+
<p>Takes a connection handler (an object that implements
|
233
|
+
ActiveRecord::ConnectionHandling), scrapes the target database, and returns
|
234
|
+
a list of the tables' metadata.</p>
|
235
|
+
|
236
|
+
|
237
|
+
</div>
|
238
|
+
</div>
|
239
|
+
<div class="tags">
|
240
|
+
<p class="tag_title">Parameters:</p>
|
241
|
+
<ul class="param">
|
242
|
+
|
243
|
+
<li>
|
244
|
+
|
245
|
+
<span class='name'>connection_handler</span>
|
246
|
+
|
247
|
+
|
248
|
+
<span class='type'>(<tt>ActiveRecord::ConnectionHandling</tt>)</span>
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
—
|
253
|
+
<div class='inline'>
|
254
|
+
<p>The connection pool/handler to inspect and map out.</p>
|
255
|
+
</div>
|
256
|
+
|
257
|
+
</li>
|
258
|
+
|
259
|
+
<li>
|
260
|
+
|
261
|
+
<span class='name'>subschema</span>
|
262
|
+
|
263
|
+
|
264
|
+
<span class='type'>(<tt>String</tt>)</span>
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
—
|
269
|
+
<div class='inline'>
|
270
|
+
<p>The name of an additional namespace with which tables in the target
|
271
|
+
database are prefixed, as eplained in <span class='object_link'><a href="../top-level-namespace.html#automodel-instance_method" title="#automodel (method)">#automodel</a></span>.</p>
|
272
|
+
</div>
|
273
|
+
|
274
|
+
</li>
|
275
|
+
|
276
|
+
</ul>
|
277
|
+
|
278
|
+
<p class="tag_title">Returns:</p>
|
279
|
+
<ul class="return">
|
280
|
+
|
281
|
+
<li>
|
282
|
+
|
283
|
+
|
284
|
+
<span class='type'>(<tt>Array<Hash></tt>)</span>
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
—
|
289
|
+
<div class='inline'>
|
290
|
+
<p>An Array where each value is a Hash representing a table in the target
|
291
|
+
database. Each such Hash will define the following keys:</p>
|
292
|
+
<ul><li>
|
293
|
+
<p><code>:name</code> (String) – The table name, prefixed with the subschema
|
294
|
+
name (if one is given).</p>
|
295
|
+
</li><li>
|
296
|
+
<p><code>:columns</code>
|
297
|
+
(Array<ActiveRecord::ConnectionAdapters::Column>)</p>
|
298
|
+
</li><li>
|
299
|
+
<p><code>:primary_key</code> (String, Array<String>)</p>
|
300
|
+
</li><li>
|
301
|
+
<p><code>:foreign_keys</code>
|
302
|
+
(Array<ActiveRecord::ConnectionAdapters::ForeignKeyDefinition>)</p>
|
303
|
+
</li><li>
|
304
|
+
<p><code>:base_name</code> (String) – The table name, with no subschema.</p>
|
305
|
+
</li><li>
|
306
|
+
<p><code>:model_name</code> (String) – A Railsy class name for the
|
307
|
+
corresponding model.</p>
|
308
|
+
</li><li>
|
309
|
+
<p><code>:composite_primary_key</code> (true, false)</p>
|
310
|
+
</li><li>
|
311
|
+
<p><code>:column_aliases</code> (Hash<String,
|
312
|
+
ActiveRecord::ConnectionAdapters::Column>)</p>
|
313
|
+
</li></ul>
|
314
|
+
</div>
|
315
|
+
|
316
|
+
</li>
|
317
|
+
|
318
|
+
</ul>
|
319
|
+
|
320
|
+
</div><table class="source_code">
|
321
|
+
<tr>
|
322
|
+
<td>
|
323
|
+
<pre class="lines">
|
324
|
+
|
325
|
+
|
326
|
+
34
|
327
|
+
35
|
328
|
+
36
|
329
|
+
37
|
330
|
+
38
|
331
|
+
39
|
332
|
+
40
|
333
|
+
41
|
334
|
+
42
|
335
|
+
43
|
336
|
+
44
|
337
|
+
45
|
338
|
+
46
|
339
|
+
47
|
340
|
+
48
|
341
|
+
49
|
342
|
+
50
|
343
|
+
51
|
344
|
+
52
|
345
|
+
53
|
346
|
+
54
|
347
|
+
55
|
348
|
+
56
|
349
|
+
57
|
350
|
+
58
|
351
|
+
59
|
352
|
+
60</pre>
|
353
|
+
</td>
|
354
|
+
<td>
|
355
|
+
<pre class="code"><span class="info file"># File 'lib/automodel/helpers.rb', line 34</span>
|
356
|
+
|
357
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_map_tables'>map_tables</span><span class='lparen'>(</span><span class='id identifier rubyid_connection_handler'>connection_handler</span><span class='comma'>,</span> <span class='label'>subschema:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
358
|
+
<span class='comment'>## Normalize the "subschema" name.
|
359
|
+
</span> <span class='comment'>##
|
360
|
+
</span> <span class='id identifier rubyid_subschema'>subschema</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subschema'>subschema</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\.+$</span><span class='regexp_end'>}</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>.</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>^\.</span><span class='regexp_end'>}</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
361
|
+
|
362
|
+
<span class='comment'>## Prep the Automodel::SchemaInspector we'll be using.
|
363
|
+
</span> <span class='comment'>##
|
364
|
+
</span> <span class='id identifier rubyid_schema_inspector'>schema_inspector</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Automodel.html" title="Automodel (module)">Automodel</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="SchemaInspector.html" title="Automodel::SchemaInspector (class)">SchemaInspector</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="SchemaInspector.html#initialize-instance_method" title="Automodel::SchemaInspector#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_connection_handler'>connection_handler</span><span class='rparen'>)</span>
|
365
|
+
|
366
|
+
<span class='comment'>## Get as much metadata as possible out of the Automodel::SchemaInspector.
|
367
|
+
</span> <span class='comment'>##
|
368
|
+
</span> <span class='id identifier rubyid_schema_inspector'>schema_inspector</span><span class='period'>.</span><span class='id identifier rubyid_tables'>tables</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_table_name'>table_name</span><span class='op'>|</span>
|
369
|
+
<span class='id identifier rubyid_table'>table</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
370
|
+
|
371
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subschema'>subschema</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_table_name'>table_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
372
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:columns</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_schema_inspector'>schema_inspector</span><span class='period'>.</span><span class='id identifier rubyid_columns'>columns</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
373
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:primary_key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_schema_inspector'>schema_inspector</span><span class='period'>.</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
374
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:foreign_keys</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_schema_inspector'>schema_inspector</span><span class='period'>.</span><span class='id identifier rubyid_foreign_keys'>foreign_keys</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
375
|
+
|
376
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:base_name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>.</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span>
|
377
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:model_name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:base_name</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_underscore'>underscore</span><span class='period'>.</span><span class='id identifier rubyid_classify'>classify</span>
|
378
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:composite_primary_key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:primary_key</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>Array</span>
|
379
|
+
<span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:column_aliases</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:columns</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_column'>column</span><span class='op'>|</span> <span class='lbracket'>[</span><span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_column'>column</span><span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
|
380
|
+
|
381
|
+
<span class='id identifier rubyid_table'>table</span>
|
382
|
+
<span class='kw'>end</span>
|
383
|
+
<span class='kw'>end</span></pre>
|
384
|
+
</td>
|
385
|
+
</tr>
|
386
|
+
</table>
|
387
|
+
</div>
|
388
|
+
|
389
|
+
<div class="method_details ">
|
390
|
+
<h3 class="signature " id="railsy_column_name-class_method">
|
391
|
+
|
392
|
+
.<strong>railsy_column_name</strong>(column) ⇒ <tt>String</tt>
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
</h3><div class="docstring">
|
399
|
+
<div class="discussion">
|
400
|
+
|
401
|
+
<p>Returns a Railsy name for the given column.</p>
|
402
|
+
|
403
|
+
|
404
|
+
</div>
|
405
|
+
</div>
|
406
|
+
<div class="tags">
|
407
|
+
<p class="tag_title">Parameters:</p>
|
408
|
+
<ul class="param">
|
409
|
+
|
410
|
+
<li>
|
411
|
+
|
412
|
+
<span class='name'>column</span>
|
413
|
+
|
414
|
+
|
415
|
+
<span class='type'>(<tt>ActiveRecord::ConnectionAdapters::Column</tt>)</span>
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
—
|
420
|
+
<div class='inline'>
|
421
|
+
<p>The column for which we want to generate a Railsy name.</p>
|
422
|
+
</div>
|
423
|
+
|
424
|
+
</li>
|
425
|
+
|
426
|
+
</ul>
|
427
|
+
|
428
|
+
<p class="tag_title">Returns:</p>
|
429
|
+
<ul class="return">
|
430
|
+
|
431
|
+
<li>
|
432
|
+
|
433
|
+
|
434
|
+
<span class='type'>(<tt>String</tt>)</span>
|
435
|
+
|
436
|
+
|
437
|
+
|
438
|
+
—
|
439
|
+
<div class='inline'>
|
440
|
+
<p>The given column's name, in Railsy form.</p>
|
441
|
+
|
442
|
+
<p>Note Date/Datetime columns are not suffixed with “<em>on” or “</em>at” per
|
443
|
+
Rails norm, as this can work against you sometimes (“BirthDate” turns into
|
444
|
+
“birth_on”). A future release will address this by building out a
|
445
|
+
comprehensive list of such names and their correct Railsy representation,
|
446
|
+
but that is not currently the case.</p>
|
447
|
+
</div>
|
448
|
+
|
449
|
+
</li>
|
450
|
+
|
451
|
+
</ul>
|
452
|
+
|
453
|
+
</div><table class="source_code">
|
454
|
+
<tr>
|
455
|
+
<td>
|
456
|
+
<pre class="lines">
|
457
|
+
|
458
|
+
|
459
|
+
77
|
460
|
+
78
|
461
|
+
79
|
462
|
+
80
|
463
|
+
81
|
464
|
+
82</pre>
|
465
|
+
</td>
|
466
|
+
<td>
|
467
|
+
<pre class="code"><span class="info file"># File 'lib/automodel/helpers.rb', line 77</span>
|
468
|
+
|
469
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_railsy_column_name'>railsy_column_name</span><span class='lparen'>(</span><span class='id identifier rubyid_column'>column</span><span class='rparen'>)</span>
|
470
|
+
<span class='id identifier rubyid_name'>name</span> <span class='op'>=</span> <span class='id identifier rubyid_railsy_name'>railsy_name</span><span class='lparen'>(</span><span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
|
471
|
+
<span class='id identifier rubyid_name'>name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>^is_</span><span class='regexp_end'>}</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:boolean</span>
|
472
|
+
|
473
|
+
<span class='id identifier rubyid_name'>name</span>
|
474
|
+
<span class='kw'>end</span></pre>
|
475
|
+
</td>
|
476
|
+
</tr>
|
477
|
+
</table>
|
478
|
+
</div>
|
479
|
+
|
480
|
+
<div class="method_details ">
|
481
|
+
<h3 class="signature " id="railsy_name-class_method">
|
482
|
+
|
483
|
+
.<strong>railsy_name</strong>(name) ⇒ <tt>String</tt>
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
|
488
|
+
|
489
|
+
</h3><div class="docstring">
|
490
|
+
<div class="discussion">
|
491
|
+
|
492
|
+
<p>Returns the given name in Railsy form.</p>
|
493
|
+
|
494
|
+
|
495
|
+
</div>
|
496
|
+
</div>
|
497
|
+
<div class="tags">
|
498
|
+
<p class="tag_title">Parameters:</p>
|
499
|
+
<ul class="param">
|
500
|
+
|
501
|
+
<li>
|
502
|
+
|
503
|
+
<span class='name'>name</span>
|
504
|
+
|
505
|
+
|
506
|
+
<span class='type'>(<tt>String</tt>, <tt>Symbol</tt>)</span>
|
507
|
+
|
508
|
+
|
509
|
+
|
510
|
+
—
|
511
|
+
<div class='inline'>
|
512
|
+
<p>The column name for which we want to generate a Railsy name.</p>
|
513
|
+
</div>
|
514
|
+
|
515
|
+
</li>
|
516
|
+
|
517
|
+
</ul>
|
518
|
+
|
519
|
+
<p class="tag_title">Returns:</p>
|
520
|
+
<ul class="return">
|
521
|
+
|
522
|
+
<li>
|
523
|
+
|
524
|
+
|
525
|
+
<span class='type'>(<tt>String</tt>)</span>
|
526
|
+
|
527
|
+
|
528
|
+
|
529
|
+
—
|
530
|
+
<div class='inline'>
|
531
|
+
<p>The given name, in Railsy form.</p>
|
532
|
+
</div>
|
533
|
+
|
534
|
+
</li>
|
535
|
+
|
536
|
+
</ul>
|
537
|
+
|
538
|
+
</div><table class="source_code">
|
539
|
+
<tr>
|
540
|
+
<td>
|
541
|
+
<pre class="lines">
|
542
|
+
|
543
|
+
|
544
|
+
94
|
545
|
+
95
|
546
|
+
96</pre>
|
547
|
+
</td>
|
548
|
+
<td>
|
549
|
+
<pre class="code"><span class="info file"># File 'lib/automodel/helpers.rb', line 94</span>
|
550
|
+
|
551
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_railsy_name'>railsy_name</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
|
552
|
+
<span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>[^a-z0-9]+</span><span class='regexp_end'>}i</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>_</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_underscore'>underscore</span>
|
553
|
+
<span class='kw'>end</span></pre>
|
554
|
+
</td>
|
555
|
+
</tr>
|
556
|
+
</table>
|
557
|
+
</div>
|
558
|
+
|
559
|
+
<div class="method_details ">
|
560
|
+
<h3 class="signature " id="register_class-class_method">
|
561
|
+
|
562
|
+
.<strong>register_class</strong>(class_object, as:, within: nil) ⇒ <tt>Class</tt>
|
563
|
+
|
564
|
+
|
565
|
+
|
566
|
+
|
567
|
+
|
568
|
+
</h3><div class="docstring">
|
569
|
+
<div class="discussion">
|
570
|
+
|
571
|
+
<p>Registers the given class <strong>as</strong> the given name and
|
572
|
+
<strong>within</strong> the given namespace (if any).</p>
|
573
|
+
|
574
|
+
|
575
|
+
</div>
|
576
|
+
</div>
|
577
|
+
<div class="tags">
|
578
|
+
<p class="tag_title">Parameters:</p>
|
579
|
+
<ul class="param">
|
580
|
+
|
581
|
+
<li>
|
582
|
+
|
583
|
+
<span class='name'>class_object</span>
|
584
|
+
|
585
|
+
|
586
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
587
|
+
|
588
|
+
|
589
|
+
|
590
|
+
—
|
591
|
+
<div class='inline'>
|
592
|
+
<p>The class to register.</p>
|
593
|
+
</div>
|
594
|
+
|
595
|
+
</li>
|
596
|
+
|
597
|
+
<li>
|
598
|
+
|
599
|
+
<span class='name'>as</span>
|
600
|
+
|
601
|
+
|
602
|
+
<span class='type'>(<tt>String</tt>)</span>
|
603
|
+
|
604
|
+
|
605
|
+
|
606
|
+
—
|
607
|
+
<div class='inline'>
|
608
|
+
<p>The name with which to register the class. Note this should be a base name
|
609
|
+
(no “::”).</p>
|
610
|
+
</div>
|
611
|
+
|
612
|
+
</li>
|
613
|
+
|
614
|
+
<li>
|
615
|
+
|
616
|
+
<span class='name'>within</span>
|
617
|
+
|
618
|
+
|
619
|
+
<span class='type'>(<tt>String</tt>, <tt>Symbol</tt>, <tt>Module</tt>, <tt>Class</tt>)</span>
|
620
|
+
|
621
|
+
|
622
|
+
|
623
|
+
—
|
624
|
+
<div class='inline'>
|
625
|
+
<p>The module/class under which the given class should be registered. If the
|
626
|
+
named module or class does not exist, as many nested modules as needed are
|
627
|
+
declared so the class can be registered as requested.</p>
|
628
|
+
|
629
|
+
<p>e.g. Calling this method with an “as” value of
|
630
|
+
<code>"Sample"</code> and a “within” value of
|
631
|
+
<code>"Many::Levels::Deep"</code> will: check for module/class
|
632
|
+
“Many” and create one as a Module if it doesn't already exist; then
|
633
|
+
check for a module/class “Many::Levels” and create a “Levels” Module
|
634
|
+
within <code>Many</code> if it doesn't already exist; then check for a
|
635
|
+
module/class “Many::Levels::Deep” and create a “Deep” Module within
|
636
|
+
<code>Many::Levels</code> if it doesn't already exist; and finally
|
637
|
+
register the given class as “Sample” within
|
638
|
+
<code>Many::Levels::Deep</code>.</p>
|
639
|
+
</div>
|
640
|
+
|
641
|
+
</li>
|
642
|
+
|
643
|
+
</ul>
|
644
|
+
|
645
|
+
<p class="tag_title">Returns:</p>
|
646
|
+
<ul class="return">
|
647
|
+
|
648
|
+
<li>
|
649
|
+
|
650
|
+
|
651
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
652
|
+
|
653
|
+
|
654
|
+
|
655
|
+
—
|
656
|
+
<div class='inline'>
|
657
|
+
<p>The newly-registered class (the same value as the originally-submitted
|
658
|
+
“class_object”).</p>
|
659
|
+
</div>
|
660
|
+
|
661
|
+
</li>
|
662
|
+
|
663
|
+
</ul>
|
664
|
+
|
665
|
+
</div><table class="source_code">
|
666
|
+
<tr>
|
667
|
+
<td>
|
668
|
+
<pre class="lines">
|
669
|
+
|
670
|
+
|
671
|
+
124
|
672
|
+
125
|
673
|
+
126
|
674
|
+
127
|
675
|
+
128
|
676
|
+
129
|
677
|
+
130
|
678
|
+
131
|
679
|
+
132
|
680
|
+
133
|
681
|
+
134
|
682
|
+
135
|
683
|
+
136
|
684
|
+
137
|
685
|
+
138</pre>
|
686
|
+
</td>
|
687
|
+
<td>
|
688
|
+
<pre class="code"><span class="info file"># File 'lib/automodel/helpers.rb', line 124</span>
|
689
|
+
|
690
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_register_class'>register_class</span><span class='lparen'>(</span><span class='id identifier rubyid_class_object'>class_object</span><span class='comma'>,</span> <span class='label'>as:</span><span class='comma'>,</span> <span class='label'>within:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
691
|
+
<span class='id identifier rubyid_components'>components</span> <span class='op'>=</span> <span class='id identifier rubyid_within'>within</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>::</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_sym</span><span class='rparen'>)</span>
|
692
|
+
<span class='id identifier rubyid_components'>components</span><span class='period'>.</span><span class='id identifier rubyid_unshift'>unshift</span><span class='lparen'>(</span><span class='symbol'>:Kernel</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_components'>components</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_safe_constantize'>safe_constantize</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
693
|
+
|
694
|
+
<span class='id identifier rubyid_namespace'>namespace</span> <span class='op'>=</span> <span class='id identifier rubyid_components'>components</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
695
|
+
<span class='id identifier rubyid_components'>components</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_component'>component</span><span class='op'>|</span>
|
696
|
+
<span class='id identifier rubyid_namespace'>namespace</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_component'>component</span><span class='period'>.</span><span class='id identifier rubyid_in?'>in?</span> <span class='id identifier rubyid_namespace'>namespace</span><span class='period'>.</span><span class='id identifier rubyid_constants'>constants</span>
|
697
|
+
<span class='id identifier rubyid_namespace'>namespace</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_component'>component</span><span class='rparen'>)</span>
|
698
|
+
<span class='kw'>else</span>
|
699
|
+
<span class='id identifier rubyid_namespace'>namespace</span><span class='period'>.</span><span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='id identifier rubyid_component'>component</span><span class='comma'>,</span> <span class='const'>Module</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='rparen'>)</span>
|
700
|
+
<span class='kw'>end</span>
|
701
|
+
<span class='kw'>end</span>
|
702
|
+
|
703
|
+
<span class='id identifier rubyid_namespace'>namespace</span><span class='period'>.</span><span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='id identifier rubyid_as'>as</span><span class='comma'>,</span> <span class='id identifier rubyid_class_object'>class_object</span><span class='rparen'>)</span>
|
704
|
+
<span class='kw'>end</span></pre>
|
705
|
+
</td>
|
706
|
+
</tr>
|
707
|
+
</table>
|
708
|
+
</div>
|
709
|
+
|
710
|
+
</div>
|
711
|
+
|
712
|
+
</div>
|
713
|
+
|
714
|
+
<div id="footer">
|
715
|
+
Generated on Wed Jun 20 18:16:10 2018 by
|
716
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
717
|
+
0.9.14 (ruby-2.4.4).
|
718
|
+
</div>
|
719
|
+
|
720
|
+
</div>
|
721
|
+
</body>
|
722
|
+
</html>
|