longleaf 0.2.0.pre.1 → 0.3.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 (165) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +84 -0
  3. data/.gitignore +4 -2
  4. data/.rubocop.yml +42 -2
  5. data/.rubocop_todo.yml +390 -311
  6. data/.yardopts +1 -0
  7. data/Gemfile +16 -1
  8. data/README.md +67 -13
  9. data/Rakefile +6 -0
  10. data/bin/setup +16 -1
  11. data/docs/aboutlongleaf.md +28 -0
  12. data/docs/extra.css +32 -0
  13. data/docs/img/change-file.png +0 -0
  14. data/docs/img/ll-example-preserved.png +0 -0
  15. data/docs/index.md +19 -0
  16. data/docs/install.md +66 -0
  17. data/docs/ll-example/config-example-relative.yml +33 -0
  18. data/docs/ll-example/files-dir/LLexample-PDF.pdf +0 -0
  19. data/docs/ll-example/files-dir/LLexample-TOCHANGE.txt +15 -0
  20. data/docs/ll-example/files-dir/LLexample-tokeep.txt +10 -0
  21. data/docs/ll-example/metadata-dir/.gitkeep +0 -0
  22. data/docs/ll-example/replica-files/.gitkeep +0 -0
  23. data/docs/ll-example/replica-metadata/.gitkeep +0 -0
  24. data/docs/quickstart.md +270 -0
  25. data/docs/rdocs/Longleaf.html +135 -0
  26. data/docs/rdocs/Longleaf/AppFields.html +178 -0
  27. data/docs/rdocs/Longleaf/ApplicationConfigDeserializer.html +631 -0
  28. data/docs/rdocs/Longleaf/ApplicationConfigManager.html +610 -0
  29. data/docs/rdocs/Longleaf/ApplicationConfigValidator.html +238 -0
  30. data/docs/rdocs/Longleaf/CLI.html +909 -0
  31. data/docs/rdocs/Longleaf/ChecksumMismatchError.html +151 -0
  32. data/docs/rdocs/Longleaf/ConfigBuilder.html +1339 -0
  33. data/docs/rdocs/Longleaf/ConfigurationError.html +143 -0
  34. data/docs/rdocs/Longleaf/ConfigurationValidator.html +227 -0
  35. data/docs/rdocs/Longleaf/DeregisterCommand.html +420 -0
  36. data/docs/rdocs/Longleaf/DeregisterEvent.html +453 -0
  37. data/docs/rdocs/Longleaf/DeregistrationError.html +151 -0
  38. data/docs/rdocs/Longleaf/DigestHelper.html +419 -0
  39. data/docs/rdocs/Longleaf/EventError.html +147 -0
  40. data/docs/rdocs/Longleaf/EventNames.html +163 -0
  41. data/docs/rdocs/Longleaf/EventStatusTracking.html +656 -0
  42. data/docs/rdocs/Longleaf/FileCheckService.html +540 -0
  43. data/docs/rdocs/Longleaf/FileHelpers.html +520 -0
  44. data/docs/rdocs/Longleaf/FileRecord.html +716 -0
  45. data/docs/rdocs/Longleaf/FileSelector.html +901 -0
  46. data/docs/rdocs/Longleaf/FixityCheckService.html +691 -0
  47. data/docs/rdocs/Longleaf/IndexManager.html +1155 -0
  48. data/docs/rdocs/Longleaf/InvalidDigestAlgorithmError.html +143 -0
  49. data/docs/rdocs/Longleaf/InvalidStoragePathError.html +143 -0
  50. data/docs/rdocs/Longleaf/Logging.html +405 -0
  51. data/docs/rdocs/Longleaf/Logging/RedirectingLogger.html +1213 -0
  52. data/docs/rdocs/Longleaf/LongleafError.html +139 -0
  53. data/docs/rdocs/Longleaf/MDFields.html +193 -0
  54. data/docs/rdocs/Longleaf/MetadataBuilder.html +787 -0
  55. data/docs/rdocs/Longleaf/MetadataDeserializer.html +537 -0
  56. data/docs/rdocs/Longleaf/MetadataError.html +143 -0
  57. data/docs/rdocs/Longleaf/MetadataPersistenceManager.html +539 -0
  58. data/docs/rdocs/Longleaf/MetadataRecord.html +1411 -0
  59. data/docs/rdocs/Longleaf/MetadataSerializer.html +786 -0
  60. data/docs/rdocs/Longleaf/PreservationServiceError.html +147 -0
  61. data/docs/rdocs/Longleaf/PreserveCommand.html +410 -0
  62. data/docs/rdocs/Longleaf/PreserveEvent.html +491 -0
  63. data/docs/rdocs/Longleaf/RegisterCommand.html +428 -0
  64. data/docs/rdocs/Longleaf/RegisterEvent.html +628 -0
  65. data/docs/rdocs/Longleaf/RegisteredFileSelector.html +446 -0
  66. data/docs/rdocs/Longleaf/RegistrationError.html +151 -0
  67. data/docs/rdocs/Longleaf/ReindexCommand.html +576 -0
  68. data/docs/rdocs/Longleaf/RsyncReplicationService.html +1180 -0
  69. data/docs/rdocs/Longleaf/SequelIndexDriver.html +1978 -0
  70. data/docs/rdocs/Longleaf/ServiceCandidateFilesystemIterator.html +572 -0
  71. data/docs/rdocs/Longleaf/ServiceCandidateIndexIterator.html +532 -0
  72. data/docs/rdocs/Longleaf/ServiceCandidateLocator.html +333 -0
  73. data/docs/rdocs/Longleaf/ServiceClassCache.html +725 -0
  74. data/docs/rdocs/Longleaf/ServiceDateHelper.html +425 -0
  75. data/docs/rdocs/Longleaf/ServiceDefinition.html +683 -0
  76. data/docs/rdocs/Longleaf/ServiceDefinitionManager.html +371 -0
  77. data/docs/rdocs/Longleaf/ServiceDefinitionValidator.html +269 -0
  78. data/docs/rdocs/Longleaf/ServiceFields.html +173 -0
  79. data/docs/rdocs/Longleaf/ServiceManager.html +1229 -0
  80. data/docs/rdocs/Longleaf/ServiceMappingManager.html +410 -0
  81. data/docs/rdocs/Longleaf/ServiceMappingValidator.html +347 -0
  82. data/docs/rdocs/Longleaf/ServiceRecord.html +821 -0
  83. data/docs/rdocs/Longleaf/StorageLocation.html +985 -0
  84. data/docs/rdocs/Longleaf/StorageLocationManager.html +729 -0
  85. data/docs/rdocs/Longleaf/StorageLocationUnavailableError.html +143 -0
  86. data/docs/rdocs/Longleaf/StorageLocationValidator.html +373 -0
  87. data/docs/rdocs/Longleaf/StoragePathValidator.html +253 -0
  88. data/docs/rdocs/Longleaf/SystemConfigBuilder.html +441 -0
  89. data/docs/rdocs/Longleaf/SystemConfigFields.html +163 -0
  90. data/docs/rdocs/Longleaf/ValidateConfigCommand.html +451 -0
  91. data/docs/rdocs/Longleaf/ValidateMetadataCommand.html +408 -0
  92. data/docs/rdocs/_index.html +660 -0
  93. data/docs/rdocs/class_list.html +51 -0
  94. data/docs/rdocs/css/common.css +1 -0
  95. data/docs/rdocs/css/full_list.css +58 -0
  96. data/docs/rdocs/css/style.css +496 -0
  97. data/docs/rdocs/file.README.html +165 -0
  98. data/docs/rdocs/file_list.html +56 -0
  99. data/docs/rdocs/frames.html +17 -0
  100. data/docs/rdocs/index.html +165 -0
  101. data/docs/rdocs/js/app.js +303 -0
  102. data/docs/rdocs/js/full_list.js +216 -0
  103. data/docs/rdocs/js/jquery.js +4 -0
  104. data/docs/rdocs/method_list.html +2051 -0
  105. data/docs/rdocs/top-level-namespace.html +110 -0
  106. data/lib/longleaf/candidates/file_selector.rb +47 -15
  107. data/lib/longleaf/candidates/registered_file_selector.rb +67 -0
  108. data/lib/longleaf/candidates/service_candidate_filesystem_iterator.rb +29 -35
  109. data/lib/longleaf/candidates/service_candidate_index_iterator.rb +84 -0
  110. data/lib/longleaf/candidates/service_candidate_locator.rb +9 -4
  111. data/lib/longleaf/cli.rb +162 -80
  112. data/lib/longleaf/commands/deregister_command.rb +12 -11
  113. data/lib/longleaf/commands/preserve_command.rb +13 -8
  114. data/lib/longleaf/commands/register_command.rb +9 -6
  115. data/lib/longleaf/commands/reindex_command.rb +92 -0
  116. data/lib/longleaf/commands/validate_config_command.rb +27 -6
  117. data/lib/longleaf/commands/validate_metadata_command.rb +11 -9
  118. data/lib/longleaf/errors.rb +12 -12
  119. data/lib/longleaf/events/deregister_event.rb +13 -15
  120. data/lib/longleaf/events/event_status_tracking.rb +7 -7
  121. data/lib/longleaf/events/preserve_event.rb +24 -14
  122. data/lib/longleaf/events/register_event.rb +21 -35
  123. data/lib/longleaf/helpers/digest_helper.rb +4 -4
  124. data/lib/longleaf/helpers/service_date_helper.rb +5 -6
  125. data/lib/longleaf/indexing/index_manager.rb +101 -0
  126. data/lib/longleaf/indexing/sequel_index_driver.rb +324 -0
  127. data/lib/longleaf/logging.rb +4 -4
  128. data/lib/longleaf/logging/redirecting_logger.rb +20 -20
  129. data/lib/longleaf/models/app_fields.rb +2 -1
  130. data/lib/longleaf/models/file_record.rb +10 -6
  131. data/lib/longleaf/models/md_fields.rb +1 -1
  132. data/lib/longleaf/models/metadata_record.rb +22 -12
  133. data/lib/longleaf/models/service_definition.rb +3 -3
  134. data/lib/longleaf/models/service_fields.rb +1 -1
  135. data/lib/longleaf/models/service_record.rb +6 -5
  136. data/lib/longleaf/models/storage_location.rb +26 -7
  137. data/lib/longleaf/models/system_config_fields.rb +9 -0
  138. data/lib/longleaf/preservation_services/file_check_service.rb +58 -0
  139. data/lib/longleaf/preservation_services/fixity_check_service.rb +16 -14
  140. data/lib/longleaf/preservation_services/rsync_replication_service.rb +32 -31
  141. data/lib/longleaf/services/application_config_deserializer.rb +55 -18
  142. data/lib/longleaf/services/application_config_manager.rb +16 -4
  143. data/lib/longleaf/services/application_config_validator.rb +1 -2
  144. data/lib/longleaf/services/configuration_validator.rb +6 -4
  145. data/lib/longleaf/services/metadata_deserializer.rb +40 -38
  146. data/lib/longleaf/services/metadata_persistence_manager.rb +46 -0
  147. data/lib/longleaf/services/metadata_serializer.rb +23 -22
  148. data/lib/longleaf/services/service_class_cache.rb +15 -15
  149. data/lib/longleaf/services/service_definition_manager.rb +5 -6
  150. data/lib/longleaf/services/service_definition_validator.rb +5 -6
  151. data/lib/longleaf/services/service_manager.rb +37 -17
  152. data/lib/longleaf/services/service_mapping_manager.rb +9 -9
  153. data/lib/longleaf/services/service_mapping_validator.rb +9 -10
  154. data/lib/longleaf/services/storage_location_manager.rb +22 -8
  155. data/lib/longleaf/services/storage_location_validator.rb +11 -8
  156. data/lib/longleaf/services/storage_path_validator.rb +1 -1
  157. data/lib/longleaf/specs/config_builder.rb +30 -17
  158. data/lib/longleaf/specs/custom_matchers.rb +1 -1
  159. data/lib/longleaf/specs/file_helpers.rb +15 -14
  160. data/lib/longleaf/specs/metadata_builder.rb +91 -0
  161. data/lib/longleaf/specs/system_config_builder.rb +27 -0
  162. data/lib/longleaf/version.rb +1 -1
  163. data/longleaf.gemspec +17 -7
  164. data/mkdocs.yml +20 -0
  165. metadata +233 -22
