esp_sdk 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +6 -1
  4. data/Gemfile.lock +11 -1
  5. data/README.md +287 -28
  6. data/bin/esp +15 -0
  7. data/esp_sdk.gemspec +2 -0
  8. data/lib/esp/aws_clients.rb +60 -0
  9. data/lib/esp/commands/add_external_account.rb +57 -0
  10. data/lib/esp/commands/commands_tasks.rb +106 -0
  11. data/lib/esp/commands/console.rb +68 -0
  12. data/lib/esp/extensions/active_resource/formats/json_api_format.rb +12 -4
  13. data/lib/esp/extensions/active_resource/paginated_collection.rb +5 -5
  14. data/lib/esp/extensions/active_resource/validations.rb +1 -1
  15. data/lib/esp/external_account_creator.rb +77 -0
  16. data/lib/esp/resources/alert.rb +30 -34
  17. data/lib/esp/resources/cloud_trail_event.rb +5 -0
  18. data/lib/esp/resources/contact_request.rb +6 -5
  19. data/lib/esp/resources/custom_signature.rb +32 -56
  20. data/lib/esp/resources/dashboard.rb +8 -1
  21. data/lib/esp/resources/external_account.rb +27 -19
  22. data/lib/esp/resources/organization.rb +27 -3
  23. data/lib/esp/resources/region.rb +15 -3
  24. data/lib/esp/resources/report.rb +28 -24
  25. data/lib/esp/resources/resource.rb +26 -10
  26. data/lib/esp/resources/service.rb +5 -0
  27. data/lib/esp/resources/signature.rb +28 -12
  28. data/lib/esp/resources/stat.rb +21 -2
  29. data/lib/esp/resources/stat_custom_signature.rb +30 -4
  30. data/lib/esp/resources/stat_region.rb +29 -3
  31. data/lib/esp/resources/stat_service.rb +29 -3
  32. data/lib/esp/resources/stat_signature.rb +29 -3
  33. data/lib/esp/resources/sub_organization.rb +27 -3
  34. data/lib/esp/resources/suppression/region.rb +14 -32
  35. data/lib/esp/resources/suppression/signature.rb +14 -40
  36. data/lib/esp/resources/suppression/unique_identifier.rb +8 -6
  37. data/lib/esp/resources/suppression.rb +43 -5
  38. data/lib/esp/resources/tag.rb +5 -0
  39. data/lib/esp/resources/team.rb +33 -9
  40. data/lib/esp/resources/user.rb +29 -3
  41. data/lib/esp/version.rb +1 -1
  42. data/lib/esp.rb +25 -5
  43. data/test/esp/aws_clients_test.rb +101 -0
  44. data/test/esp/extensions/active_resource/formats/json_api_format_test.rb +26 -12
  45. data/test/esp/extensions/active_resource/paginated_collection_test.rb +93 -72
  46. data/test/esp/extensions/active_resource/validations_test.rb +2 -12
  47. data/test/esp/external_account_creator_test.rb +153 -0
  48. data/test/esp/resources/alert_test.rb +71 -33
  49. data/test/esp/resources/cloud_trail_event_test.rb +9 -1
  50. data/test/esp/resources/contact_request_test.rb +8 -0
  51. data/test/esp/resources/custom_signature_test.rb +8 -0
  52. data/test/esp/resources/dashboard_test.rb +8 -0
  53. data/test/esp/resources/external_account_test.rb +8 -0
  54. data/test/esp/resources/metadata_test.rb +1 -1
  55. data/test/esp/resources/organization_test.rb +8 -0
  56. data/test/esp/resources/region_test.rb +12 -4
  57. data/test/esp/resources/report_test.rb +13 -4
  58. data/test/esp/resources/resource_test.rb +208 -64
  59. data/test/esp/resources/service_test.rb +8 -0
  60. data/test/esp/resources/signature_test.rb +15 -9
  61. data/test/esp/resources/stat_custom_signature_test.rb +9 -1
  62. data/test/esp/resources/stat_region_test.rb +23 -1
  63. data/test/esp/resources/stat_service_test.rb +23 -1
  64. data/test/esp/resources/stat_signature_test.rb +23 -1
  65. data/test/esp/resources/stat_test.rb +52 -8
  66. data/test/esp/resources/sub_organization_test.rb +8 -0
  67. data/test/esp/resources/suppression/region_test.rb +10 -2
  68. data/test/esp/resources/suppression/signature_test.rb +10 -2
  69. data/test/esp/resources/suppression/unique_identifier_test.rb +10 -2
  70. data/test/esp/resources/suppression_test.rb +74 -14
  71. data/test/esp/resources/tag_test.rb +9 -1
  72. data/test/esp/resources/team_test.rb +8 -0
  73. data/test/esp/resources/user_test.rb +49 -19
  74. data/test/esp_test.rb +19 -1
  75. data/test/factories/alerts.rb +70 -0
  76. data/test/factories/organizations.rb +2 -2
  77. data/test/factories/regions.rb +1 -1
  78. data/test/factories/sub_organizations.rb +1 -1
  79. data/test/factories/suppressions.rb +109 -3
  80. data/test/factories/users.rb +65 -2
  81. data/test/test_helper.rb +9 -8
  82. metadata +41 -69
  83. data/bin/esp_console +0 -67
  84. data/rdoc/ActiveResource/Formats.html +0 -178
  85. data/rdoc/ActiveResource/PaginatedCollection.html +0 -912
  86. data/rdoc/ActiveResource.html +0 -182
  87. data/rdoc/ESP/Alert.html +0 -808
  88. data/rdoc/ESP/CloudTrailEvent.html +0 -377
  89. data/rdoc/ESP/ContactRequest.html +0 -368
  90. data/rdoc/ESP/CustomSignature.html +0 -748
  91. data/rdoc/ESP/Dashboard.html +0 -357
  92. data/rdoc/ESP/ExternalAccount.html +0 -567
  93. data/rdoc/ESP/Metadata.html +0 -411
  94. data/rdoc/ESP/Organization.html +0 -592
  95. data/rdoc/ESP/Region.html +0 -401
  96. data/rdoc/ESP/Report.html +0 -624
  97. data/rdoc/ESP/Service.html +0 -382
  98. data/rdoc/ESP/Signature.html +0 -557
  99. data/rdoc/ESP/Stat.html +0 -1780
  100. data/rdoc/ESP/StatCustomSignature.html +0 -1601
  101. data/rdoc/ESP/StatRegion.html +0 -1600
  102. data/rdoc/ESP/StatService.html +0 -1600
  103. data/rdoc/ESP/StatSignature.html +0 -1600
  104. data/rdoc/ESP/SubOrganization.html +0 -542
  105. data/rdoc/ESP/Suppression/Region.html +0 -456
  106. data/rdoc/ESP/Suppression/Signature.html +0 -472
  107. data/rdoc/ESP/Suppression/UniqueIdentifier.html +0 -419
  108. data/rdoc/ESP/Suppression.html +0 -651
  109. data/rdoc/ESP/Tag.html +0 -373
  110. data/rdoc/ESP/Team.html +0 -586
  111. data/rdoc/ESP/User.html +0 -485
  112. data/rdoc/ESP.html +0 -549
  113. data/rdoc/README_md.html +0 -503
  114. data/rdoc/created.rid +0 -31
  115. data/rdoc/images/add.png +0 -0
  116. data/rdoc/images/arrow_up.png +0 -0
  117. data/rdoc/images/brick.png +0 -0
  118. data/rdoc/images/brick_link.png +0 -0
  119. data/rdoc/images/bug.png +0 -0
  120. data/rdoc/images/bullet_black.png +0 -0
  121. data/rdoc/images/bullet_toggle_minus.png +0 -0
  122. data/rdoc/images/bullet_toggle_plus.png +0 -0
  123. data/rdoc/images/date.png +0 -0
  124. data/rdoc/images/delete.png +0 -0
  125. data/rdoc/images/find.png +0 -0
  126. data/rdoc/images/loadingAnimation.gif +0 -0
  127. data/rdoc/images/macFFBgHack.png +0 -0
  128. data/rdoc/images/package.png +0 -0
  129. data/rdoc/images/page_green.png +0 -0
  130. data/rdoc/images/page_white_text.png +0 -0
  131. data/rdoc/images/page_white_width.png +0 -0
  132. data/rdoc/images/plugin.png +0 -0
  133. data/rdoc/images/ruby.png +0 -0
  134. data/rdoc/images/tag_blue.png +0 -0
  135. data/rdoc/images/tag_green.png +0 -0
  136. data/rdoc/images/transparent.png +0 -0
  137. data/rdoc/images/wrench.png +0 -0
  138. data/rdoc/images/wrench_orange.png +0 -0
  139. data/rdoc/images/zoom.png +0 -0
  140. data/rdoc/index.html +0 -136
  141. data/rdoc/js/darkfish.js +0 -155
  142. data/rdoc/js/jquery.js +0 -4
  143. data/rdoc/js/navigation.js +0 -142
  144. data/rdoc/js/search.js +0 -94
  145. data/rdoc/js/search_index.js +0 -1
  146. data/rdoc/js/searcher.js +0 -228
  147. data/rdoc/rdoc.css +0 -595
  148. data/rdoc/table_of_contents.html +0 -942
