automodel-sqlserver 0.1.0

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