@@ -0,0 +1,425 @@
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
+ Class: Longleaf::ServiceDateHelper
8
+
9
+ &mdash; Documentation by YARD 0.9.19
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 = "Longleaf::ServiceDateHelper";
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 (S)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Longleaf.html" title="Longleaf (module)">Longleaf</a></span></span>
41
+ &raquo;
42
+ <span class="title">ServiceDateHelper</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>Class: Longleaf::ServiceDateHelper
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Longleaf::ServiceDateHelper</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/longleaf/helpers/service_date_helper.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+
105
+ <p>Helper methods for interacting with dates/timestamps on services</p>
106
+
107
+
108
+ </div>
109
+ </div>
110
+ <div class="tags">
111
+
112
+
113
+ </div>
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <h2>
122
+ Class Method Summary
123
+ <small><a href="#" class="summary_toggle">collapse</a></small>
124
+ </h2>
125
+
126
+ <ul class="summary">
127
+
128
+ <li class="public ">
129
+ <span class="summary_signature">
130
+
131
+ <a href="#add_to_timestamp-class_method" title="add_to_timestamp (class method)">.<strong>add_to_timestamp</strong>(timestamp, modifier) &#x21d2; String </a>
132
+
133
+
134
+
135
+ </span>
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ <span class="summary_desc"><div class='inline'>
146
+ <p>Adds the amount of time from modifier to the provided timestamp “&lt;quantity&gt; &lt;time unit&gt;”, where quantity must be a positive whole number and time unit must be second, minute, hour, day, week, month or year (unit may be plural).</p>
147
+ </div></span>
148
+
149
+ </li>
150
+
151
+
152
+ <li class="public ">
153
+ <span class="summary_signature">
154
+
155
+ <a href="#formatted_timestamp-class_method" title="formatted_timestamp (class method)">.<strong>formatted_timestamp</strong>(timestamp = Time.now) &#x21d2; String </a>
156
+
157
+
158
+
159
+ </span>
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+ <span class="summary_desc"><div class='inline'>
170
+ <p>Get a timestamp in the format expected for service timestamps.</p>
171
+ </div></span>
172
+
173
+ </li>
174
+
175
+
176
+ </ul>
177
+
178
+
179
+
180
+
181
+ <div id="class_method_details" class="method_details_list">
182
+ <h2>Class Method Details</h2>
183
+
184
+
185
+ <div class="method_details first">
186
+ <h3 class="signature first" id="add_to_timestamp-class_method">
187
+
188
+ .<strong>add_to_timestamp</strong>(timestamp, modifier) &#x21d2; <tt>String</tt>
189
+
190
+
191
+
192
+
193
+
194
+ </h3><div class="docstring">
195
+ <div class="discussion">
196
+
197
+ <p>Adds the amount of time from modifier to the provided timestamp “&lt;quantity&gt; &lt;time unit&gt;”, where quantity must be a positive whole number and time unit must be second, minute, hour, day, week, month or year (unit may be plural). Any info after a comma will be ignored.</p>
198
+
199
+
200
+ </div>
201
+ </div>
202
+ <div class="tags">
203
+ <p class="tag_title">Parameters:</p>
204
+ <ul class="param">
205
+
206
+ <li>
207
+
208
+ <span class='name'>timestamp</span>
209
+
210
+
211
+ <span class='type'>(<tt>String</tt>)</span>
212
+
213
+
214
+
215
+ &mdash;
216
+ <div class='inline'>
217
+ <p>ISO-8601 timestamp string</p>
218
+ </div>
219
+
220
+ </li>
221
+
222
+ <li>
223
+
224
+ <span class='name'>modifier</span>
225
+
226
+
227
+ <span class='type'>(<tt>String</tt>)</span>
228
+
229
+
230
+
231
+ &mdash;
232
+ <div class='inline'>
233
+ <p>amount of time to add to the timestamp. It must follow the syntax</p>
234
+ </div>
235
+
236
+ </li>
237
+
238
+ </ul>
239
+
240
+ <p class="tag_title">Returns:</p>
241
+ <ul class="return">
242
+
243
+ <li>
244
+
245
+
246
+ <span class='type'>(<tt>String</tt>)</span>
247
+
248
+
249
+
250
+ &mdash;
251
+ <div class='inline'>
252
+ <p>the original timestamp in ISO-8601 format with the provided amount of time added.</p>
253
+ </div>
254
+
255
+ </li>
256
+
257
+ </ul>
258
+
259
+ </div><table class="source_code">
260
+ <tr>
261
+ <td>
262
+ <pre class="lines">
263
+
264
+
265
+ 13
266
+ 14
267
+ 15
268
+ 16
269
+ 17
270
+ 18
271
+ 19
272
+ 20
273
+ 21
274
+ 22
275
+ 23
276
+ 24
277
+ 25
278
+ 26
279
+ 27
280
+ 28
281
+ 29
282
+ 30
283
+ 31
284
+ 32
285
+ 33
286
+ 34
287
+ 35
288
+ 36
289
+ 37
290
+ 38
291
+ 39
292
+ 40
293
+ 41</pre>
294
+ </td>
295
+ <td>
296
+ <pre class="code"><span class="info file"># File 'lib/longleaf/helpers/service_date_helper.rb', line 13</span>
297
+
298
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_add_to_timestamp'>add_to_timestamp</span><span class='lparen'>(</span><span class='id identifier rubyid_timestamp'>timestamp</span><span class='comma'>,</span> <span class='id identifier rubyid_modifier'>modifier</span><span class='rparen'>)</span>
299
+ <span class='kw'>if</span> <span class='id identifier rubyid_modifier'>modifier</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(\d+) *(second|minute|hour|day|week|month|year)s?(,.*)?</span><span class='regexp_end'>/</span></span>
300
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='backref'>$1</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
301
+ <span class='id identifier rubyid_unit'>unit</span> <span class='op'>=</span> <span class='backref'>$2</span>
302
+ <span class='kw'>else</span>
303
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot parse time modifier </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_modifier'>modifier</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
304
+ <span class='kw'>end</span>
305
+
306
+ <span class='id identifier rubyid_datetime'>datetime</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_iso8601'>iso8601</span><span class='lparen'>(</span><span class='id identifier rubyid_timestamp'>timestamp</span><span class='rparen'>)</span>
307
+ <span class='kw'>case</span> <span class='id identifier rubyid_unit'>unit</span>
308
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>second</span><span class='tstring_end'>&#39;</span></span>
309
+ <span class='id identifier rubyid_unit_modifier'>unit_modifier</span> <span class='op'>=</span> <span class='int'>1</span>
310
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>minute</span><span class='tstring_end'>&#39;</span></span>
311
+ <span class='id identifier rubyid_unit_modifier'>unit_modifier</span> <span class='op'>=</span> <span class='int'>60</span>
312
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hour</span><span class='tstring_end'>&#39;</span></span>
313
+ <span class='id identifier rubyid_unit_modifier'>unit_modifier</span> <span class='op'>=</span> <span class='int'>3600</span>
314
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>day</span><span class='tstring_end'>&#39;</span></span>
315
+ <span class='id identifier rubyid_unit_modifier'>unit_modifier</span> <span class='op'>=</span> <span class='int'>24</span> <span class='op'>*</span> <span class='int'>3600</span>
316
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>week</span><span class='tstring_end'>&#39;</span></span>
317
+ <span class='id identifier rubyid_unit_modifier'>unit_modifier</span> <span class='op'>=</span> <span class='int'>7</span> <span class='op'>*</span> <span class='int'>24</span> <span class='op'>*</span> <span class='int'>3600</span>
318
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>month</span><span class='tstring_end'>&#39;</span></span>
319
+ <span class='id identifier rubyid_unit_modifier'>unit_modifier</span> <span class='op'>=</span> <span class='int'>30</span> <span class='op'>*</span> <span class='int'>24</span> <span class='op'>*</span> <span class='int'>3600</span>
320
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>year</span><span class='tstring_end'>&#39;</span></span>
321
+ <span class='id identifier rubyid_unit_modifier'>unit_modifier</span> <span class='op'>=</span> <span class='int'>365</span> <span class='op'>*</span> <span class='int'>24</span> <span class='op'>*</span> <span class='int'>3600</span>
322
+ <span class='kw'>end</span>
323
+
324
+ <span class='id identifier rubyid_modified_time'>modified_time</span> <span class='op'>=</span> <span class='id identifier rubyid_datetime'>datetime</span> <span class='op'>+</span> <span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span> <span class='op'>*</span> <span class='id identifier rubyid_unit_modifier'>unit_modifier</span><span class='rparen'>)</span>
325
+ <span class='id identifier rubyid_modified_time'>modified_time</span><span class='period'>.</span><span class='id identifier rubyid_iso8601'>iso8601</span>
326
+ <span class='kw'>end</span></pre>
327
+ </td>
328
+ </tr>
329
+ </table>
330
+ </div>
331
+
332
+ <div class="method_details ">
333
+ <h3 class="signature " id="formatted_timestamp-class_method">
334
+
335
+ .<strong>formatted_timestamp</strong>(timestamp = Time.now) &#x21d2; <tt>String</tt>
336
+
337
+
338
+
339
+
340
+
341
+ </h3><div class="docstring">
342
+ <div class="discussion">
343
+
344
+ <p>Get a timestamp in the format expected for service timestamps.</p>
345
+
346
+
347
+ </div>
348
+ </div>
349
+ <div class="tags">
350
+ <p class="tag_title">Parameters:</p>
351
+ <ul class="param">
352
+
353
+ <li>
354
+
355
+ <span class='name'>timestamp</span>
356
+
357
+
358
+ <span class='type'>(<tt>Time</tt>)</span>
359
+
360
+
361
+ <em class="default">(defaults to: <tt>Time.now</tt>)</em>
362
+
363
+
364
+ &mdash;
365
+ <div class='inline'>
366
+ <p>the time to format. Defaults to now.</p>
367
+ </div>
368
+
369
+ </li>
370
+
371
+ </ul>
372
+
373
+ <p class="tag_title">Returns:</p>
374
+ <ul class="return">
375
+
376
+ <li>
377
+
378
+
379
+ <span class='type'>(<tt>String</tt>)</span>
380
+
381
+
382
+
383
+ &mdash;
384
+ <div class='inline'>
385
+ <p>the time formatted as iso8601</p>
386
+ </div>
387
+
388
+ </li>
389
+
390
+ </ul>
391
+
392
+ </div><table class="source_code">
393
+ <tr>
394
+ <td>
395
+ <pre class="lines">
396
+
397
+
398
+ 46
399
+ 47
400
+ 48</pre>
401
+ </td>
402
+ <td>
403
+ <pre class="code"><span class="info file"># File 'lib/longleaf/helpers/service_date_helper.rb', line 46</span>
404
+
405
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_formatted_timestamp'>formatted_timestamp</span><span class='lparen'>(</span><span class='id identifier rubyid_timestamp'>timestamp</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='rparen'>)</span>
406
+ <span class='id identifier rubyid_timestamp'>timestamp</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span><span class='period'>.</span><span class='id identifier rubyid_iso8601'>iso8601</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
407
+ <span class='kw'>end</span></pre>
408
+ </td>
409
+ </tr>
410
+ </table>
411
+ </div>
412
+
413
+ </div>
414
+
415
+ </div>
416
+
417
+ <div id="footer">
418
+ Generated on Tue May 28 15:48:01 2019 by
419
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
420
+ 0.9.19 (ruby-2.6.3).
421
+ </div>
422
+
423
+ </div>
424
+ </body>
425
+ </html>
@@ -0,0 +1,683 @@
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
+ Class: Longleaf::ServiceDefinition
8
+
9
+ &mdash; Documentation by YARD 0.9.19
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 = "Longleaf::ServiceDefinition";
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 (S)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Longleaf.html" title="Longleaf (module)">Longleaf</a></span></span>
41
+ &raquo;
42
+ <span class="title">ServiceDefinition</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>Class: Longleaf::ServiceDefinition
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Longleaf::ServiceDefinition</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/longleaf/models/service_definition.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+
105
+ <p>Definition of a configured preservation service</p>
106
+
107
+
108
+ </div>
109
+ </div>
110
+ <div class="tags">
111
+
112
+
113
+ </div>
114
+
115
+
116
+
117
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
118
+ <ul class="summary">
119
+
120
+ <li class="public ">
121
+ <span class="summary_signature">
122
+
123
+ <a href="#delay-instance_method" title="#delay (instance method)">#<strong>delay</strong> &#x21d2; Object </a>
124
+
125
+
126
+
127
+ </span>
128
+
129
+
130
+
131
+
132
+ <span class="note title readonly">readonly</span>
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+ <span class="summary_desc"><div class='inline'>
143
+ <p>Returns the value of attribute delay.</p>
144
+ </div></span>
145
+
146
+ </li>
147
+
148
+
149
+ <li class="public ">
150
+ <span class="summary_signature">
151
+
152
+ <a href="#frequency-instance_method" title="#frequency (instance method)">#<strong>frequency</strong> &#x21d2; Object </a>
153
+
154
+
155
+
156
+ </span>
157
+
158
+
159
+
160
+
161
+ <span class="note title readonly">readonly</span>
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+ <span class="summary_desc"><div class='inline'>
172
+ <p>Returns the value of attribute frequency.</p>
173
+ </div></span>
174
+
175
+ </li>
176
+
177
+
178
+ <li class="public ">
179
+ <span class="summary_signature">
180
+
181
+ <a href="#name-instance_method" title="#name (instance method)">#<strong>name</strong> &#x21d2; Object </a>
182
+
183
+
184
+
185
+ </span>
186
+
187
+
188
+
189
+
190
+ <span class="note title readonly">readonly</span>
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+ <span class="summary_desc"><div class='inline'>
201
+ <p>Returns the value of attribute name.</p>
202
+ </div></span>
203
+
204
+ </li>
205
+
206
+
207
+ <li class="public ">
208
+ <span class="summary_signature">
209
+
210
+ <a href="#properties-instance_method" title="#properties (instance method)">#<strong>properties</strong> &#x21d2; Object </a>
211
+
212
+
213
+
214
+ </span>
215
+
216
+
217
+
218
+
219
+ <span class="note title readonly">readonly</span>
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+ <span class="summary_desc"><div class='inline'>
230
+ <p>Returns the value of attribute properties.</p>
231
+ </div></span>
232
+
233
+ </li>
234
+
235
+
236
+ <li class="public ">
237
+ <span class="summary_signature">
238
+
239
+ <a href="#work_class-instance_method" title="#work_class (instance method)">#<strong>work_class</strong> &#x21d2; Object </a>
240
+
241
+
242
+
243
+ </span>
244
+
245
+
246
+
247
+
248
+ <span class="note title readonly">readonly</span>
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+ <span class="summary_desc"><div class='inline'>
259
+ <p>Returns the value of attribute work_class.</p>
260
+ </div></span>
261
+
262
+ </li>
263
+
264
+
265
+ <li class="public ">
266
+ <span class="summary_signature">
267
+
268
+ <a href="#work_script-instance_method" title="#work_script (instance method)">#<strong>work_script</strong> &#x21d2; Object </a>
269
+
270
+
271
+
272
+ </span>
273
+
274
+
275
+
276
+
277
+ <span class="note title readonly">readonly</span>
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+ <span class="summary_desc"><div class='inline'>
288
+ <p>Returns the value of attribute work_script.</p>
289
+ </div></span>
290
+
291
+ </li>
292
+
293
+
294
+ </ul>
295
+
296
+
297
+
298
+
299
+
300
+ <h2>
301
+ Instance Method Summary
302
+ <small><a href="#" class="summary_toggle">collapse</a></small>
303
+ </h2>
304
+
305
+ <ul class="summary">
306
+
307
+ <li class="public ">
308
+ <span class="summary_signature">
309
+
310
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(name:, work_script:, work_class: nil, frequency: nil, delay: nil, properties: Hash.new) &#x21d2; ServiceDefinition </a>
311
+
312
+
313
+
314
+ </span>
315
+
316
+
317
+ <span class="note title constructor">constructor</span>
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+ <span class="summary_desc"><div class='inline'>
327
+ <p>A new instance of ServiceDefinition.</p>
328
+ </div></span>
329
+
330
+ </li>
331
+
332
+
333
+ </ul>
334
+
335
+
336
+ <div id="constructor_details" class="method_details_list">
337
+ <h2>Constructor Details</h2>
338
+
339
+ <div class="method_details first">
340
+ <h3 class="signature first" id="initialize-instance_method">
341
+
342
+ #<strong>initialize</strong>(name:, work_script:, work_class: nil, frequency: nil, delay: nil, properties: Hash.new) &#x21d2; <tt><span class='object_link'><a href="" title="Longleaf::ServiceDefinition (class)">ServiceDefinition</a></span></tt>
343
+
344
+
345
+
346
+
347
+
348
+ </h3><div class="docstring">
349
+ <div class="discussion">
350
+
351
+ <p>Returns a new instance of ServiceDefinition</p>
352
+
353
+
354
+ </div>
355
+ </div>
356
+ <div class="tags">
357
+
358
+ <p class="tag_title">Raises:</p>
359
+ <ul class="raise">
360
+
361
+ <li>
362
+
363
+
364
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
365
+
366
+
367
+
368
+ </li>
369
+
370
+ </ul>
371
+
372
+ </div><table class="source_code">
373
+ <tr>
374
+ <td>
375
+ <pre class="lines">
376
+
377
+
378
+ 11
379
+ 12
380
+ 13
381
+ 14
382
+ 15
383
+ 16
384
+ 17
385
+ 18
386
+ 19
387
+ 20</pre>
388
+ </td>
389
+ <td>
390
+ <pre class="code"><span class="info file"># File 'lib/longleaf/models/service_definition.rb', line 11</span>
391
+
392
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>name:</span><span class='comma'>,</span> <span class='label'>work_script:</span><span class='comma'>,</span> <span class='label'>work_class:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>frequency:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>properties:</span> <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='rparen'>)</span>
393
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Parameters name and work_script are required</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_name'>name</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_work_script'>work_script</span>
394
+
395
+ <span class='ivar'>@properties</span> <span class='op'>=</span> <span class='id identifier rubyid_properties'>properties</span>
396
+ <span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
397
+ <span class='ivar'>@work_script</span> <span class='op'>=</span> <span class='id identifier rubyid_work_script'>work_script</span>
398
+ <span class='ivar'>@work_class</span> <span class='op'>=</span> <span class='id identifier rubyid_work_class'>work_class</span>
399
+ <span class='ivar'>@frequency</span> <span class='op'>=</span> <span class='id identifier rubyid_frequency'>frequency</span>
400
+ <span class='ivar'>@delay</span> <span class='op'>=</span> <span class='id identifier rubyid_delay'>delay</span>
401
+ <span class='kw'>end</span></pre>
402
+ </td>
403
+ </tr>
404
+ </table>
405
+ </div>
406
+
407
+ </div>
408
+
409
+ <div id="instance_attr_details" class="attr_details">
410
+ <h2>Instance Attribute Details</h2>
411
+
412
+
413
+ <span id=""></span>
414
+ <div class="method_details first">
415
+ <h3 class="signature first" id="delay-instance_method">
416
+
417
+ #<strong>delay</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
418
+
419
+
420
+
421
+
422
+
423
+ </h3><div class="docstring">
424
+ <div class="discussion">
425
+
426
+ <p>Returns the value of attribute delay</p>
427
+
428
+
429
+ </div>
430
+ </div>
431
+ <div class="tags">
432
+
433
+
434
+ </div><table class="source_code">
435
+ <tr>
436
+ <td>
437
+ <pre class="lines">
438
+
439
+
440
+ 8
441
+ 9
442
+ 10</pre>
443
+ </td>
444
+ <td>
445
+ <pre class="code"><span class="info file"># File 'lib/longleaf/models/service_definition.rb', line 8</span>
446
+
447
+ <span class='kw'>def</span> <span class='id identifier rubyid_delay'>delay</span>
448
+ <span class='ivar'>@delay</span>
449
+ <span class='kw'>end</span></pre>
450
+ </td>
451
+ </tr>
452
+ </table>
453
+ </div>
454
+
455
+
456
+ <span id=""></span>
457
+ <div class="method_details ">
458
+ <h3 class="signature " id="frequency-instance_method">
459
+
460
+ #<strong>frequency</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
461
+
462
+
463
+
464
+
465
+
466
+ </h3><div class="docstring">
467
+ <div class="discussion">
468
+
469
+ <p>Returns the value of attribute frequency</p>
470
+
471
+
472
+ </div>
473
+ </div>
474
+ <div class="tags">
475
+
476
+
477
+ </div><table class="source_code">
478
+ <tr>
479
+ <td>
480
+ <pre class="lines">
481
+
482
+
483
+ 8
484
+ 9
485
+ 10</pre>
486
+ </td>
487
+ <td>
488
+ <pre class="code"><span class="info file"># File 'lib/longleaf/models/service_definition.rb', line 8</span>
489
+
490
+ <span class='kw'>def</span> <span class='id identifier rubyid_frequency'>frequency</span>
491
+ <span class='ivar'>@frequency</span>
492
+ <span class='kw'>end</span></pre>
493
+ </td>
494
+ </tr>
495
+ </table>
496
+ </div>
497
+
498
+
499
+ <span id=""></span>
500
+ <div class="method_details ">
501
+ <h3 class="signature " id="name-instance_method">
502
+
503
+ #<strong>name</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
504
+
505
+
506
+
507
+
508
+
509
+ </h3><div class="docstring">
510
+ <div class="discussion">
511
+
512
+ <p>Returns the value of attribute name</p>
513
+
514
+
515
+ </div>
516
+ </div>
517
+ <div class="tags">
518
+
519
+
520
+ </div><table class="source_code">
521
+ <tr>
522
+ <td>
523
+ <pre class="lines">
524
+
525
+
526
+ 6
527
+ 7
528
+ 8</pre>
529
+ </td>
530
+ <td>
531
+ <pre class="code"><span class="info file"># File 'lib/longleaf/models/service_definition.rb', line 6</span>
532
+
533
+ <span class='kw'>def</span> <span class='id identifier rubyid_name'>name</span>
534
+ <span class='ivar'>@name</span>
535
+ <span class='kw'>end</span></pre>
536
+ </td>
537
+ </tr>
538
+ </table>
539
+ </div>
540
+
541
+
542
+ <span id=""></span>
543
+ <div class="method_details ">
544
+ <h3 class="signature " id="properties-instance_method">
545
+
546
+ #<strong>properties</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
547
+
548
+
549
+
550
+
551
+
552
+ </h3><div class="docstring">
553
+ <div class="discussion">
554
+
555
+ <p>Returns the value of attribute properties</p>
556
+
557
+
558
+ </div>
559
+ </div>
560
+ <div class="tags">
561
+
562
+
563
+ </div><table class="source_code">
564
+ <tr>
565
+ <td>
566
+ <pre class="lines">
567
+
568
+
569
+ 9
570
+ 10
571
+ 11</pre>
572
+ </td>
573
+ <td>
574
+ <pre class="code"><span class="info file"># File 'lib/longleaf/models/service_definition.rb', line 9</span>
575
+
576
+ <span class='kw'>def</span> <span class='id identifier rubyid_properties'>properties</span>
577
+ <span class='ivar'>@properties</span>
578
+ <span class='kw'>end</span></pre>
579
+ </td>
580
+ </tr>
581
+ </table>
582
+ </div>
583
+
584
+
585
+ <span id=""></span>
586
+ <div class="method_details ">
587
+ <h3 class="signature " id="work_class-instance_method">
588
+
589
+ #<strong>work_class</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
590
+
591
+
592
+
593
+
594
+
595
+ </h3><div class="docstring">
596
+ <div class="discussion">
597
+
598
+ <p>Returns the value of attribute work_class</p>
599
+
600
+
601
+ </div>
602
+ </div>
603
+ <div class="tags">
604
+
605
+
606
+ </div><table class="source_code">
607
+ <tr>
608
+ <td>
609
+ <pre class="lines">
610
+
611
+
612
+ 7
613
+ 8
614
+ 9</pre>
615
+ </td>
616
+ <td>
617
+ <pre class="code"><span class="info file"># File 'lib/longleaf/models/service_definition.rb', line 7</span>
618
+
619
+ <span class='kw'>def</span> <span class='id identifier rubyid_work_class'>work_class</span>
620
+ <span class='ivar'>@work_class</span>
621
+ <span class='kw'>end</span></pre>
622
+ </td>
623
+ </tr>
624
+ </table>
625
+ </div>
626
+
627
+
628
+ <span id=""></span>
629
+ <div class="method_details ">
630
+ <h3 class="signature " id="work_script-instance_method">
631
+
632
+ #<strong>work_script</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
633
+
634
+
635
+
636
+
637
+
638
+ </h3><div class="docstring">
639
+ <div class="discussion">
640
+
641
+ <p>Returns the value of attribute work_script</p>
642
+
643
+
644
+ </div>
645
+ </div>
646
+ <div class="tags">
647
+
648
+
649
+ </div><table class="source_code">
650
+ <tr>
651
+ <td>
652
+ <pre class="lines">
653
+
654
+
655
+ 7
656
+ 8
657
+ 9</pre>
658
+ </td>
659
+ <td>
660
+ <pre class="code"><span class="info file"># File 'lib/longleaf/models/service_definition.rb', line 7</span>
661
+
662
+ <span class='kw'>def</span> <span class='id identifier rubyid_work_script'>work_script</span>
663
+ <span class='ivar'>@work_script</span>
664
+ <span class='kw'>end</span></pre>
665
+ </td>
666
+ </tr>
667
+ </table>
668
+ </div>
669
+
670
+ </div>
671
+
672
+
673
+ </div>
674
+
675
+ <div id="footer">
676
+ Generated on Tue May 28 15:48:01 2019 by
677
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
678
+ 0.9.19 (ruby-2.6.3).
679
+ </div>
680
+
681
+ </div>
682
+ </body>
683
+ </html>