dynamoid 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/Dynamoid.gemspec +65 -3
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +6 -0
  4. data/README.markdown +117 -22
  5. data/Rakefile +22 -9
  6. data/VERSION +1 -1
  7. data/doc/.nojekyll +0 -0
  8. data/doc/Dynamoid.html +300 -0
  9. data/doc/Dynamoid/Adapter.html +1387 -0
  10. data/doc/Dynamoid/Adapter/AwsSdk.html +1561 -0
  11. data/doc/Dynamoid/Adapter/Local.html +1487 -0
  12. data/doc/Dynamoid/Associations.html +131 -0
  13. data/doc/Dynamoid/Associations/Association.html +1706 -0
  14. data/doc/Dynamoid/Associations/BelongsTo.html +339 -0
  15. data/doc/Dynamoid/Associations/ClassMethods.html +723 -0
  16. data/doc/Dynamoid/Associations/HasAndBelongsToMany.html +339 -0
  17. data/doc/Dynamoid/Associations/HasMany.html +339 -0
  18. data/doc/Dynamoid/Associations/HasOne.html +339 -0
  19. data/doc/Dynamoid/Components.html +202 -0
  20. data/doc/Dynamoid/Config.html +395 -0
  21. data/doc/Dynamoid/Config/Options.html +609 -0
  22. data/doc/Dynamoid/Criteria.html +131 -0
  23. data/doc/Dynamoid/Criteria/Chain.html +759 -0
  24. data/doc/Dynamoid/Criteria/ClassMethods.html +98 -0
  25. data/doc/Dynamoid/Document.html +512 -0
  26. data/doc/Dynamoid/Document/ClassMethods.html +581 -0
  27. data/doc/Dynamoid/Errors.html +118 -0
  28. data/doc/Dynamoid/Errors/DocumentNotValid.html +210 -0
  29. data/doc/Dynamoid/Errors/Error.html +130 -0
  30. data/doc/Dynamoid/Errors/InvalidField.html +133 -0
  31. data/doc/Dynamoid/Errors/MissingRangeKey.html +133 -0
  32. data/doc/Dynamoid/Fields.html +649 -0
  33. data/doc/Dynamoid/Fields/ClassMethods.html +264 -0
  34. data/doc/Dynamoid/Finders.html +128 -0
  35. data/doc/Dynamoid/Finders/ClassMethods.html +502 -0
  36. data/doc/Dynamoid/Indexes.html +308 -0
  37. data/doc/Dynamoid/Indexes/ClassMethods.html +351 -0
  38. data/doc/Dynamoid/Indexes/Index.html +1089 -0
  39. data/doc/Dynamoid/Persistence.html +653 -0
  40. data/doc/Dynamoid/Persistence/ClassMethods.html +568 -0
  41. data/doc/Dynamoid/Validations.html +399 -0
  42. data/doc/_index.html +439 -0
  43. data/doc/class_list.html +47 -0
  44. data/doc/css/common.css +1 -0
  45. data/doc/css/full_list.css +55 -0
  46. data/doc/css/style.css +322 -0
  47. data/doc/file.LICENSE.html +66 -0
  48. data/doc/file.README.html +279 -0
  49. data/doc/file_list.html +52 -0
  50. data/doc/frames.html +13 -0
  51. data/doc/index.html +279 -0
  52. data/doc/js/app.js +205 -0
  53. data/doc/js/full_list.js +173 -0
  54. data/doc/js/jquery.js +16 -0
  55. data/doc/method_list.html +1054 -0
  56. data/doc/top-level-namespace.html +105 -0
  57. data/lib/dynamoid.rb +2 -1
  58. data/lib/dynamoid/adapter.rb +77 -6
  59. data/lib/dynamoid/adapter/aws_sdk.rb +96 -16
  60. data/lib/dynamoid/adapter/local.rb +84 -15
  61. data/lib/dynamoid/associations.rb +53 -4
  62. data/lib/dynamoid/associations/association.rb +154 -26
  63. data/lib/dynamoid/associations/belongs_to.rb +32 -6
  64. data/lib/dynamoid/associations/has_and_belongs_to_many.rb +29 -3
  65. data/lib/dynamoid/associations/has_many.rb +30 -4
  66. data/lib/dynamoid/associations/has_one.rb +26 -3
  67. data/lib/dynamoid/components.rb +7 -5
  68. data/lib/dynamoid/config.rb +15 -2
  69. data/lib/dynamoid/config/options.rb +8 -0
  70. data/lib/dynamoid/criteria.rb +7 -2
  71. data/lib/dynamoid/criteria/chain.rb +55 -8
  72. data/lib/dynamoid/document.rb +68 -7
  73. data/lib/dynamoid/errors.rb +17 -2
  74. data/lib/dynamoid/fields.rb +44 -1
  75. data/lib/dynamoid/finders.rb +32 -6
  76. data/lib/dynamoid/indexes.rb +22 -2
  77. data/lib/dynamoid/indexes/index.rb +48 -7
  78. data/lib/dynamoid/persistence.rb +111 -51
  79. data/lib/dynamoid/validations.rb +36 -0
  80. data/spec/app/models/address.rb +2 -1
  81. data/spec/app/models/camel_case.rb +11 -0
  82. data/spec/app/models/magazine.rb +4 -1
  83. data/spec/app/models/sponsor.rb +3 -1
  84. data/spec/app/models/subscription.rb +5 -1
  85. data/spec/app/models/user.rb +10 -1
  86. data/spec/dynamoid/associations/association_spec.rb +67 -1
  87. data/spec/dynamoid/associations/belongs_to_spec.rb +16 -1
  88. data/spec/dynamoid/associations/has_and_belongs_to_many_spec.rb +7 -0
  89. data/spec/dynamoid/associations/has_many_spec.rb +14 -0
  90. data/spec/dynamoid/associations/has_one_spec.rb +10 -1
  91. data/spec/dynamoid/criteria_spec.rb +5 -1
  92. data/spec/dynamoid/document_spec.rb +23 -3
  93. data/spec/dynamoid/fields_spec.rb +10 -1
  94. data/spec/dynamoid/indexes/index_spec.rb +19 -0
  95. data/spec/dynamoid/persistence_spec.rb +24 -0
  96. data/spec/dynamoid/validations_spec.rb +36 -0
  97. metadata +105 -4
