servus 0.1.2 → 0.1.4

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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +6 -0
  3. data/CHANGELOG.md +8 -1
  4. data/IDEAS.md +5 -0
  5. data/READme.md +147 -42
  6. data/Rakefile +33 -0
  7. data/builds/servus-0.1.2.gem +0 -0
  8. data/builds/servus-0.1.3.gem +0 -0
  9. data/builds/servus-0.1.4.gem +0 -0
  10. data/docs/core/1_overview.md +77 -0
  11. data/docs/core/2_architecture.md +92 -0
  12. data/docs/core/3_service_objects.md +121 -0
  13. data/docs/features/1_schema_validation.md +119 -0
  14. data/docs/features/2_error_handling.md +121 -0
  15. data/docs/features/3_async_execution.md +81 -0
  16. data/docs/features/4_logging.md +64 -0
  17. data/docs/guides/1_common_patterns.md +90 -0
  18. data/docs/guides/2_migration_guide.md +175 -0
  19. data/docs/integration/1_configuration.md +51 -0
  20. data/docs/integration/2_testing.md +164 -0
  21. data/docs/integration/3_rails_integration.md +99 -0
  22. data/docs/yard/Servus/Base.html +1645 -0
  23. data/docs/yard/Servus/Config.html +582 -0
  24. data/docs/yard/Servus/Extensions/Async/Call.html +400 -0
  25. data/docs/yard/Servus/Extensions/Async/Errors/AsyncError.html +140 -0
  26. data/docs/yard/Servus/Extensions/Async/Errors/JobEnqueueError.html +154 -0
  27. data/docs/yard/Servus/Extensions/Async/Errors/ServiceNotFoundError.html +154 -0
  28. data/docs/yard/Servus/Extensions/Async/Errors.html +128 -0
  29. data/docs/yard/Servus/Extensions/Async/Ext.html +119 -0
  30. data/docs/yard/Servus/Extensions/Async/Job.html +310 -0
  31. data/docs/yard/Servus/Extensions/Async.html +141 -0
  32. data/docs/yard/Servus/Extensions.html +117 -0
  33. data/docs/yard/Servus/Generators/ServiceGenerator.html +261 -0
  34. data/docs/yard/Servus/Generators.html +115 -0
  35. data/docs/yard/Servus/Helpers/ControllerHelpers.html +457 -0
  36. data/docs/yard/Servus/Helpers.html +115 -0
  37. data/docs/yard/Servus/Railtie.html +134 -0
  38. data/docs/yard/Servus/Support/Errors/AuthenticationError.html +287 -0
  39. data/docs/yard/Servus/Support/Errors/BadRequestError.html +283 -0
  40. data/docs/yard/Servus/Support/Errors/ForbiddenError.html +284 -0
  41. data/docs/yard/Servus/Support/Errors/InternalServerError.html +283 -0
  42. data/docs/yard/Servus/Support/Errors/NotFoundError.html +284 -0
  43. data/docs/yard/Servus/Support/Errors/ServiceError.html +489 -0
  44. data/docs/yard/Servus/Support/Errors/ServiceUnavailableError.html +290 -0
  45. data/docs/yard/Servus/Support/Errors/UnauthorizedError.html +200 -0
  46. data/docs/yard/Servus/Support/Errors/UnprocessableEntityError.html +288 -0
  47. data/docs/yard/Servus/Support/Errors/ValidationError.html +200 -0
  48. data/docs/yard/Servus/Support/Errors.html +140 -0
  49. data/docs/yard/Servus/Support/Logger.html +856 -0
  50. data/docs/yard/Servus/Support/Rescuer/BlockContext.html +585 -0
  51. data/docs/yard/Servus/Support/Rescuer/CallOverride.html +257 -0
  52. data/docs/yard/Servus/Support/Rescuer/ClassMethods.html +343 -0
  53. data/docs/yard/Servus/Support/Rescuer.html +267 -0
  54. data/docs/yard/Servus/Support/Response.html +574 -0
  55. data/docs/yard/Servus/Support/Validator.html +1150 -0
  56. data/docs/yard/Servus/Support.html +119 -0
  57. data/docs/yard/Servus/Testing/ExampleBuilders.html +523 -0
  58. data/docs/yard/Servus/Testing/ExampleExtractor.html +578 -0
  59. data/docs/yard/Servus/Testing.html +142 -0
  60. data/docs/yard/Servus.html +343 -0
  61. data/docs/yard/_index.html +535 -0
  62. data/docs/yard/class_list.html +54 -0
  63. data/docs/yard/css/common.css +1 -0
  64. data/docs/yard/css/full_list.css +58 -0
  65. data/docs/yard/css/style.css +503 -0
  66. data/docs/yard/file.1_common_patterns.html +154 -0
  67. data/docs/yard/file.1_configuration.html +115 -0
  68. data/docs/yard/file.1_overview.html +142 -0
  69. data/docs/yard/file.1_schema_validation.html +188 -0
  70. data/docs/yard/file.2_architecture.html +157 -0
  71. data/docs/yard/file.2_error_handling.html +190 -0
  72. data/docs/yard/file.2_migration_guide.html +242 -0
  73. data/docs/yard/file.2_testing.html +227 -0
  74. data/docs/yard/file.3_async_execution.html +145 -0
  75. data/docs/yard/file.3_rails_integration.html +160 -0
  76. data/docs/yard/file.3_service_objects.html +191 -0
  77. data/docs/yard/file.4_logging.html +135 -0
  78. data/docs/yard/file.ErrorHandling.html +190 -0
  79. data/docs/yard/file.READme.html +674 -0
  80. data/docs/yard/file.architecture.html +157 -0
  81. data/docs/yard/file.async_execution.html +145 -0
  82. data/docs/yard/file.common_patterns.html +154 -0
  83. data/docs/yard/file.configuration.html +115 -0
  84. data/docs/yard/file.error_handling.html +190 -0
  85. data/docs/yard/file.logging.html +135 -0
  86. data/docs/yard/file.migration_guide.html +242 -0
  87. data/docs/yard/file.overview.html +142 -0
  88. data/docs/yard/file.rails_integration.html +160 -0
  89. data/docs/yard/file.schema_validation.html +188 -0
  90. data/docs/yard/file.service_objects.html +191 -0
  91. data/docs/yard/file.testing.html +227 -0
  92. data/docs/yard/file_list.html +119 -0
  93. data/docs/yard/frames.html +22 -0
  94. data/docs/yard/index.html +674 -0
  95. data/docs/yard/js/app.js +344 -0
  96. data/docs/yard/js/full_list.js +242 -0
  97. data/docs/yard/js/jquery.js +4 -0
  98. data/docs/yard/method_list.html +542 -0
  99. data/docs/yard/top-level-namespace.html +110 -0
  100. data/lib/generators/servus/service/service_generator.rb +64 -1
  101. data/lib/generators/servus/service/templates/service.rb.erb +1 -1
  102. data/lib/servus/base.rb +258 -57
  103. data/lib/servus/config.rb +58 -12
  104. data/lib/servus/extensions/async/call.rb +50 -18
  105. data/lib/servus/extensions/async/errors.rb +23 -3
  106. data/lib/servus/extensions/async/ext.rb +10 -2
  107. data/lib/servus/extensions/async/job.rb +32 -11
  108. data/lib/servus/helpers/controller_helpers.rb +73 -37
  109. data/lib/servus/support/errors.rb +135 -45
  110. data/lib/servus/support/rescuer.rb +189 -36
  111. data/lib/servus/support/response.rb +49 -7
  112. data/lib/servus/support/validator.rb +120 -19
  113. data/lib/servus/testing/example_builders.rb +133 -0
  114. data/lib/servus/testing/example_extractor.rb +309 -0
  115. data/lib/servus/testing.rb +17 -0
  116. data/lib/servus/version.rb +1 -1
  117. metadata +118 -19