@@ -1,411 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
-
7
- <title>class ESP::Metadata - ESPSDK</title>
8
-
9
- <link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet">
10
-
11
- <script type="text/javascript">
12
- var rdoc_rel_prefix = "../";
13
- </script>
14
-
15
- <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
16
- <script type="text/javascript" charset="utf-8" src="../js/navigation.js"></script>
17
- <script type="text/javascript" charset="utf-8" src="../js/search_index.js"></script>
18
- <script type="text/javascript" charset="utf-8" src="../js/search.js"></script>
19
- <script type="text/javascript" charset="utf-8" src="../js/searcher.js"></script>
20
- <script type="text/javascript" charset="utf-8" src="../js/darkfish.js"></script>
21
-
22
-
23
- <body id="top" class="class">
24
- <nav id="metadata">
25
- <nav id="home-section" class="section">
26
- <h3 class="section-header">
27
- <a href="../index.html">Home</a>
28
- <a href="../table_of_contents.html#classes">Classes</a>
29
- <a href="../table_of_contents.html#methods">Methods</a>
30
- </h3>
31
- </nav>
32
-
33
-
34
- <nav id="search-section" class="section project-section" class="initially-hidden">
35
- <form action="#" method="get" accept-charset="utf-8">
36
- <h3 class="section-header">
37
- <input type="text" name="search" placeholder="Search" id="search-field"
38
- title="Type to search, Up and Down to navigate, Enter to load">
39
- </h3>
40
- </form>
41
-
42
- <ul id="search-results" class="initially-hidden"></ul>
43
- </nav>
44
-
45
-
46
-
47
-
48
- <div id="file-metadata">
49
- <nav id="file-list-section" class="section">
50
- <h3 class="section-header">Defined In</h3>
51
- <ul>
52
- <li>lib/esp/resources/metadata.rb
53
- </ul>
54
- </nav>
55
-
56
-
57
- </div>
58
-
59
- <div id="class-metadata">
60
-
61
- <nav id="parent-class-section" class="section">
62
- <h3 class="section-header">Parent</h3>
63
-
64
- <p class="link">ESP::Resource
65
-
66
- </nav>
67
-
68
-
69
-
70
- <!-- Method Quickref -->
71
- <nav id="method-list-section" class="section">
72
- <h3 class="section-header">Methods</h3>
73
-
74
- <ul class="link-list">
75
-
76
- <li class="calls-super" ><a href="#method-c-find">::find</a>
77
-
78
- <li ><a href="#method-c-for_alert">::for_alert</a>
79
-
80
- <li ><a href="#method-c-where">::where</a>
81
-
82
- <li ><a href="#method-i-destroy">#destroy</a>
83
-
84
- <li ><a href="#method-i-save">#save</a>
85
-
86
- </ul>
87
- </nav>
88
-
89
- </div>
90
-
91
- <div id="project-metadata">
92
- <nav id="fileindex-section" class="section project-section">
93
- <h3 class="section-header">Pages</h3>
94
-
95
- <ul>
96
-
97
- <li class="file"><a href="../README_md.html">README</a>
98
-
99
- </ul>
100
- </nav>
101
-
102
- <nav id="classindex-section" class="section project-section">
103
- <h3 class="section-header">Class and Module Index</h3>
104
-
105
- <ul class="link-list">
106
-
107
- <li><a href="../ActiveResource.html">ActiveResource</a>
108
-
109
- <li><a href="../ActiveResource/Formats.html">ActiveResource::Formats</a>
110
-
111
- <li><a href="../ActiveResource/PaginatedCollection.html">ActiveResource::PaginatedCollection</a>
112
-
113
- <li><a href="../ESP.html">ESP</a>
114
-
115
- <li><a href="../ESP/Alert.html">ESP::Alert</a>
116
-
117
- <li><a href="../ESP/CloudTrailEvent.html">ESP::CloudTrailEvent</a>
118
-
119
- <li><a href="../ESP/ContactRequest.html">ESP::ContactRequest</a>
120
-
121
- <li><a href="../ESP/CustomSignature.html">ESP::CustomSignature</a>
122
-
123
- <li><a href="../ESP/Dashboard.html">ESP::Dashboard</a>
124
-
125
- <li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
126
-
127
- <li><a href="../ESP/Metadata.html">ESP::Metadata</a>
128
-
129
- <li><a href="../ESP/Organization.html">ESP::Organization</a>
130
-
131
- <li><a href="../ESP/Region.html">ESP::Region</a>
132
-
133
- <li><a href="../ESP/Report.html">ESP::Report</a>
134
-
135
- <li><a href="../ESP/Service.html">ESP::Service</a>
136
-
137
- <li><a href="../ESP/Signature.html">ESP::Signature</a>
138
-
139
- <li><a href="../ESP/Stat.html">ESP::Stat</a>
140
-
141
- <li><a href="../ESP/StatCustomSignature.html">ESP::StatCustomSignature</a>
142
-
143
- <li><a href="../ESP/StatRegion.html">ESP::StatRegion</a>
144
-
145
- <li><a href="../ESP/StatService.html">ESP::StatService</a>
146
-
147
- <li><a href="../ESP/StatSignature.html">ESP::StatSignature</a>
148
-
149
- <li><a href="../ESP/SubOrganization.html">ESP::SubOrganization</a>
150
-
151
- <li><a href="../ESP/Suppression.html">ESP::Suppression</a>
152
-
153
- <li><a href="../ESP/Suppression/Region.html">ESP::Suppression::Region</a>
154
-
155
- <li><a href="../ESP/Suppression/Signature.html">ESP::Suppression::Signature</a>
156
-
157
- <li><a href="../ESP/Suppression/UniqueIdentifier.html">ESP::Suppression::UniqueIdentifier</a>
158
-
159
- <li><a href="../ESP/Tag.html">ESP::Tag</a>
160
-
161
- <li><a href="../ESP/Team.html">ESP::Team</a>
162
-
163
- <li><a href="../ESP/User.html">ESP::User</a>
164
-
165
- </ul>
166
- </nav>
167
-
168
- </div>
169
- </nav>
170
-
171
- <div id="documentation">
172
- <h1 class="class">class ESP::Metadata</h1>
173
-
174
- <div id="description" class="description">
175
-
176
- </div><!-- description -->
177
-
178
-
179
-
180
-
181
- <section id="5Buntitled-5D" class="documentation-section">
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
- <!-- Methods -->
191
-
192
- <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
193
- <h3 class="section-header">Public Class Methods</h3>
194
-
195
-
196
- <div id="method-c-find" class="method-detail ">
197
-
198
-
199
- <div class="method-heading">
200
- <span class="method-callseq">
201
- find(id)
202
- </span>
203
-
204
- <span class="method-click-advice">click to toggle source</span>
205
-
206
- </div>
207
-
208
-
209
-
210
- <div class="method-description">
211
-
212
- <p>Find a <a href="Metadata.html">Metadata</a> object by id</p>
213
-
214
- <h4 id="method-c-find-label-Parameter">Parameter<span><a href="#method-c-find-label-Parameter">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
215
-
216
- <p><code>id</code> | Required | The ID of the metadata object to retrieve</p>
217
-
218
-
219
- <div class="method-calls-super">
220
- Calls superclass method
221
-
222
- </div>
223
-
224
-
225
-
226
- <div class="method-source-code" id="find-source">
227
- <pre><span class="ruby-comment"># File lib/esp/resources/metadata.rb, line 41</span>
228
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">find</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arguments</span>)
229
- <span class="ruby-identifier">scope</span> = <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-value">0</span>)
230
- <span class="ruby-identifier">options</span> = (<span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-value">0</span>) <span class="ruby-operator">||</span> {}).<span class="ruby-identifier">with_indifferent_access</span>
231
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">super</span>(<span class="ruby-identifier">scope</span>, <span class="ruby-identifier">options</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">scope</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:from</span>].<span class="ruby-identifier">present?</span>
232
- <span class="ruby-identifier">params</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">:params</span>, {}).<span class="ruby-identifier">with_indifferent_access</span>
233
- <span class="ruby-identifier">alert_id</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:alert_id</span>)
234
- <span class="ruby-identifier">for_alert</span>(<span class="ruby-identifier">alert_id</span>)
235
- <span class="ruby-keyword">end</span></pre>
236
- </div><!-- find-source -->
237
-
238
- </div>
239
-
240
-
241
-
242
-
243
- </div><!-- find-method -->
244
-
245
-
246
- <div id="method-c-for_alert" class="method-detail ">
247
-
248
- <div class="method-heading">
249
- <span class="method-name">for_alert</span><span
250
- class="method-args">(alert_id = nil)</span>
251
-
252
- <span class="method-click-advice">click to toggle source</span>
253
-
254
- </div>
255
-
256
-
257
- <div class="method-description">
258
-
259
- <p>Returns a metadata object for the given alert_id Convenience method to use
260
- instead of <a href="Metadata.html#method-c-find">::find</a> since an
261
- alert_id is required to return metadata.</p>
262
-
263
- <h4 id="method-c-for_alert-label-Parameter">Parameter<span><a href="#method-c-for_alert-label-Parameter">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
264
-
265
- <p><code>alert_id</code> | Required | The ID of the alert to retrieve metadata
266
- for</p>
267
-
268
- <h4 id="method-c-for_alert-label-Example">Example<span><a href="#method-c-for_alert-label-Example">&para;</a> <a href="#documentation">&uarr;</a></span></h4>
269
-
270
- <pre>alerts = ESP::Metadata.for_alert(1194)</pre>
271
-
272
-
273
-
274
-
275
- <div class="method-source-code" id="for_alert-source">
276
- <pre><span class="ruby-comment"># File lib/esp/resources/metadata.rb, line 27</span>
277
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">for_alert</span>(<span class="ruby-identifier">alert_id</span> = <span class="ruby-keyword">nil</span>)
278
- <span class="ruby-identifier">fail</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You must supply an alert id.&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">alert_id</span>.<span class="ruby-identifier">present?</span>
279
- <span class="ruby-identifier">from</span> = <span class="ruby-node">&quot;#{prefix}alerts/#{alert_id}/metadata.json&quot;</span>
280
- <span class="ruby-identifier">find</span>(<span class="ruby-value">:one</span>, <span class="ruby-identifier">from</span><span class="ruby-operator">:</span> <span class="ruby-identifier">from</span>)
281
- <span class="ruby-keyword">end</span></pre>
282
- </div><!-- for_alert-source -->
283
-
284
- </div>
285
-
286
-
287
-
288
-
289
- </div><!-- for_alert-method -->
290
-
291
-
292
- <div id="method-c-where" class="method-detail ">
293
-
294
- <div class="method-heading">
295
- <span class="method-name">where</span><span
296
- class="method-args">(*)</span>
297
-
298
- <span class="method-click-advice">click to toggle source</span>
299
-
300
- </div>
301
-
302
-
303
- <div class="method-description">
304
-
305
- <p>Not Implemented. You cannot search for <a
306
- href="Metadata.html">Metadata</a>.</p>
307
-
308
-
309
-
310
-
311
- <div class="method-source-code" id="where-source">
312
- <pre><span class="ruby-comment"># File lib/esp/resources/metadata.rb, line 4</span>
313
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">where</span>(<span class="ruby-operator">*</span>)
314
- <span class="ruby-identifier">fail</span> <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>
315
- <span class="ruby-keyword">end</span></pre>
316
- </div><!-- where-source -->
317
-
318
- </div>
319
-
320
-
321
-
322
-
323
- </div><!-- where-method -->
324
-
325
-
326
- </section><!-- public-class-method-details -->
327
-
328
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
329
- <h3 class="section-header">Public Instance Methods</h3>
330
-
331
-
332
- <div id="method-i-destroy" class="method-detail ">
333
-
334
- <div class="method-heading">
335
- <span class="method-name">destroy</span><span
336
- class="method-args">()</span>
337
-
338
- <span class="method-click-advice">click to toggle source</span>
339
-
340
- </div>
341
-
342
-
343
- <div class="method-description">
344
-
345
- <p>Not Implemented. You cannot destroy <a href="Metadata.html">Metadata</a>.</p>
346
-
347
-
348
-
349
-
350
- <div class="method-source-code" id="destroy-source">
351
- <pre><span class="ruby-comment"># File lib/esp/resources/metadata.rb, line 14</span>
352
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">destroy</span>
353
- <span class="ruby-identifier">fail</span> <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>
354
- <span class="ruby-keyword">end</span></pre>
355
- </div><!-- destroy-source -->
356
-
357
- </div>
358
-
359
-
360
-
361
-
362
- </div><!-- destroy-method -->
363
-
364
-
365
- <div id="method-i-save" class="method-detail ">
366
-
367
- <div class="method-heading">
368
- <span class="method-name">save</span><span
369
- class="method-args">()</span>
370
-
371
- <span class="method-click-advice">click to toggle source</span>
372
-
373
- </div>
374
-
375
-
376
- <div class="method-description">
377
-
378
- <p>Not Implemented. You cannot create or update <a
379
- href="Metadata.html">Metadata</a>.</p>
380
-
381
-
382
-
383
-
384
- <div class="method-source-code" id="save-source">
385
- <pre><span class="ruby-comment"># File lib/esp/resources/metadata.rb, line 9</span>
386
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">save</span>
387
- <span class="ruby-identifier">fail</span> <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>
388
- <span class="ruby-keyword">end</span></pre>
389
- </div><!-- save-source -->
390
-
391
- </div>
392
-
393
-
394
-
395
-
396
- </div><!-- save-method -->
397
-
398
-
399
- </section><!-- public-instance-method-details -->
400
-
401
- </section><!-- 5Buntitled-5D -->
402
-
403
- </div><!-- documentation -->
404
-
405
-
406
- <footer id="validator-badges">
407
- <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
408
- <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.0.
409
- <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
410
- </footer>
411
-