@@ -0,0 +1,1387 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Module: Dynamoid::Adapter
8
+
9
+ &mdash; Documentation by YARD 0.7.5
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '..';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="../_index.html">Index (A)</a> &raquo;
37
+ <span class='title'><span class='object_link'><a href="../Dynamoid.html" title="Dynamoid (module)">Dynamoid</a></span></span>
38
+ &raquo;
39
+ <span class="title">Adapter</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Module: Dynamoid::Adapter
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+ <dt class="r1">Extended by:</dt>
70
+ <dd class="r1"><span class='object_link'><a href="" title="Dynamoid::Adapter (module)">Adapter</a></span></dd>
71
+
72
+
73
+
74
+
75
+
76
+
77
+ <dt class="r2">Included in:</dt>
78
+ <dd class="r2"><span class='object_link'><a href="" title="Dynamoid::Adapter (module)">Adapter</a></span></dd>
79
+
80
+
81
+
82
+ <dt class="r1 last">Defined in:</dt>
83
+ <dd class="r1 last">lib/dynamoid/adapter.rb<span class="defines">,<br />
84
+ lib/dynamoid/adapter/local.rb,<br /> lib/dynamoid/adapter/aws_sdk.rb</span>
85
+ </dd>
86
+
87
+ </dl>
88
+ <div class="clear"></div>
89
+
90
+ <h2>Overview</h2><div class="docstring">
91
+ <div class="discussion">
92
+ <p>Adapter provides a generic, write-through class that abstracts variations in the underlying connections to provide a uniform response
93
+ to Dynamoid.</p>
94
+
95
+
96
+ </div>
97
+ </div>
98
+ <div class="tags">
99
+
100
+
101
+ </div><h2>Defined Under Namespace</h2>
102
+ <p class="children">
103
+
104
+
105
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Adapter/AwsSdk.html" title="Dynamoid::Adapter::AwsSdk (module)">AwsSdk</a></span>, <span class='object_link'><a href="Adapter/Local.html" title="Dynamoid::Adapter::Local (module)">Local</a></span>
106
+
107
+
108
+
109
+
110
+ </p>
111
+
112
+
113
+
114
+
115
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
116
+ <ul class="summary">
117
+
118
+ <li class="public ">
119
+ <span class="summary_signature">
120
+
121
+ <a href="#tables-instance_method" title="#tables (instance method)">- (Object) <strong>tables</strong> </a>
122
+
123
+
124
+
125
+ </span>
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute tables.</p>
138
+ </div></span>
139
+
140
+ </li>
141
+
142
+
143
+ </ul>
144
+
145
+
146
+
147
+
148
+
149
+ <h2>
150
+ Instance Method Summary
151
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
152
+ </h2>
153
+
154
+ <ul class="summary">
155
+
156
+ <li class="public ">
157
+ <span class="summary_signature">
158
+
159
+ <a href="#adapter-instance_method" title="#adapter (instance method)">- (Object) <strong>adapter</strong> </a>
160
+
161
+
162
+
163
+ </span>
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+ <span class="summary_desc"><div class='inline'><p>The actual adapter currently in use: presently, either AwsSdk or Local.</p>
173
+ </div></span>
174
+
175
+ </li>
176
+
177
+
178
+ <li class="public ">
179
+ <span class="summary_signature">
180
+
181
+ <a href="#benchmark-instance_method" title="#benchmark (instance method)">- (Object) <strong>benchmark</strong>(method, *args) { ... }</a>
182
+
183
+
184
+
185
+ </span>
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+ <span class="summary_desc"><div class='inline'><p>Shows how long it takes a method to run on the adapter.</p>
195
+ </div></span>
196
+
197
+ </li>
198
+
199
+
200
+ <li class="public ">
201
+ <span class="summary_signature">
202
+
203
+ <a href="#delete-instance_method" title="#delete (instance method)">- (Object) <strong>delete</strong>(table, id, range_key = nil) </a>
204
+
205
+
206
+
207
+ </span>
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+ <span class="summary_desc"><div class='inline'><p>Delete an item from a table.</p>
217
+ </div></span>
218
+
219
+ </li>
220
+
221
+
222
+ <li class="public ">
223
+ <span class="summary_signature">
224
+
225
+ <a href="#id_with_partitions-instance_method" title="#id_with_partitions (instance method)">- (Object) <strong>id_with_partitions</strong>(ids) </a>
226
+
227
+
228
+
229
+ </span>
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+ <span class="summary_desc"><div class='inline'><p>Takes a list of ids and returns them with partitioning added.</p>
239
+ </div></span>
240
+
241
+ </li>
242
+
243
+
244
+ <li class="public ">
245
+ <span class="summary_signature">
246
+
247
+ <a href="#method_missing-instance_method" title="#method_missing (instance method)">- (Object) <strong>method_missing</strong>(method, *args) </a>
248
+
249
+
250
+
251
+ </span>
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+ <span class="summary_desc"><div class='inline'><p>Delegate all methods that aren't defind here to the underlying adapter.</p>
261
+ </div></span>
262
+
263
+ </li>
264
+
265
+
266
+ <li class="public ">
267
+ <span class="summary_signature">
268
+
269
+ <a href="#read-instance_method" title="#read (instance method)">- (Object) <strong>read</strong>(table, ids, range_key = nil) </a>
270
+
271
+
272
+
273
+ </span>
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+ <span class="summary_desc"><div class='inline'><p>Read one or many keys from the selected table.</p>
283
+ </div></span>
284
+
285
+ </li>
286
+
287
+
288
+ <li class="public ">
289
+ <span class="summary_signature">
290
+
291
+ <a href="#reconnect%21-instance_method" title="#reconnect! (instance method)">- (Object) <strong>reconnect!</strong> </a>
292
+
293
+
294
+
295
+ </span>
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+ <span class="summary_desc"><div class='inline'><p>Establishes a connection to the underyling adapter and caches all its tables for speedier future lookups.</p>
305
+ </div></span>
306
+
307
+ </li>
308
+
309
+
310
+ <li class="public ">
311
+ <span class="summary_signature">
312
+
313
+ <a href="#result_for_partition-instance_method" title="#result_for_partition (instance method)">- (Object) <strong>result_for_partition</strong>(results) </a>
314
+
315
+
316
+
317
+ </span>
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+ <span class="summary_desc"><div class='inline'><p>Takes an array of results that are partitioned, find the most recently updated one, and return only it.</p>
327
+ </div></span>
328
+
329
+ </li>
330
+
331
+
332
+ <li class="public ">
333
+ <span class="summary_signature">
334
+
335
+ <a href="#scan-instance_method" title="#scan (instance method)">- (Object) <strong>scan</strong>(table, query) </a>
336
+
337
+
338
+
339
+ </span>
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+ <span class="summary_desc"><div class='inline'><p>Scans a table.</p>
349
+ </div></span>
350
+
351
+ </li>
352
+
353
+
354
+ <li class="public ">
355
+ <span class="summary_signature">
356
+
357
+ <a href="#write-instance_method" title="#write (instance method)">- (Object) <strong>write</strong>(table, object) </a>
358
+
359
+
360
+
361
+ </span>
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+ <span class="summary_desc"><div class='inline'><p>Write an object to the adapter.</p>
371
+ </div></span>
372
+
373
+ </li>
374
+
375
+
376
+ </ul>
377
+
378
+
379
+ <div id="method_missing_details" class="method_details_list">
380
+ <h2>Dynamic Method Handling</h2>
381
+ <p class="notice this">
382
+ This class handles dynamic methods through the <tt>method_missing</tt> method
383
+
384
+ </p>
385
+
386
+ <div class="method_details first">
387
+ <p class="signature first" id="method_missing-instance_method">
388
+
389
+ - (<tt>Object</tt>) <strong>method_missing</strong>(method, *args)
390
+
391
+
392
+
393
+ </p><div class="docstring">
394
+ <div class="discussion">
395
+ <p>Delegate all methods that aren't defind here to the underlying adapter.</p>
396
+
397
+
398
+ </div>
399
+ </div>
400
+ <div class="tags">
401
+
402
+ <h3>Since:</h3>
403
+ <ul class="since">
404
+
405
+ <li>
406
+
407
+
408
+
409
+
410
+
411
+ <div class='inline'><p>0.2.0</p>
412
+ </div>
413
+
414
+ </li>
415
+
416
+ </ul>
417
+
418
+ </div><table class="source_code">
419
+ <tr>
420
+ <td>
421
+ <pre class="lines">
422
+
423
+
424
+ 168
425
+ 169
426
+ 170
427
+ 171</pre>
428
+ </td>
429
+ <td>
430
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 168</span>
431
+
432
+ <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
433
+ <span class='kw'>return</span> <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
434
+ <span class='kw'>super</span>
435
+ <span class='kw'>end</span></pre>
436
+ </td>
437
+ </tr>
438
+ </table>
439
+ </div>
440
+
441
+ </div>
442
+
443
+ <div id="instance_attr_details" class="attr_details">
444
+ <h2>Instance Attribute Details</h2>
445
+
446
+
447
+ <span id="tables=-instance_method"></span>
448
+ <span id="tables-instance_method"></span>
449
+ <div class="method_details first">
450
+ <p class="signature first" id="tables-instance_method">
451
+
452
+ - (<tt>Object</tt>) <strong>tables</strong>
453
+
454
+
455
+
456
+ </p><div class="docstring">
457
+ <div class="discussion">
458
+ <p>Returns the value of attribute tables</p>
459
+
460
+
461
+ </div>
462
+ </div>
463
+ <div class="tags">
464
+
465
+
466
+ </div><table class="source_code">
467
+ <tr>
468
+ <td>
469
+ <pre class="lines">
470
+
471
+
472
+ 8
473
+ 9
474
+ 10</pre>
475
+ </td>
476
+ <td>
477
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 8</span>
478
+
479
+ <span class='kw'>def</span> <span class='id identifier rubyid_tables'>tables</span>
480
+ <span class='ivar'>@tables</span>
481
+ <span class='kw'>end</span></pre>
482
+ </td>
483
+ </tr>
484
+ </table>
485
+ </div>
486
+
487
+ </div>
488
+
489
+
490
+ <div id="instance_method_details" class="method_details_list">
491
+ <h2>Instance Method Details</h2>
492
+
493
+
494
+ <div class="method_details first">
495
+ <p class="signature first" id="adapter-instance_method">
496
+
497
+ - (<tt>Object</tt>) <strong>adapter</strong>
498
+
499
+
500
+
501
+ </p><div class="docstring">
502
+ <div class="discussion">
503
+ <p>The actual adapter currently in use: presently, either AwsSdk or Local.</p>
504
+
505
+
506
+ </div>
507
+ </div>
508
+ <div class="tags">
509
+
510
+ <h3>Since:</h3>
511
+ <ul class="since">
512
+
513
+ <li>
514
+
515
+
516
+
517
+
518
+
519
+ <div class='inline'><p>0.2.0</p>
520
+ </div>
521
+
522
+ </li>
523
+
524
+ </ul>
525
+
526
+ </div><table class="source_code">
527
+ <tr>
528
+ <td>
529
+ <pre class="lines">
530
+
531
+
532
+ 13
533
+ 14
534
+ 15
535
+ 16</pre>
536
+ </td>
537
+ <td>
538
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 13</span>
539
+
540
+ <span class='kw'>def</span> <span class='id identifier rubyid_adapter'>adapter</span>
541
+ <span class='id identifier rubyid_reconnect!'>reconnect!</span> <span class='kw'>unless</span> <span class='ivar'>@adapter</span>
542
+ <span class='ivar'>@adapter</span>
543
+ <span class='kw'>end</span></pre>
544
+ </td>
545
+ </tr>
546
+ </table>
547
+ </div>
548
+
549
+ <div class="method_details ">
550
+ <p class="signature " id="benchmark-instance_method">
551
+
552
+ - (<tt>Object</tt>) <strong>benchmark</strong>(method, *args) { ... }
553
+
554
+
555
+
556
+ </p><div class="docstring">
557
+ <div class="discussion">
558
+ <p>Shows how long it takes a method to run on the adapter. Useful for generating logged output.</p>
559
+
560
+
561
+ </div>
562
+ </div>
563
+ <div class="tags">
564
+ <h3>Parameters:</h3>
565
+ <ul class="param">
566
+
567
+ <li>
568
+
569
+ <span class='name'>method</span>
570
+
571
+
572
+ <span class='type'>(<tt>Symbol</tt>)</span>
573
+
574
+
575
+
576
+ &mdash;
577
+ <div class='inline'><p>the name of the method to appear in the log</p>
578
+ </div>
579
+
580
+ </li>
581
+
582
+ <li>
583
+
584
+ <span class='name'>args</span>
585
+
586
+
587
+ <span class='type'>(<tt>Array</tt>)</span>
588
+
589
+
590
+
591
+ &mdash;
592
+ <div class='inline'><p>the arguments to the method to appear in the log</p>
593
+ </div>
594
+
595
+ </li>
596
+
597
+ </ul>
598
+
599
+ <h3>Yields:</h3>
600
+ <ul class="yield">
601
+
602
+ <li>
603
+
604
+
605
+ <span class='type'></span>
606
+
607
+
608
+
609
+
610
+ <div class='inline'><p>the actual code to benchmark</p>
611
+ </div>
612
+
613
+ </li>
614
+
615
+ </ul>
616
+ <h3>Returns:</h3>
617
+ <ul class="return">
618
+
619
+ <li>
620
+
621
+
622
+ <span class='type'></span>
623
+
624
+
625
+
626
+
627
+ <div class='inline'><p>the result of the yield</p>
628
+ </div>
629
+
630
+ </li>
631
+
632
+ </ul>
633
+ <h3>Since:</h3>
634
+ <ul class="since">
635
+
636
+ <li>
637
+
638
+
639
+
640
+
641
+
642
+ <div class='inline'><p>0.2.0</p>
643
+ </div>
644
+
645
+ </li>
646
+
647
+ </ul>
648
+
649
+ </div><table class="source_code">
650
+ <tr>
651
+ <td>
652
+ <pre class="lines">
653
+
654
+
655
+ 37
656
+ 38
657
+ 39
658
+ 40
659
+ 41
660
+ 42</pre>
661
+ </td>
662
+ <td>
663
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 37</span>
664
+
665
+ <span class='kw'>def</span> <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
666
+ <span class='id identifier rubyid_start'>start</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span>
667
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='kw'>yield</span>
668
+ <span class='const'>Dynamoid</span><span class='period'>.</span><span class='id identifier rubyid_logger'>logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='lparen'>(</span><span class='lparen'>(</span><span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span> <span class='op'>-</span> <span class='id identifier rubyid_start'>start</span><span class='rparen'>)</span> <span class='op'>*</span> <span class='float'>1000.0</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_content'> ms) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_method'>method</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_collect'>collect</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:upcase</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</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='rbrace'>}</span><span class='embexpr_beg'>#{</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> - </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
669
+ <span class='kw'>return</span> <span class='id identifier rubyid_result'>result</span>
670
+ <span class='kw'>end</span></pre>
671
+ </td>
672
+ </tr>
673
+ </table>
674
+ </div>
675
+
676
+ <div class="method_details ">
677
+ <p class="signature " id="delete-instance_method">
678
+
679
+ - (<tt>Object</tt>) <strong>delete</strong>(table, id, range_key = nil)
680
+
681
+
682
+
683
+ </p><div class="docstring">
684
+ <div class="discussion">
685
+ <p>Delete an item from a table. If partitioning is turned on, deletes all partitioned keys as well.</p>
686
+
687
+
688
+ </div>
689
+ </div>
690
+ <div class="tags">
691
+ <h3>Parameters:</h3>
692
+ <ul class="param">
693
+
694
+ <li>
695
+
696
+ <span class='name'>table</span>
697
+
698
+
699
+ <span class='type'>(<tt>String</tt>)</span>
700
+
701
+
702
+
703
+ &mdash;
704
+ <div class='inline'><p>the name of the table to write the object to</p>
705
+ </div>
706
+
707
+ </li>
708
+
709
+ <li>
710
+
711
+ <span class='name'>id</span>
712
+
713
+
714
+ <span class='type'>(<tt>String</tt>)</span>
715
+
716
+
717
+
718
+ &mdash;
719
+ <div class='inline'><p>the id of the record</p>
720
+ </div>
721
+
722
+ </li>
723
+
724
+ <li>
725
+
726
+ <span class='name'>range_key</span>
727
+
728
+
729
+ <span class='type'>(<tt>Number</tt>)</span>
730
+
731
+
732
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
733
+
734
+
735
+ &mdash;
736
+ <div class='inline'><p>the range key of the record</p>
737
+ </div>
738
+
739
+ </li>
740
+
741
+ </ul>
742
+
743
+ <h3>Since:</h3>
744
+ <ul class="since">
745
+
746
+ <li>
747
+
748
+
749
+
750
+
751
+
752
+ <div class='inline'><p>0.2.0</p>
753
+ </div>
754
+
755
+ </li>
756
+
757
+ </ul>
758
+
759
+ </div><table class="source_code">
760
+ <tr>
761
+ <td>
762
+ <pre class="lines">
763
+
764
+
765
+ 97
766
+ 98
767
+ 99
768
+ 100
769
+ 101
770
+ 102
771
+ 103
772
+ 104
773
+ 105</pre>
774
+ </td>
775
+ <td>
776
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 97</span>
777
+
778
+ <span class='kw'>def</span> <span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_range_key'>range_key</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
779
+ <span class='kw'>if</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_partitioning?'>partitioning?</span>
780
+ <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Delete Item</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span> <span class='kw'>do</span>
781
+ <span class='id identifier rubyid_id_with_partitions'>id_with_partitions</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_i'>i</span><span class='op'>|</span> <span class='id identifier rubyid_delete_item'>delete_item</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_i'>i</span><span class='comma'>,</span> <span class='id identifier rubyid_range_key'>range_key</span><span class='rparen'>)</span><span class='rbrace'>}</span>
782
+ <span class='kw'>end</span>
783
+ <span class='kw'>else</span>
784
+ <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Delete Item</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_delete_item'>delete_item</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_range_key'>range_key</span><span class='rparen'>)</span><span class='rbrace'>}</span>
785
+ <span class='kw'>end</span>
786
+ <span class='kw'>end</span></pre>
787
+ </td>
788
+ </tr>
789
+ </table>
790
+ </div>
791
+
792
+ <div class="method_details ">
793
+ <p class="signature " id="id_with_partitions-instance_method">
794
+
795
+ - (<tt>Object</tt>) <strong>id_with_partitions</strong>(ids)
796
+
797
+
798
+
799
+ </p><div class="docstring">
800
+ <div class="discussion">
801
+ <p>Takes a list of ids and returns them with partitioning added. If an array of arrays is passed, we assume the second key is the range key
802
+ and pass it in unchanged.</p>
803
+
804
+
805
+ </div>
806
+ </div>
807
+ <div class="tags">
808
+
809
+ <div class="examples">
810
+ <h3>Examples:</h3>
811
+
812
+ <h4><div class='inline'><p>Partition id 1</p>
813
+ </div></h4>
814
+ <pre class="example code"><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_id_with_partitions'>id_with_partitions</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>1</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='comment'># ['1.0', '1.1', '1.2', ..., '1.199']</span></pre>
815
+
816
+ <h4><div class='inline'><p>Partition id 1 and range_key 1.0</p>
817
+ </div></h4>
818
+ <pre class="example code"><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_id_with_partitions'>id_with_partitions</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='float'>1.0</span><span class='rbracket'>]</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='comment'># [['1.0', 1.0], ['1.1', 1.0], ['1.2', 1.0], ..., ['1.199', 1.0]]</span></pre>
819
+
820
+ </div>
821
+ <h3>Parameters:</h3>
822
+ <ul class="param">
823
+
824
+ <li>
825
+
826
+ <span class='name'>ids</span>
827
+
828
+
829
+ <span class='type'>(<tt>Array</tt>)</span>
830
+
831
+
832
+
833
+ &mdash;
834
+ <div class='inline'><p>array of ids to partition</p>
835
+ </div>
836
+
837
+ </li>
838
+
839
+ </ul>
840
+
841
+ <h3>Since:</h3>
842
+ <ul class="since">
843
+
844
+ <li>
845
+
846
+
847
+
848
+
849
+
850
+ <div class='inline'><p>0.2.0</p>
851
+ </div>
852
+
853
+ </li>
854
+
855
+ </ul>
856
+
857
+ </div><table class="source_code">
858
+ <tr>
859
+ <td>
860
+ <pre class="lines">
861
+
862
+
863
+ 142
864
+ 143
865
+ 144</pre>
866
+ </td>
867
+ <td>
868
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 142</span>
869
+
870
+ <span class='kw'>def</span> <span class='id identifier rubyid_id_with_partitions'>id_with_partitions</span><span class='lparen'>(</span><span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span>
871
+ <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_id'>id</span><span class='op'>|</span> <span class='lparen'>(</span><span class='int'>0</span><span class='op'>...</span><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_partition_size'>partition_size</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_id'>id</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_id'>id</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rbrace'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_n'>n</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_id'>id</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</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_id'>id</span><span class='rbrace'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_n'>n</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='rbrace'>}</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='lparen'>(</span><span class='int'>1</span><span class='rparen'>)</span>
872
+ <span class='kw'>end</span></pre>
873
+ </td>
874
+ </tr>
875
+ </table>
876
+ </div>
877
+
878
+ <div class="method_details ">
879
+ <p class="signature " id="read-instance_method">
880
+
881
+ - (<tt>Object</tt>) <strong>read</strong>(table, ids, range_key = nil)
882
+
883
+
884
+
885
+ </p><div class="docstring">
886
+ <div class="discussion">
887
+ <p>Read one or many keys from the selected table. This method intelligently calls batch_get or get on the underlying adapter depending on
888
+ whether ids is a range or a single key: additionally, if partitioning is enabled, it batch_gets all keys in the partition space
889
+ automatically. Finally, if a range key is present, it will also interpolate that into the ids so that the batch get will acquire the
890
+ correct record.</p>
891
+
892
+
893
+ </div>
894
+ </div>
895
+ <div class="tags">
896
+ <h3>Parameters:</h3>
897
+ <ul class="param">
898
+
899
+ <li>
900
+
901
+ <span class='name'>table</span>
902
+
903
+
904
+ <span class='type'>(<tt>String</tt>)</span>
905
+
906
+
907
+
908
+ &mdash;
909
+ <div class='inline'><p>the name of the table to write the object to</p>
910
+ </div>
911
+
912
+ </li>
913
+
914
+ <li>
915
+
916
+ <span class='name'>ids</span>
917
+
918
+
919
+ <span class='type'>(<tt>Array</tt>)</span>
920
+
921
+
922
+
923
+ &mdash;
924
+ <div class='inline'><p>to fetch, can also be a string of just one id</p>
925
+ </div>
926
+
927
+ </li>
928
+
929
+ <li>
930
+
931
+ <span class='name'>range_key</span>
932
+
933
+
934
+ <span class='type'>(<tt>Number</tt>)</span>
935
+
936
+
937
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
938
+
939
+
940
+ &mdash;
941
+ <div class='inline'><p>the range key of the record</p>
942
+ </div>
943
+
944
+ </li>
945
+
946
+ </ul>
947
+
948
+ <h3>Since:</h3>
949
+ <ul class="since">
950
+
951
+ <li>
952
+
953
+
954
+
955
+
956
+
957
+ <div class='inline'><p>0.2.0</p>
958
+ </div>
959
+
960
+ </li>
961
+
962
+ </ul>
963
+
964
+ </div><table class="source_code">
965
+ <tr>
966
+ <td>
967
+ <pre class="lines">
968
+
969
+
970
+ 70
971
+ 71
972
+ 72
973
+ 73
974
+ 74
975
+ 75
976
+ 76
977
+ 77
978
+ 78
979
+ 79
980
+ 80
981
+ 81
982
+ 82
983
+ 83
984
+ 84
985
+ 85
986
+ 86
987
+ 87
988
+ 88</pre>
989
+ </td>
990
+ <td>
991
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 70</span>
992
+
993
+ <span class='kw'>def</span> <span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_ids'>ids</span><span class='comma'>,</span> <span class='id identifier rubyid_range_key'>range_key</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
994
+ <span class='kw'>if</span> <span class='id identifier rubyid_ids'>ids</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:each</span><span class='rparen'>)</span>
995
+ <span class='id identifier rubyid_ids'>ids</span> <span class='op'>=</span> <span class='id identifier rubyid_ids'>ids</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_id'>id</span><span class='op'>|</span> <span class='id identifier rubyid_range_key'>range_key</span> <span class='op'>?</span> <span class='lbracket'>[</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_range_key'>range_key</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='id identifier rubyid_id'>id</span><span class='rbrace'>}</span>
996
+ <span class='kw'>if</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_partitioning?'>partitioning?</span>
997
+ <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Partitioned Batch Get Item</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_batch_get_item'>batch_get_item</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_id_with_partitions'>id_with_partitions</span><span class='lparen'>(</span><span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rbrace'>}</span>
998
+ <span class='lbrace'>{</span><span class='id identifier rubyid_table'>table</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_result_for_partition'>result_for_partition</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='lbracket'>[</span><span class='id identifier rubyid_table'>table</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbrace'>}</span>
999
+ <span class='kw'>else</span>
1000
+ <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Batch Get Item</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_batch_get_item'>batch_get_item</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span><span class='rbrace'>}</span>
1001
+ <span class='kw'>end</span>
1002
+ <span class='kw'>else</span>
1003
+ <span class='kw'>if</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_partitioning?'>partitioning?</span>
1004
+ <span class='id identifier rubyid_ids'>ids</span> <span class='op'>=</span> <span class='id identifier rubyid_range_key'>range_key</span> <span class='op'>?</span> <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='id identifier rubyid_ids'>ids</span><span class='comma'>,</span> <span class='id identifier rubyid_range_key'>range_key</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='id identifier rubyid_ids'>ids</span>
1005
+ <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Partitioned Get Item</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_batch_get_item'>batch_get_item</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_id_with_partitions'>id_with_partitions</span><span class='lparen'>(</span><span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rbrace'>}</span>
1006
+ <span class='id identifier rubyid_result_for_partition'>result_for_partition</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='lbracket'>[</span><span class='id identifier rubyid_table'>table</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
1007
+ <span class='kw'>else</span>
1008
+ <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Get Item</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_ids'>ids</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_get_item'>get_item</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_ids'>ids</span><span class='comma'>,</span> <span class='id identifier rubyid_range_key'>range_key</span><span class='rparen'>)</span><span class='rbrace'>}</span>
1009
+ <span class='kw'>end</span>
1010
+ <span class='kw'>end</span>
1011
+ <span class='kw'>end</span></pre>
1012
+ </td>
1013
+ </tr>
1014
+ </table>
1015
+ </div>
1016
+
1017
+ <div class="method_details ">
1018
+ <p class="signature " id="reconnect!-instance_method">
1019
+
1020
+ - (<tt>Object</tt>) <strong>reconnect!</strong>
1021
+
1022
+
1023
+
1024
+ </p><div class="docstring">
1025
+ <div class="discussion">
1026
+ <p>Establishes a connection to the underyling adapter and caches all its tables for speedier future lookups. Issued when the adapter is first called.</p>
1027
+
1028
+
1029
+ </div>
1030
+ </div>
1031
+ <div class="tags">
1032
+
1033
+ <h3>Since:</h3>
1034
+ <ul class="since">
1035
+
1036
+ <li>
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+ <div class='inline'><p>0.2.0</p>
1043
+ </div>
1044
+
1045
+ </li>
1046
+
1047
+ </ul>
1048
+
1049
+ </div><table class="source_code">
1050
+ <tr>
1051
+ <td>
1052
+ <pre class="lines">
1053
+
1054
+
1055
+ 21
1056
+ 22
1057
+ 23
1058
+ 24
1059
+ 25
1060
+ 26</pre>
1061
+ </td>
1062
+ <td>
1063
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 21</span>
1064
+
1065
+ <span class='kw'>def</span> <span class='id identifier rubyid_reconnect!'>reconnect!</span>
1066
+ <span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>dynamoid/adapter/</span><span class='embexpr_beg'>#{</span><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_adapter'>adapter</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_const_defined?'>const_defined?</span><span class='lparen'>(</span><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_camelcase'>camelcase</span><span class='rparen'>)</span>
1067
+ <span class='ivar'>@adapter</span> <span class='op'>=</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_camelcase'>camelcase</span><span class='rparen'>)</span>
1068
+ <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_connect!'>connect!</span> <span class='kw'>if</span> <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:connect!</span><span class='rparen'>)</span>
1069
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_tables'>tables</span> <span class='op'>=</span> <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Cache Tables</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_list_tables'>list_tables</span><span class='rbrace'>}</span>
1070
+ <span class='kw'>end</span></pre>
1071
+ </td>
1072
+ </tr>
1073
+ </table>
1074
+ </div>
1075
+
1076
+ <div class="method_details ">
1077
+ <p class="signature " id="result_for_partition-instance_method">
1078
+
1079
+ - (<tt>Object</tt>) <strong>result_for_partition</strong>(results)
1080
+
1081
+
1082
+
1083
+ </p><div class="docstring">
1084
+ <div class="discussion">
1085
+ <p>Takes an array of results that are partitioned, find the most recently updated one, and return only it. Compares each result by
1086
+ their id and updated_at attributes; if the updated_at is the greatest, then it must be the correct result.</p>
1087
+
1088
+
1089
+ </div>
1090
+ </div>
1091
+ <div class="tags">
1092
+ <h3>Parameters:</h3>
1093
+ <ul class="param">
1094
+
1095
+ <li>
1096
+
1097
+ <span class='name'>returned</span>
1098
+
1099
+
1100
+ <span class='type'>(<tt>Array</tt>)</span>
1101
+
1102
+
1103
+
1104
+ &mdash;
1105
+ <div class='inline'><p>partitioned results from a query</p>
1106
+ </div>
1107
+
1108
+ </li>
1109
+
1110
+ </ul>
1111
+
1112
+ <h3>Since:</h3>
1113
+ <ul class="since">
1114
+
1115
+ <li>
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+ <div class='inline'><p>0.2.0</p>
1122
+ </div>
1123
+
1124
+ </li>
1125
+
1126
+ </ul>
1127
+
1128
+ </div><table class="source_code">
1129
+ <tr>
1130
+ <td>
1131
+ <pre class="lines">
1132
+
1133
+
1134
+ 152
1135
+ 153
1136
+ 154
1137
+ 155
1138
+ 156
1139
+ 157
1140
+ 158
1141
+ 159
1142
+ 160
1143
+ 161
1144
+ 162
1145
+ 163</pre>
1146
+ </td>
1147
+ <td>
1148
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 152</span>
1149
+
1150
+ <span class='kw'>def</span> <span class='id identifier rubyid_result_for_partition'>result_for_partition</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span>
1151
+ <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_tap'>tap</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_hash'>hash</span><span class='op'>|</span>
1152
+ <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</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_result'>result</span><span class='op'>|</span>
1153
+ <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1154
+ <span class='id identifier rubyid_id'>id</span> <span class='op'>=</span> <span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='symbol'>:id</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_first'>first</span>
1155
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_id'>id</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='symbol'>:updated_at</span><span class='rbracket'>]</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_id'>id</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='symbol'>:updated_at</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1156
+ <span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='symbol'>:id</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_id'>id</span>
1157
+ <span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_id'>id</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_result'>result</span>
1158
+ <span class='kw'>end</span>
1159
+ <span class='kw'>end</span>
1160
+ <span class='kw'>end</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span>
1161
+ <span class='kw'>end</span></pre>
1162
+ </td>
1163
+ </tr>
1164
+ </table>
1165
+ </div>
1166
+
1167
+ <div class="method_details ">
1168
+ <p class="signature " id="scan-instance_method">
1169
+
1170
+ - (<tt>Object</tt>) <strong>scan</strong>(table, query)
1171
+
1172
+
1173
+
1174
+ </p><div class="docstring">
1175
+ <div class="discussion">
1176
+ <p>Scans a table. Generally quite slow; try to avoid using scan if at all possible.</p>
1177
+
1178
+
1179
+ </div>
1180
+ </div>
1181
+ <div class="tags">
1182
+ <h3>Parameters:</h3>
1183
+ <ul class="param">
1184
+
1185
+ <li>
1186
+
1187
+ <span class='name'>table</span>
1188
+
1189
+
1190
+ <span class='type'>(<tt>String</tt>)</span>
1191
+
1192
+
1193
+
1194
+ &mdash;
1195
+ <div class='inline'><p>the name of the table to write the object to</p>
1196
+ </div>
1197
+
1198
+ </li>
1199
+
1200
+ <li>
1201
+
1202
+ <span class='name'>scan_hash</span>
1203
+
1204
+
1205
+ <span class='type'>(<tt>Hash</tt>)</span>
1206
+
1207
+
1208
+
1209
+ &mdash;
1210
+ <div class='inline'><p>a hash of attributes: matching records will be returned by the scan</p>
1211
+ </div>
1212
+
1213
+ </li>
1214
+
1215
+ </ul>
1216
+
1217
+ <h3>Since:</h3>
1218
+ <ul class="since">
1219
+
1220
+ <li>
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+ <div class='inline'><p>0.2.0</p>
1227
+ </div>
1228
+
1229
+ </li>
1230
+
1231
+ </ul>
1232
+
1233
+ </div><table class="source_code">
1234
+ <tr>
1235
+ <td>
1236
+ <pre class="lines">
1237
+
1238
+
1239
+ 113
1240
+ 114
1241
+ 115
1242
+ 116
1243
+ 117
1244
+ 118
1245
+ 119
1246
+ 120</pre>
1247
+ </td>
1248
+ <td>
1249
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 113</span>
1250
+
1251
+ <span class='kw'>def</span> <span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1252
+ <span class='kw'>if</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_partitioning?'>partitioning?</span>
1253
+ <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Scan</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span><span class='rbrace'>}</span>
1254
+ <span class='id identifier rubyid_result_for_partition'>result_for_partition</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span>
1255
+ <span class='kw'>else</span>
1256
+ <span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1257
+ <span class='kw'>end</span>
1258
+ <span class='kw'>end</span></pre>
1259
+ </td>
1260
+ </tr>
1261
+ </table>
1262
+ </div>
1263
+
1264
+ <div class="method_details ">
1265
+ <p class="signature " id="write-instance_method">
1266
+
1267
+ - (<tt>Object</tt>) <strong>write</strong>(table, object)
1268
+
1269
+
1270
+
1271
+ </p><div class="docstring">
1272
+ <div class="discussion">
1273
+ <p>Write an object to the adapter. Partition it to a randomly selected key first if necessary.</p>
1274
+
1275
+
1276
+ </div>
1277
+ </div>
1278
+ <div class="tags">
1279
+ <h3>Parameters:</h3>
1280
+ <ul class="param">
1281
+
1282
+ <li>
1283
+
1284
+ <span class='name'>table</span>
1285
+
1286
+
1287
+ <span class='type'>(<tt>String</tt>)</span>
1288
+
1289
+
1290
+
1291
+ &mdash;
1292
+ <div class='inline'><p>the name of the table to write the object to</p>
1293
+ </div>
1294
+
1295
+ </li>
1296
+
1297
+ <li>
1298
+
1299
+ <span class='name'>object</span>
1300
+
1301
+
1302
+ <span class='type'>(<tt>Object</tt>)</span>
1303
+
1304
+
1305
+
1306
+ &mdash;
1307
+ <div class='inline'><p>the object itself</p>
1308
+ </div>
1309
+
1310
+ </li>
1311
+
1312
+ </ul>
1313
+
1314
+ <h3>Returns:</h3>
1315
+ <ul class="return">
1316
+
1317
+ <li>
1318
+
1319
+
1320
+ <span class='type'>(<tt>Object</tt>)</span>
1321
+
1322
+
1323
+
1324
+ &mdash;
1325
+ <div class='inline'><p>the persisted object</p>
1326
+ </div>
1327
+
1328
+ </li>
1329
+
1330
+ </ul>
1331
+ <h3>Since:</h3>
1332
+ <ul class="since">
1333
+
1334
+ <li>
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+ <div class='inline'><p>0.2.0</p>
1341
+ </div>
1342
+
1343
+ </li>
1344
+
1345
+ </ul>
1346
+
1347
+ </div><table class="source_code">
1348
+ <tr>
1349
+ <td>
1350
+ <pre class="lines">
1351
+
1352
+
1353
+ 52
1354
+ 53
1355
+ 54
1356
+ 55
1357
+ 56
1358
+ 57
1359
+ 58</pre>
1360
+ </td>
1361
+ <td>
1362
+ <pre class="code"><span class="info file"># File 'lib/dynamoid/adapter.rb', line 52</span>
1363
+
1364
+ <span class='kw'>def</span> <span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_object'>object</span><span class='rparen'>)</span>
1365
+ <span class='kw'>if</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_partitioning?'>partitioning?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_object'>object</span><span class='lbracket'>[</span><span class='symbol'>:id</span><span class='rbracket'>]</span>
1366
+ <span class='id identifier rubyid_object'>object</span><span class='lbracket'>[</span><span class='symbol'>:id</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_object'>object</span><span class='lbracket'>[</span><span class='symbol'>:id</span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='const'>Random</span><span class='period'>.</span><span class='id identifier rubyid_rand'>rand</span><span class='lparen'>(</span><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_partition_size'>partition_size</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
1367
+ <span class='id identifier rubyid_object'>object</span><span class='lbracket'>[</span><span class='symbol'>:updated_at</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
1368
+ <span class='kw'>end</span>
1369
+ <span class='id identifier rubyid_benchmark'>benchmark</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Put Item</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_object'>object</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='id identifier rubyid_put_item'>put_item</span><span class='lparen'>(</span><span class='id identifier rubyid_table'>table</span><span class='comma'>,</span> <span class='id identifier rubyid_object'>object</span><span class='rparen'>)</span><span class='rbrace'>}</span>
1370
+ <span class='kw'>end</span></pre>
1371
+ </td>
1372
+ </tr>
1373
+ </table>
1374
+ </div>
1375
+
1376
+ </div>
1377
+
1378
+ </div>
1379
+
1380
+ <div id="footer">
1381
+ Generated on Tue Mar 27 17:53:06 2012 by
1382
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1383
+ 0.7.5 (ruby-1.9.3).
1384
+ </div>
1385
+
1386
+ </body>
1387
+ </html>