@@ -0,0 +1,142 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Servus::Testing
8
+
9
+ &mdash; Servus | Service Object Framework
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Servus::Testing";
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 (T)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Servus.html" title="Servus (module)">Servus</a></span></span>
41
+ &raquo;
42
+ <span class="title">Testing</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: Servus::Testing
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/servus/testing.rb<span class="defines">,<br />
82
+ lib/servus/testing/example_builders.rb,<br /> lib/servus/testing/example_extractor.rb</span>
83
+ </dd>
84
+ </dl>
85
+
86
+ </div>
87
+
88
+ <h2>Overview</h2><div class="docstring">
89
+ <div class="discussion">
90
+ <p>Testing utilities for Servus services.</p>
91
+
92
+ <p>This module provides helpers for extracting example values from JSON schemas
93
+ to use in tests, making it easier to create test fixtures without manually
94
+ maintaining separate factory files.</p>
95
+
96
+
97
+ </div>
98
+ </div>
99
+ <div class="tags">
100
+
101
+
102
+ <p class="tag_title">See Also:</p>
103
+ <ul class="see">
104
+
105
+ <li><span class='object_link'><a href="Testing/ExampleBuilders.html" title="Servus::Testing::ExampleBuilders (module)">ExampleBuilders</a></span></li>
106
+
107
+ <li><span class='object_link'><a href="Testing/ExampleExtractor.html" title="Servus::Testing::ExampleExtractor (class)">ExampleExtractor</a></span></li>
108
+
109
+ </ul>
110
+
111
+ </div><h2>Defined Under Namespace</h2>
112
+ <p class="children">
113
+
114
+
115
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Testing/ExampleBuilders.html" title="Servus::Testing::ExampleBuilders (module)">ExampleBuilders</a></span>
116
+
117
+
118
+
119
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Testing/ExampleExtractor.html" title="Servus::Testing::ExampleExtractor (class)">ExampleExtractor</a></span>
120
+
121
+
122
+ </p>
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+ </div>
133
+
134
+ <div id="footer">
135
+ Generated on Fri Nov 21 00:33:23 2025 by
136
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
137
+ 0.9.37 (ruby-3.4.4).
138
+ </div>
139
+
140
+ </div>
141
+ </body>
142
+ </html>
@@ -0,0 +1,343 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Servus
8
+
9
+ &mdash; Servus | Service Object Framework
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Servus";
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
+
41
+
42
+ <span class="title">Servus</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: Servus
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/servus.rb<span class="defines">,<br />
82
+ lib/servus/base.rb,<br /> lib/servus/config.rb,<br /> lib/servus/railtie.rb,<br /> lib/servus/testing.rb,<br /> lib/servus/version.rb,<br /> lib/servus/support/errors.rb,<br /> lib/servus/support/logger.rb,<br /> lib/servus/support/rescuer.rb,<br /> lib/servus/support/response.rb,<br /> lib/servus/support/validator.rb,<br /> lib/servus/extensions/async/ext.rb,<br /> lib/servus/extensions/async/job.rb,<br /> lib/servus/extensions/async/call.rb,<br /> lib/servus/extensions/async/errors.rb,<br /> lib/servus/testing/example_builders.rb,<br /> lib/servus/testing/example_extractor.rb,<br /> lib/servus/helpers/controller_helpers.rb,<br /> lib/generators/servus/service/service_generator.rb</span>
83
+ </dd>
84
+ </dl>
85
+
86
+ </div>
87
+
88
+ <h2>Overview</h2><div class="docstring">
89
+ <div class="discussion">
90
+ <p>Servus namespace</p>
91
+
92
+
93
+ </div>
94
+ </div>
95
+ <div class="tags">
96
+
97
+
98
+ </div><h2>Defined Under Namespace</h2>
99
+ <p class="children">
100
+
101
+
102
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Servus/Extensions.html" title="Servus::Extensions (module)">Extensions</a></span>, <span class='object_link'><a href="Servus/Generators.html" title="Servus::Generators (module)">Generators</a></span>, <span class='object_link'><a href="Servus/Helpers.html" title="Servus::Helpers (module)">Helpers</a></span>, <span class='object_link'><a href="Servus/Support.html" title="Servus::Support (module)">Support</a></span>, <span class='object_link'><a href="Servus/Testing.html" title="Servus::Testing (module)">Testing</a></span>
103
+
104
+
105
+
106
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Servus/Base.html" title="Servus::Base (class)">Base</a></span>, <span class='object_link'><a href="Servus/Config.html" title="Servus::Config (class)">Config</a></span>, <span class='object_link'><a href="Servus/Railtie.html" title="Servus::Railtie (class)">Railtie</a></span>
107
+
108
+
109
+ </p>
110
+
111
+
112
+ <h2>
113
+ Constant Summary
114
+ <small><a href="#" class="constants_summary_toggle">collapse</a></small>
115
+ </h2>
116
+
117
+ <dl class="constants">
118
+
119
+ <dt id="VERSION-constant" class="">VERSION =
120
+
121
+ </dt>
122
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.1.3</span><span class='tstring_end'>&#39;</span></span></pre></dd>
123
+
124
+ </dl>
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+ <h2>
135
+ Class Method Summary
136
+ <small><a href="#" class="summary_toggle">collapse</a></small>
137
+ </h2>
138
+
139
+ <ul class="summary">
140
+
141
+ <li class="public ">
142
+ <span class="summary_signature">
143
+
144
+ <a href="#config-class_method" title="config (class method)">.<strong>config</strong> &#x21d2; Servus::Config </a>
145
+
146
+
147
+
148
+ </span>
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+ <span class="summary_desc"><div class='inline'><p>Returns the singleton configuration instance.</p>
159
+ </div></span>
160
+
161
+ </li>
162
+
163
+
164
+ <li class="public ">
165
+ <span class="summary_signature">
166
+
167
+ <a href="#configure-class_method" title="configure (class method)">.<strong>configure</strong> {|config| ... } &#x21d2; void </a>
168
+
169
+
170
+
171
+ </span>
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+ <span class="summary_desc"><div class='inline'><p>Yields the configuration for modification.</p>
182
+ </div></span>
183
+
184
+ </li>
185
+
186
+
187
+ </ul>
188
+
189
+
190
+
191
+
192
+ <div id="class_method_details" class="method_details_list">
193
+ <h2>Class Method Details</h2>
194
+
195
+
196
+ <div class="method_details first">
197
+ <h3 class="signature first" id="config-class_method">
198
+
199
+ .<strong>config</strong> &#x21d2; <tt><span class='object_link'><a href="Servus/Config.html" title="Servus::Config (class)">Servus::Config</a></span></tt>
200
+
201
+
202
+
203
+
204
+
205
+ </h3><div class="docstring">
206
+ <div class="discussion">
207
+ <p>Returns the singleton configuration instance.</p>
208
+
209
+
210
+ </div>
211
+ </div>
212
+ <div class="tags">
213
+
214
+ <div class="examples">
215
+ <h4 class="tag_title">Examples:</h4>
216
+
217
+
218
+ <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Servus (module)">Servus</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_schema_root'><span class='object_link'><a href="Servus/Config.html#schema_root-instance_method" title="Servus::Config#schema_root (method)">schema_root</a></span></span>
219
+ <span class='comment'># =&gt; &quot;/app/app/schemas/services&quot;</span></code></pre>
220
+
221
+ </div>
222
+
223
+ <p class="tag_title">Returns:</p>
224
+ <ul class="return">
225
+
226
+ <li>
227
+
228
+
229
+ <span class='type'>(<tt><span class='object_link'><a href="Servus/Config.html" title="Servus::Config (class)">Servus::Config</a></span></tt>)</span>
230
+
231
+
232
+
233
+ &mdash;
234
+ <div class='inline'><p>the global configuration object</p>
235
+ </div>
236
+
237
+ </li>
238
+
239
+ </ul>
240
+
241
+ </div><table class="source_code">
242
+ <tr>
243
+ <td>
244
+ <pre class="lines">
245
+
246
+
247
+ 84
248
+ 85
249
+ 86</pre>
250
+ </td>
251
+ <td>
252
+ <pre class="code"><span class="info file"># File 'lib/servus/config.rb', line 84</span>
253
+
254
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_config'>config</span>
255
+ <span class='ivar'>@config</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="Servus/Config.html" title="Servus::Config (class)">Config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Servus/Config.html#initialize-instance_method" title="Servus::Config#initialize (method)">new</a></span></span>
256
+ <span class='kw'>end</span></pre>
257
+ </td>
258
+ </tr>
259
+ </table>
260
+ </div>
261
+
262
+ <div class="method_details ">
263
+ <h3 class="signature " id="configure-class_method">
264
+
265
+ .<strong>configure</strong> {|config| ... } &#x21d2; <tt>void</tt>
266
+
267
+
268
+
269
+
270
+
271
+ </h3><div class="docstring">
272
+ <div class="discussion">
273
+ <p class="note returns_void">This method returns an undefined value.</p><p>Yields the configuration for modification.</p>
274
+
275
+
276
+ </div>
277
+ </div>
278
+ <div class="tags">
279
+
280
+ <div class="examples">
281
+ <h4 class="tag_title">Examples:</h4>
282
+
283
+
284
+ <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Servus (module)">Servus</a></span></span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_config'>config</span><span class='op'>|</span>
285
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_schema_root'>schema_root</span> <span class='op'>=</span> <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_root'>root</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>custom/schemas</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
286
+ <span class='kw'>end</span></code></pre>
287
+
288
+ </div>
289
+
290
+ <p class="tag_title">Yield Parameters:</p>
291
+ <ul class="yieldparam">
292
+
293
+ <li>
294
+
295
+ <span class='name'>config</span>
296
+
297
+
298
+ <span class='type'>(<tt><span class='object_link'><a href="Servus/Config.html" title="Servus::Config (class)">Servus::Config</a></span></tt>)</span>
299
+
300
+
301
+
302
+ &mdash;
303
+ <div class='inline'><p>the configuration object to modify</p>
304
+ </div>
305
+
306
+ </li>
307
+
308
+ </ul>
309
+
310
+ </div><table class="source_code">
311
+ <tr>
312
+ <td>
313
+ <pre class="lines">
314
+
315
+
316
+ 97
317
+ 98
318
+ 99</pre>
319
+ </td>
320
+ <td>
321
+ <pre class="code"><span class="info file"># File 'lib/servus/config.rb', line 97</span>
322
+
323
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span>
324
+ <span class='kw'>yield</span><span class='lparen'>(</span><span class='id identifier rubyid_config'>config</span><span class='rparen'>)</span>
325
+ <span class='kw'>end</span></pre>
326
+ </td>
327
+ </tr>
328
+ </table>
329
+ </div>
330
+
331
+ </div>
332
+
333
+ </div>
334
+
335
+ <div id="footer">
336
+ Generated on Fri Nov 21 00:33:23 2025 by
337
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
338
+ 0.9.37 (ruby-3.4.4).
339
+ </div>
340
+
341
+ </div>
342
+ </body>
343
+ </html>