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.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +81 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +5 -0
  7. data/.yardopts +1 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +82 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +225 -0
  12. data/Rakefile +6 -0
  13. data/automodel-sqlserver.gemspec +39 -0
  14. data/bin/console +14 -0
  15. data/bin/setup +8 -0
  16. data/docs/Automodel.html +161 -0
  17. data/docs/Automodel/AdapterAlreadyRegistered.html +144 -0
  18. data/docs/Automodel/AdapterAlreadyRegisteredError.html +144 -0
  19. data/docs/Automodel/CannotFindOnCompoundPrimaryKey.html +144 -0
  20. data/docs/Automodel/Connectors.html +117 -0
  21. data/docs/Automodel/Error.html +140 -0
  22. data/docs/Automodel/FindOnCompoundPrimaryKeyError.html +144 -0
  23. data/docs/Automodel/Helpers.html +722 -0
  24. data/docs/Automodel/NameCollisionError.html +143 -0
  25. data/docs/Automodel/SchemaInspector.html +1046 -0
  26. data/docs/Automodel/UnregisteredAdapter.html +144 -0
  27. data/docs/_index.html +206 -0
  28. data/docs/class_list.html +51 -0
  29. data/docs/css/common.css +1 -0
  30. data/docs/css/full_list.css +58 -0
  31. data/docs/css/style.css +496 -0
  32. data/docs/file.README.html +333 -0
  33. data/docs/file_list.html +56 -0
  34. data/docs/frames.html +17 -0
  35. data/docs/index.html +333 -0
  36. data/docs/js/app.js +292 -0
  37. data/docs/js/full_list.js +216 -0
  38. data/docs/js/jquery.js +4 -0
  39. data/docs/method_list.html +155 -0
  40. data/docs/top-level-namespace.html +478 -0
  41. data/lib/automodel.rb +132 -0
  42. data/lib/automodel/automodel.rb +4 -0
  43. data/lib/automodel/connectors.rb +8 -0
  44. data/lib/automodel/errors.rb +24 -0
  45. data/lib/automodel/helpers.rb +141 -0
  46. data/lib/automodel/schema_inspector.rb +218 -0
  47. data/lib/automodel/version.rb +10 -0
  48. data/samples/database.yml +38 -0
  49. 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
+ &mdash; 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> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Automodel.html" title="Automodel (module)">Automodel</a></span></span>
41
+ &raquo;
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: &#39;&#39;) &#x21d2; Array&lt;Hash&gt; </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&#39; 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) &#x21d2; 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) &#x21d2; 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) &#x21d2; 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: &#39;&#39;) &#x21d2; <tt>Array&lt;Hash&gt;</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&#39; 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
+ &mdash;
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
+ &mdash;
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&lt;Hash&gt;</tt>)</span>
285
+
286
+
287
+
288
+ &mdash;
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&lt;ActiveRecord::ConnectionAdapters::Column&gt;)</p>
298
+ </li><li>
299
+ <p><code>:primary_key</code> (String, Array&lt;String&gt;)</p>
300
+ </li><li>
301
+ <p><code>:foreign_keys</code>
302
+ (Array&lt;ActiveRecord::ConnectionAdapters::ForeignKeyDefinition&gt;)</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&lt;String,
312
+ ActiveRecord::ConnectionAdapters::Column&gt;)</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'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
358
+ <span class='comment'>## Normalize the &quot;subschema&quot; 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'>&quot;</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'>&quot;</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'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</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'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
361
+
362
+ <span class='comment'>## Prep the Automodel::SchemaInspector we&#39;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'>&quot;</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'>&quot;</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'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</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) &#x21d2; <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
+ &mdash;
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
+ &mdash;
439
+ <div class='inline'>
440
+ <p>The given column&#39;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'>&#39;</span><span class='tstring_end'>&#39;</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) &#x21d2; <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
+ &mdash;
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
+ &mdash;
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'>&#39;</span><span class='tstring_content'>_</span><span class='tstring_end'>&#39;</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) &#x21d2; <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
+ &mdash;
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
+ &mdash;
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
+ &mdash;
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>&quot;Sample&quot;</code> and a “within” value of
631
+ <code>&quot;Many::Levels::Deep&quot;</code> will: check for module/class
632
+ “Many” and create one as a Module if it doesn&#39;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&#39;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&#39;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
+ &mdash;
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'>&#39;</span><span class='tstring_content'>::</span><span class='tstring_end'>&#39;</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'>&amp;</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>