convenient_service 0.5.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +1 -1
  5. data/ROADMAP.md +26 -4
  6. data/Taskfile.yml +30 -0
  7. data/convenient_service.gemspec +5 -2
  8. data/lib/convenient_service/aliases.rb +2 -0
  9. data/lib/convenient_service/common/plugins/assigns_attributes_in_constructor/using_active_model_attribute_assignment/concern.rb +0 -2
  10. data/lib/convenient_service/common/plugins/assigns_attributes_in_constructor/using_dry_initializer/concern.rb +0 -2
  11. data/lib/convenient_service/common/plugins/has_around_callbacks/middleware.rb +24 -4
  12. data/lib/convenient_service/common/plugins/has_callbacks/container.rb +17 -0
  13. data/lib/convenient_service/common/plugins/has_callbacks/entities/callback.rb +98 -5
  14. data/lib/convenient_service/common/plugins/has_callbacks/middleware.rb +25 -4
  15. data/lib/convenient_service/common/plugins/has_callbacks.rb +1 -0
  16. data/lib/convenient_service/common/plugins.rb +1 -1
  17. data/lib/convenient_service/configs/standard.rb +25 -12
  18. data/lib/convenient_service/core/entities/config/entities/method_middlewares/entities/container/commands/resolve_methods_middlewares_callers.rb +1 -24
  19. data/lib/convenient_service/dependencies.rb +19 -0
  20. data/lib/convenient_service/examples/dry/gemfile/dry_service/config.rb +4 -2
  21. data/lib/convenient_service/examples/rails/gemfile/rails_service/config.rb +4 -2
  22. data/lib/convenient_service/examples/rails/gemfile/services/format.rb +35 -6
  23. data/lib/convenient_service/examples/rails/gemfile/services/format_header.rb +1 -2
  24. data/lib/convenient_service/examples/rails/gemfile/services/merge_sections.rb +25 -0
  25. data/lib/convenient_service/examples/rails/gemfile/services/replace_file_content.rb +37 -0
  26. data/lib/convenient_service/examples/rails/gemfile/services.rb +8 -4
  27. data/lib/convenient_service/examples/standard/gemfile/services/format.rb +45 -6
  28. data/lib/convenient_service/examples/standard/gemfile/services/merge_sections.rb +52 -0
  29. data/lib/convenient_service/examples/standard/gemfile/services/replace_file_content.rb +48 -0
  30. data/lib/convenient_service/examples/standard/gemfile/services.rb +8 -4
  31. data/lib/convenient_service/examples/standard/request_params/constants.rb +15 -0
  32. data/lib/convenient_service/examples/standard/request_params/entities/description.rb +40 -0
  33. data/lib/convenient_service/examples/standard/request_params/entities/format.rb +40 -0
  34. data/lib/convenient_service/examples/standard/request_params/entities/id.rb +47 -0
  35. data/lib/convenient_service/examples/standard/request_params/entities/logger.rb +21 -0
  36. data/lib/convenient_service/examples/standard/request_params/entities/request.rb +23 -0
  37. data/lib/convenient_service/examples/standard/request_params/entities/source.rb +40 -0
  38. data/lib/convenient_service/examples/standard/request_params/entities/tag.rb +40 -0
  39. data/lib/convenient_service/examples/standard/request_params/entities/title.rb +40 -0
  40. data/lib/convenient_service/examples/standard/request_params/entities.rb +11 -0
  41. data/lib/convenient_service/examples/standard/request_params/services/apply_default_param_values.rb +26 -0
  42. data/lib/convenient_service/examples/standard/request_params/services/cast_params.rb +38 -0
  43. data/lib/convenient_service/examples/standard/request_params/services/extract_params_from_body.rb +70 -0
  44. data/lib/convenient_service/examples/standard/request_params/services/extract_params_from_path.rb +62 -0
  45. data/lib/convenient_service/examples/standard/request_params/services/filter_out_unpermitted_params.rb +26 -0
  46. data/lib/convenient_service/examples/standard/request_params/services/log_request_params.rb +54 -0
  47. data/lib/convenient_service/examples/standard/request_params/services/merge_params.rb +26 -0
  48. data/lib/convenient_service/examples/standard/request_params/services/prepare.rb +65 -0
  49. data/lib/convenient_service/examples/standard/request_params/services/validate_casted_params.rb +94 -0
  50. data/lib/convenient_service/examples/standard/request_params/services/validate_uncasted_params.rb +72 -0
  51. data/lib/convenient_service/examples/standard/request_params/services.rb +13 -0
  52. data/lib/convenient_service/examples/standard/request_params/utils/array/wrap.rb +46 -0
  53. data/lib/convenient_service/examples/standard/request_params/utils/array.rb +21 -0
  54. data/lib/convenient_service/examples/standard/request_params/utils/http/request/parse_body.rb +42 -0
  55. data/lib/convenient_service/examples/standard/request_params/utils/http/request/parse_path.rb +40 -0
  56. data/lib/convenient_service/examples/standard/request_params/utils/http/request.rb +28 -0
  57. data/lib/convenient_service/examples/standard/request_params/utils/http.rb +3 -0
  58. data/lib/convenient_service/examples/standard/request_params/utils/integer/safe_parse.rb +31 -0
  59. data/lib/convenient_service/examples/standard/request_params/utils/integer.rb +25 -0
  60. data/lib/convenient_service/examples/standard/request_params/utils/json/safe_parse.rb +40 -0
  61. data/lib/convenient_service/examples/standard/request_params/utils/json.rb +21 -0
  62. data/lib/convenient_service/examples/standard/request_params/utils/object/blank.rb +34 -0
  63. data/lib/convenient_service/examples/standard/request_params/utils/object/present.rb +31 -0
  64. data/lib/convenient_service/examples/standard/request_params/utils/object.rb +26 -0
  65. data/lib/convenient_service/examples/standard/request_params/utils.rb +7 -0
  66. data/lib/convenient_service/examples/standard/request_params.rb +48 -0
  67. data/lib/convenient_service/factories/arguments.rb +43 -0
  68. data/lib/convenient_service/factories/results.rb +214 -0
  69. data/lib/convenient_service/factories/services.rb +189 -0
  70. data/lib/convenient_service/factories/step/instance.rb +32 -0
  71. data/lib/convenient_service/factories/step.rb +3 -0
  72. data/lib/convenient_service/factories/steps.rb +126 -0
  73. data/lib/convenient_service/factories.rb +22 -0
  74. data/lib/convenient_service/factory.rb +21 -0
  75. data/lib/convenient_service/rspec/matchers/custom/be_descendant_of.rb +2 -2
  76. data/lib/convenient_service/rspec/matchers/custom/be_direct_descendant_of.rb +2 -2
  77. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/commands/generate_printable_method.rb +50 -0
  78. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/commands.rb +3 -0
  79. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands/apply_stub_to_track_delegations.rb +78 -0
  80. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands/generate_printable_arguments.rb +100 -0
  81. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands.rb +4 -0
  82. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments.rb +95 -0
  83. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/base.rb +87 -0
  84. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/return_its_value.rb +129 -0
  85. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_any_arguments.rb +37 -0
  86. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_concrete_arguments.rb +37 -0
  87. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/sub_matchers/without_arguments.rb +37 -0
  88. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/values/base.rb +41 -0
  89. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/values/with_calling_original.rb +30 -0
  90. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings/values/without_calling_original.rb +30 -0
  91. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings.rb +12 -0
  92. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings_collection/errors.rb +57 -0
  93. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/chainings_collection.rb +171 -0
  94. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities/delegation.rb +79 -0
  95. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher/entities.rb +5 -0
  96. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities/matcher.rb +276 -0
  97. data/lib/convenient_service/rspec/matchers/custom/delegate_to/entities.rb +3 -0
  98. data/lib/convenient_service/rspec/matchers/custom/delegate_to.rb +66 -233
  99. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/find_result_method_step.rb +74 -0
  100. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/find_result_result_method_step.rb +66 -0
  101. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/find_result_service_step.rb +48 -0
  102. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/generate_expected_step_part.rb +42 -0
  103. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/generate_got_step_part.rb +42 -0
  104. data/lib/convenient_service/rspec/matchers/custom/results/base/commands/match_result_step.rb +89 -0
  105. data/lib/convenient_service/rspec/matchers/custom/results/base/commands.rb +10 -0
  106. data/lib/convenient_service/rspec/matchers/custom/results/base/errors.rb +35 -0
  107. data/lib/convenient_service/rspec/matchers/custom/results/base.rb +73 -12
  108. data/lib/convenient_service/rspec/matchers/custom/singleton_prepend_module.rb +79 -0
  109. data/lib/convenient_service/rspec/matchers/custom.rb +1 -0
  110. data/lib/convenient_service/rspec/matchers/singleton_prepend_module.rb +13 -0
  111. data/lib/convenient_service/rspec/matchers.rb +2 -0
  112. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/concern.rb +85 -0
  113. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/initialize/middleware.rb +27 -0
  114. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/initialize.rb +3 -0
  115. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/to_kwargs/middleware.rb +25 -0
  116. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result/to_kwargs.rb +3 -0
  117. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/can_have_parent_result.rb +5 -0
  118. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_jsend_status_and_attributes/concern/instance_methods.rb +7 -1
  119. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_jsend_status_and_attributes/entities/data.rb +4 -0
  120. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/concern.rb +27 -0
  121. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/initialize/middleware.rb +27 -0
  122. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/initialize.rb +3 -0
  123. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/to_kwargs/middleware.rb +25 -0
  124. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step/to_kwargs.rb +3 -0
  125. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_step.rb +5 -0
  126. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins.rb +2 -0
  127. data/lib/convenient_service/service/plugins/has_result_method_steps.rb +0 -2
  128. data/lib/convenient_service/service/plugins/has_result_steps/concern.rb +40 -4
  129. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method.rb +3 -0
  130. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method_caller.rb +8 -1
  131. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method_direction.rb +3 -0
  132. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method_key.rb +8 -1
  133. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method_name.rb +9 -5
  134. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/define_method_in_container.rb +2 -2
  135. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/concern/instance_methods.rb +4 -0
  136. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/callers/base.rb +4 -0
  137. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/callers/reassignment/commands/define_method_in_container.rb +74 -0
  138. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/callers/reassignment/commands.rb +3 -0
  139. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/callers/reassignment.rb +50 -0
  140. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/callers.rb +1 -0
  141. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/values/reassignment.rb +43 -0
  142. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/values.rb +3 -0
  143. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities.rb +1 -0
  144. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/errors.rb +22 -0
  145. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/concern/instance_methods.rb +39 -3
  146. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/plugins/can_have_parent_result/middleware.rb +23 -0
  147. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/plugins/can_have_parent_result.rb +3 -0
  148. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/plugins.rb +1 -0
  149. data/lib/convenient_service/service/plugins/has_result_steps/entities/step_collection.rb +13 -0
  150. data/lib/convenient_service/service/plugins/has_result_steps/middleware.rb +18 -4
  151. data/lib/convenient_service/services/run_method_in_organizer.rb +28 -0
  152. data/lib/convenient_service/services/run_own_method_in_organizer.rb +64 -0
  153. data/lib/convenient_service/{service/plugins/has_result_method_steps/services.rb → services.rb} +0 -1
  154. data/lib/convenient_service/support/arguments/null_arguments.rb +28 -0
  155. data/lib/convenient_service/support/arguments.rb +87 -0
  156. data/lib/convenient_service/support/copyable.rb +6 -2
  157. data/lib/convenient_service/support/dependency_container/commands/assert_valid_scope.rb +32 -0
  158. data/lib/convenient_service/support/dependency_container/commands/import_method.rb +13 -23
  159. data/lib/convenient_service/support/dependency_container/commands.rb +1 -0
  160. data/lib/convenient_service/support/dependency_container/constants.rb +4 -2
  161. data/lib/convenient_service/support/dependency_container/entities/method.rb +2 -9
  162. data/lib/convenient_service/support/dependency_container/entities/namespace_collection.rb +0 -9
  163. data/lib/convenient_service/support/dependency_container/errors.rb +26 -1
  164. data/lib/convenient_service/support/dependency_container/export.rb +8 -0
  165. data/lib/convenient_service/support/dependency_container/import.rb +3 -1
  166. data/lib/convenient_service/support/not_passed.rb +3 -1
  167. data/lib/convenient_service/support/version/null_version.rb +7 -0
  168. data/lib/convenient_service/support/version.rb +11 -1
  169. data/lib/convenient_service/support.rb +1 -0
  170. data/lib/convenient_service/utils/object/instance_variable_delete.rb +41 -0
  171. data/lib/convenient_service/utils/object/instance_variable_fetch.rb +4 -0
  172. data/lib/convenient_service/utils/object.rb +9 -0
  173. data/lib/convenient_service/utils/proc/display.rb +43 -0
  174. data/lib/convenient_service/utils/proc.rb +5 -0
  175. data/lib/convenient_service/version.rb +1 -1
  176. data/lib/convenient_service.rb +6 -0
  177. data/logo.png +0 -0
  178. metadata +154 -10
  179. data/lib/convenient_service/service/plugins/has_result_method_steps/errors.rb +0 -23
  180. data/lib/convenient_service/service/plugins/has_result_method_steps/services/method_step_config.rb +0 -55
  181. data/lib/convenient_service/service/plugins/has_result_method_steps/services/run_method_in_organizer.rb +0 -30
  182. data/lib/convenient_service/service/plugins/has_result_method_steps/services/run_own_method_in_organizer.rb +0 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7655bb52a95f02a3f973c4f26e8e881ebf2dec66e056de3e085515b8e1c9b8f9
4
- data.tar.gz: 440d3e574c167e88ca942e98eb022665faf918933d20789d4acc50f90bd0e9e8
3
+ metadata.gz: 2d49bd8a8f45539edd750ba5388d4cd0dc7ab2e442380a24f38879f17c405944
4
+ data.tar.gz: 63adf6692c4989970e4fe1fa2b0c28bfa2c29020f33e9567d3fabbd9284f1944
5
5
  SHA512:
6
- metadata.gz: 2f76c7d18d8dbe51157e07c575718383148fc070cd85705450f9ea7d5bd4c3837d459b1da3125c4a1eb6188d14ce5e5d10c1b501104949f6c609e6a0f724e820
7
- data.tar.gz: fb0f1e875261f71a01fefba836b45e6c8995ea94f9aa906050f9bebdf5b4690bafda699c624a9405cec65c14928ba1956d6c3a193f434ab471ceceb4635baef6
6
+ metadata.gz: 199c1e80a8dfeedc2a8d1873f8f75008d510fb48374ab116f7c51f49ef44cf034454280279a5fda2bdc16ccd69e6010cb70291bdf0f10295d3eabddfcc391a6e
7
+ data.tar.gz: 2f03ad73249e0f61ee1d2f2b3fde41c82d9bd2089ebcd95f01390df206f6dded8ee5c4880d409065f6df01ba63eec1cbf26caabaf94c4e4a962752bb1f9d967f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,54 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.0](https://github.com/marian13/convenient_service/compare/v0.6.0...v0.7.0) (2023-02-13)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * **be_result:** introduce #of_step, #of_service, remove #of
9
+ * **has_result:** use callbacks before result
10
+
11
+ ### Features
12
+
13
+ * **be_result:** introduce #of_step, #of_service, remove #of ([0d9ba16](https://github.com/marian13/convenient_service/commit/0d9ba16f035ef50268fdf484b0fd83c58dbb328a))
14
+ * **be_result:** of_step supports method steps ([9127301](https://github.com/marian13/convenient_service/commit/9127301f41549fbb8c48b718e410ebd7c100e2e9))
15
+ * **can_have_parent_Result:** introduce CanHaveParentResult plugin ([55f0b0f](https://github.com/marian13/convenient_service/commit/55f0b0f558e2edb8b0fdc56a2d8b52bc44995a2f))
16
+ * **command:** expose command ([6abcb1a](https://github.com/marian13/convenient_service/commit/6abcb1ad481cad66eba2d4d409e3ce16b0f6591d))
17
+ * **configs:** add around callbacks for steps ([cb9d342](https://github.com/marian13/convenient_service/commit/cb9d34204d63a96e89ebebe2991e8ab77b2624f0))
18
+ * **has_around_callbacks:** pass arguments to around callbacks ([f682f9a](https://github.com/marian13/convenient_service/commit/f682f9a6fb3ef6e8ab50ccf0f7f3ba375a63092e))
19
+ * **has_callbacks:** pass arguments to callbacks ([2d7f720](https://github.com/marian13/convenient_service/commit/2d7f720e37a15874ec89167e46fb67a0631ec923))
20
+ * **has_jsend_status_and_attributes:** introduce Data#to_s ([c1e20c0](https://github.com/marian13/convenient_service/commit/c1e20c093ec4575a939645a2d951fe4e035154b8))
21
+ * **has_result_steps:** add callback trigger for step ([475d46a](https://github.com/marian13/convenient_service/commit/475d46a5abaf6fa85260cef90d78db60146b86d9))
22
+ * **has_result_steps:** introduce Step#original_result ([8891247](https://github.com/marian13/convenient_service/commit/8891247e5f0339d9e96e733d05b29e45a2e87e71))
23
+ * **has_step:** introduce HasStep plugin ([e6eee96](https://github.com/marian13/convenient_service/commit/e6eee965c8707b7378173f228b9b212834be434b))
24
+ * **not_passed:** add better #inspect ([d7ce5d9](https://github.com/marian13/convenient_service/commit/d7ce5d93a3aa5f139f6b7ee578975c1da52488c0))
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **be_descendant_of:** fix typo ([58e0f73](https://github.com/marian13/convenient_service/commit/58e0f73f74685614d24e0ee3c8208a5626f7ef42))
30
+ * **be_direct_descendant_of:** fix typo ([bda7d06](https://github.com/marian13/convenient_service/commit/bda7d063d1801309a58b5e4d43d738ebab5fef59))
31
+ * **ci:** change the version of yard ([185c23c](https://github.com/marian13/convenient_service/commit/185c23c40dacf997e29d0b7defd10020c22dc196))
32
+ * **copyable:** do not mutate input params ([0809592](https://github.com/marian13/convenient_service/commit/08095927ea03c60a00eb3b0d0323458b482827b0))
33
+ * **dependency_container:** fix typo ([b1cf420](https://github.com/marian13/convenient_service/commit/b1cf420a2e69cc51e928a8a1ad885a65ad7fb4fe))
34
+ * **has_result_steps:** use unsafe attributes in to_kwargs ([6c2b1d3](https://github.com/marian13/convenient_service/commit/6c2b1d3912106f6848b875d06a4d7ce1d79c4edb))
35
+ * **has_result_steps:** use unsafe_data ([e00c346](https://github.com/marian13/convenient_service/commit/e00c3468f5761e20678c7019f0d13f2569778b19))
36
+ * **has_result:** use callbacks before result ([eb46444](https://github.com/marian13/convenient_service/commit/eb46444536a7cf4aab869aa009c1a7c896c00c11))
37
+
38
+
39
+ ### Miscellaneous Chores
40
+
41
+ * release 0.7.0 ([6433f5a](https://github.com/marian13/convenient_service/commit/6433f5a67c3f21c620d500186e0308fb7b098efc))
42
+
43
+ ## [0.6.0](https://github.com/marian13/convenient_service/compare/v0.5.0...v0.6.0) (2023-01-22)
44
+
45
+
46
+ ### Features
47
+
48
+ * **dependency_container:** assert valid scope ([5d75f59](https://github.com/marian13/convenient_service/commit/5d75f593c01baa695e75fe49af6b4c6b80d7d9b1))
49
+ * **singleton_prepend_module:** introduce singleton_prepend_module custom RSpec matcher ([6636b8d](https://github.com/marian13/convenient_service/commit/6636b8d030329e4a6216a934748a70ef4bae6ff3))
50
+ * **has_result_steps:** introduce reassign ([75855be](https://github.com/marian13/convenient_service/commit/75855be7fd9115d01d5cfad99d35319486332bd2))
51
+
3
52
  ## [0.5.0](https://github.com/marian13/convenient_service/compare/v0.4.0...v0.5.0) (2023-01-19)
4
53
 
5
54
 
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2022 Marian Kostyk
3
+ Copyright (c) 2022-2023 Marian Kostyk
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -60,5 +60,5 @@ This library is under heavy development. Public API may be subject to change. Th
60
60
  ---
61
61
 
62
62
  <!-- author:start -->
63
- Copyright (c) 2022 [Marian Kostyk](http://mariankostyk.com).
63
+ Copyright (c) 2022-2023 [Marian Kostyk](http://mariankostyk.com).
64
64
  <!-- author:end -->
data/ROADMAP.md CHANGED
@@ -32,7 +32,7 @@
32
32
  | High | 🚧 | Optimize `stack.dup` in `MethodMiddlewares#call` | Core v3 |
33
33
  | Medium | 🚧 | Make a decision of what to do with `printable_block` in custom RSpec matchers | |
34
34
  | Medium | 🚧 | User-friendly exception messages | |
35
- | High | 🚧 | Factories for POROs in specs ❗❗❗ | Start with `result_class`, `class self::Result`, `service_class`, `step_class`, `organizer_class` |
35
+ | High | 🚧 | Factory for POROs in specs ❗❗❗ | Start with `result_class`, `class self::Result`, `service_class`, `step_class`, `organizer_class` |
36
36
  | High | 🚧 | Resolve warning during specs | |
37
37
  | Medium | 🚧 | Consider to change/rewrite `delegate` backend to minify its interface | |
38
38
  | Medium | 🚧 | Same order of attr macros, delegators, initialize, class methods, attr methods, queries, actions, `to_*`, comparison, inspect | |
@@ -44,14 +44,36 @@
44
44
  | High | 🚧 | `included_once` for `Support::Concern` |
45
45
  | Medium | 🚧 | Custom YARD type for service instance, service class as return values |
46
46
  | Medium | 🚧 | Heredoc for error messages |
47
- | Medium | 🚧 | Specs for `be_success`, `be_error`, `be_failure` matchers | |
48
- | Low | 🚧 | [Receive Counts](https://relishapp.com/rspec/rspec-mocks/docs/setting-constraints/receive-counts) for `delegate_to` | |
47
+ | Medium | 🚧 | Specs for `be_success`, `be_error`, `be_failure` matchers | |
48
+ | Low | 🚧 | [Receive Counts](https://relishapp.com/rspec/rspec-mocks/docs/setting-constraints/receive-counts) for `delegate_to` | |
49
49
  | Low | 🚧 | Prefer versioning instead of modification plugin | |
50
50
  | Low | 🚧 | Consider to move `__steps__` and `__callbacks__` to `internals_class` | Benefit? |
51
51
  | Medium | 🚧 | User friendly `raise` that removes lib backtrace from caller | Should have a `debug` mode. Should work well with examples. Check RSpec `CallerFilter.first_non_rspec_line` |
52
52
  | High | 🚧 | A plugin that catches `StandardError` and returns `failure` | Should be the lowest in the stack |
53
53
  | High | 🚧 | `Support::Command` alias | Should be visible to the end user |
54
54
  | Low | 🚧 | Parallel steps | A killer feature |
55
- | Medium | 🚧 | Add Ruby 3.2 support to Docker and CI | |
55
+ | Medium | 🚧 | Add `Ruby 3.2` support to `Docker` and `CI` | |
56
+ | Low | 🚧 | `overload do` | |
57
+ | Low | 🚧 | Same spec example group organization | |
58
+ | Medium | 🚧 | `Support::Arguments` | |
59
+ | Low | 🚧 | Null object to Nil object? | |
60
+ | High | 🚧 | Do not use Testing Toolkit in the Primitives layer | See [Components Diagram](https://marian13.github.io/static_content/convenient_service/diagrams/components_graph.html) + it should take the minimal amount of efforts to extract and reuse `Utils`, `Suppport` in the different projects |
61
+ | Medium | 🚧 | Perfromance testing | [rspec-benchmark](https://github.com/piotrmurach/rspec-benchmark), [Testing object allocations](https://www.honeybadger.io/blog/testing-object-allocations/), [allocation_stats](https://github.com/srawlins/allocation_stats) |
62
+ | Medium | 🚧 | Mutant testing | [mutant](https://github.com/mbj/mutant) |
63
+ | Low | 🚧 | Add `JRuby` support | [jruby](https://www.jruby.org/) |
64
+ | Medium | 🚧 | Add `shoulda-context` to test conditionals when `RSpec` is not loaded | [shoulda-context](https://github.com/thoughtbot/shoulda-context) |
65
+ | High | 🚧 | Abstract factory for `CastMethod` | |
66
+ | Medium | 🚧 | `delegate_to` - option to specify of how to compare blocks | |
67
+ | High | 🚧 | Add specs for [Reassignment::Commands::DefineMethodInContainer](https://github.com/marian13/convenient_service/blob/v0.6.0/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/callers/reassignment/commands/define_method_in_container.rb#L13) | |
68
+ | High | 🚧 | Example for dependency containers | |
69
+ | Low | 🚧 | `delegate_to.and_return_value` | |
70
+ | Medium | 🚧 | Support two Cache implementations, array-based and hash-based | |
71
+ | Low | 🚧 | `delegate_to_service` | |
72
+ | High | 🚧 | Intentionally disable plugins to document dependencies | |
73
+ | Low | 🚧 | `.and_return_value_should be_instance_of(expected)` | |
74
+ | Low | 🚧 | `ConvenientService::Config.delegate_to_diff_argorithm = :diffy` | |
75
+ | Low | 🚧 | Rubocop cop that complains when a service name does NOT start with a verb | |
76
+ | Low | 🚧 | Generator to create a spec default structure | |
77
+ | Low | 🚧 | Rubocop cop that complains when a service does NOT have its own suite of specs | |
56
78
 
57
79
  Search for `TODO`s in the codebase for more tasks.
data/Taskfile.yml CHANGED
@@ -78,6 +78,16 @@ tasks:
78
78
 
79
79
  docker:build:ruby_2.7:
80
80
  cmds:
81
+ ##
82
+ # NOTE: Meaning of `|| 2> /dev/null`.
83
+ # https://stackoverflow.com/a/10250395/12201472
84
+ #
85
+ # NOTE: Meaning of `|| true`.
86
+ # https://superuser.com/a/887349/1180656
87
+ #
88
+ - rm Gemfile.2.7 2> /dev/null || true
89
+ - rm Gemfile.2.7.lock 2> /dev/null || true
90
+ - cp Gemfile Gemfile.2.7
81
91
  - docker build . -f docker/2.7/Dockerfile -t convenient_service:2.7
82
92
  preconditions:
83
93
  - sh: '[ "${IN_DOCKER_CONTAINER}" != "true" ]'
@@ -85,6 +95,16 @@ tasks:
85
95
 
86
96
  docker:build:ruby_3.0:
87
97
  cmds:
98
+ ##
99
+ # NOTE: Meaning of `|| 2> /dev/null`.
100
+ # https://stackoverflow.com/a/10250395/12201472
101
+ #
102
+ # NOTE: Meaning of `|| true`.
103
+ # https://superuser.com/a/887349/1180656
104
+ #
105
+ - rm Gemfile.3.0 2> /dev/null || true
106
+ - rm Gemfile.3.0.lock 2> /dev/null || true
107
+ - cp Gemfile Gemfile.3.0
88
108
  - docker build . -f docker/3.0/Dockerfile -t convenient_service:3.0
89
109
  preconditions:
90
110
  - sh: '[ "${IN_DOCKER_CONTAINER}" != "true" ]'
@@ -92,6 +112,16 @@ tasks:
92
112
 
93
113
  docker:build:ruby_3.1:
94
114
  cmds:
115
+ ##
116
+ # NOTE: Meaning of `|| 2> /dev/null`.
117
+ # https://stackoverflow.com/a/10250395/12201472
118
+ #
119
+ # NOTE: Meaning of `|| true`.
120
+ # https://superuser.com/a/887349/1180656
121
+ #
122
+ - rm Gemfile.3.1 2> /dev/null || true
123
+ - rm Gemfile.3.1.lock 2> /dev/null || true
124
+ - cp Gemfile Gemfile.3.1
95
125
  - docker build . -f docker/3.1/Dockerfile -t convenient_service:3.1
96
126
  preconditions:
97
127
  - sh: '[ "${IN_DOCKER_CONTAINER}" != "true" ]'
@@ -33,20 +33,23 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "awesome_print"
34
34
  spec.add_development_dependency "byebug", "~> 10.0"
35
35
  spec.add_development_dependency "commonmarker"
36
+ spec.add_development_dependency "faker"
36
37
  spec.add_development_dependency "gem-release"
37
38
  spec.add_development_dependency "inch"
39
+ spec.add_development_dependency "json"
38
40
  spec.add_development_dependency "paint"
39
41
  spec.add_development_dependency "progressbar"
40
42
  spec.add_development_dependency "rake", "~> 12.0"
41
43
  spec.add_development_dependency "rerun"
42
44
  spec.add_development_dependency "rouge"
43
- spec.add_development_dependency "rspec", "~> 3.0"
45
+ spec.add_development_dependency "rspec", "~> 3.11.0"
44
46
  spec.add_development_dependency "rubocop", "~> 1.40.0"
45
47
  spec.add_development_dependency "rubocop-rspec"
46
48
  spec.add_development_dependency "tty-prompt"
47
49
  spec.add_development_dependency "standard"
48
50
  spec.add_development_dependency "simplecov"
49
51
  spec.add_development_dependency "simplecov-lcov"
50
- spec.add_development_dependency "yard"
52
+ spec.add_development_dependency "webrick"
53
+ spec.add_development_dependency "yard", "~> 0.9.28"
51
54
  spec.add_development_dependency "yard-junk"
52
55
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ConvenientService
4
+ Command = ::ConvenientService::Support::Command
5
+ Concern = ::ConvenientService::Support::Concern
4
6
  DependencyContainer = ::ConvenientService::Support::DependencyContainer
5
7
  end
@@ -9,8 +9,6 @@ module ConvenientService
9
9
  include Support::Concern
10
10
 
11
11
  included do |service_class|
12
- require "active_model"
13
-
14
12
  service_class.include ::ActiveModel::AttributeAssignment
15
13
  end
16
14
  end
@@ -9,8 +9,6 @@ module ConvenientService
9
9
  include Support::Concern
10
10
 
11
11
  included do |service_class|
12
- require "dry-initializer"
13
-
14
12
  service_class.extend ::Dry::Initializer
15
13
  end
16
14
  end
@@ -5,7 +5,11 @@ module ConvenientService
5
5
  module Plugins
6
6
  module HasAroundCallbacks
7
7
  class Middleware < Core::MethodChainMiddleware
8
- def next(...)
8
+ include Support::DependencyContainer::Import
9
+
10
+ import :"entities.Callback", from: Common::Plugins::HasCallbacks::Container
11
+
12
+ def next(*args, **kwargs, &block)
9
13
  ##
10
14
  # A variable that stores return value of middleware `chain.next` aka `original_value`.
11
15
  # It is reassigned later by the `initial_around_callback`.
@@ -15,14 +19,30 @@ module ConvenientService
15
19
  ##
16
20
  # A list of around callbacks.
17
21
  #
22
+ # class Service
23
+ # around do |chain|
24
+ # # part before `chain.yield`
25
+ # original_value = chain.yield
26
+ # # part after `chain.yield`
27
+ # end
28
+ # end
29
+ #
30
+ # class Service
31
+ # around do |chain, arguments|
32
+ # # part before `chain.yield`
33
+ # original_value = chain.yield
34
+ # # part after `chain.yield`
35
+ # end
36
+ # end
37
+ #
18
38
  around_callbacks = entity.callbacks.for([:around, method])
19
39
 
20
40
  ##
21
41
  #
22
42
  #
23
- initial_around_callback = Plugins::HasCallbacks::Entities::Callback.new(
43
+ initial_around_callback = entities.Callback.new(
24
44
  types: [:around, method],
25
- block: proc { original_value = chain.next(...) }
45
+ block: proc { original_value = chain.next(*args, **kwargs, &block) }
26
46
  )
27
47
 
28
48
  ##
@@ -76,7 +96,7 @@ module ConvenientService
76
96
  # rubocop:disable Style/Semicolon
77
97
  composed =
78
98
  around_callbacks.reverse.reduce(initial_around_callback) do |composed, callback|
79
- proc { callback.call_in_context(entity, composed); original_value }
99
+ proc { callback.call_in_context_with_value_and_arguments(entity, composed, *args, **kwargs, &block); original_value }
80
100
  end
81
101
  # rubocop:enable Style/Semicolon
82
102
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module Common
5
+ module Plugins
6
+ module HasCallbacks
7
+ module Container
8
+ include Support::DependencyContainer::Export
9
+
10
+ export :"entities.Callback" do
11
+ Entities::Callback
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -6,33 +6,99 @@ module ConvenientService
6
6
  module HasCallbacks
7
7
  module Entities
8
8
  class Callback
9
- attr_reader :types, :block
9
+ ##
10
+ # @!attribute [r] types
11
+ # @return [ConvenientService::Common::Plugins::HasCallbacks::Entities::TypeCollection]
12
+ #
13
+ attr_reader :types
10
14
 
15
+ ##
16
+ # @!attribute [r] block
17
+ # @return [Proc]
18
+ #
19
+ attr_reader :block
20
+
21
+ ##
22
+ # @param types [ConvenientService::Common::Plugins::HasCallbacks::Entities::TypeCollection]
23
+ # @param block [Proc]
24
+ # @return [void]
25
+ #
11
26
  def initialize(types:, block:)
12
27
  @types = Entities::TypeCollection.new(types: types)
13
28
  @block = block
14
29
  end
15
30
 
31
+ ##
32
+ # @return [Boolean]
33
+ #
16
34
  def called?
17
35
  Utils::Bool.to_bool(@called)
18
36
  end
19
37
 
38
+ ##
39
+ # @return [Boolean]
40
+ #
20
41
  def not_called?
21
42
  !called?
22
43
  end
23
44
 
24
- def call(*args, **kwargs)
25
- block.call(*args, **kwargs).tap { mark_as_called }
45
+ ##
46
+ # @return [Object] Can be any type.
47
+ #
48
+ def call(...)
49
+ call_callback(...)
26
50
  end
27
51
 
52
+ ##
53
+ # @return [Object] Can be any type.
54
+ #
28
55
  alias_method :yield, :call
56
+
57
+ ##
58
+ # @return [Object] Can be any type.
59
+ #
29
60
  alias_method :[], :call
61
+
62
+ ##
63
+ # @return [Object] Can be any type.
64
+ #
30
65
  alias_method :===, :call
31
66
 
32
- def call_in_context(context, *args, **kwargs)
33
- context.instance_exec(*args, **kwargs, &block).tap { mark_as_called }
67
+ ##
68
+ # @param context [Object] Can be any type.
69
+ # @return [ConvenientService::Common::Plugins::HasCallbacks::Entities::Callback]
70
+ #
71
+ def call_in_context(context)
72
+ call_callback_in_context(context)
73
+ end
74
+
75
+ ##
76
+ # @param context [Object] Can be any type.
77
+ # @param args [Array]
78
+ # @param kwargs [Hash]
79
+ # @param block [Proc]
80
+ # @return [ConvenientService::Common::Plugins::HasCallbacks::Entities::Callback]
81
+ #
82
+ def call_in_context_with_arguments(context, *args, **kwargs, &block)
83
+ call_callback_in_context(context, arguments(*args, **kwargs, &block))
84
+ end
85
+
86
+ ##
87
+ # @param context [Object] Can be any type.
88
+ # @param value [Object] Can be any type.
89
+ # @param args [Array]
90
+ # @param kwargs [Hash]
91
+ # @param block [Proc]
92
+ # @return [ConvenientService::Common::Plugins::HasCallbacks::Entities::Callback]
93
+ #
94
+ def call_in_context_with_value_and_arguments(context, value, *args, **kwargs, &block)
95
+ call_callback_in_context(context, value, arguments(*args, **kwargs, &block))
34
96
  end
35
97
 
98
+ ##
99
+ # @param other [Object] Can be any type.
100
+ # @return [Boolead]
101
+ #
36
102
  def ==(other)
37
103
  return unless other.instance_of?(self.class)
38
104
 
@@ -42,15 +108,42 @@ module ConvenientService
42
108
  true
43
109
  end
44
110
 
111
+ ##
112
+ # @return [Proc]
113
+ #
45
114
  def to_proc
46
115
  block
47
116
  end
48
117
 
49
118
  private
50
119
 
120
+ ##
121
+ # @return [Boolean]
122
+ #
51
123
  def mark_as_called
52
124
  @called = true
53
125
  end
126
+
127
+ ##
128
+ # @return [ConvenientService::Support::Arguments]
129
+ #
130
+ def arguments(...)
131
+ Support::Arguments.new(...)
132
+ end
133
+
134
+ ##
135
+ # @return [Object] Can be any type.
136
+ #
137
+ def call_callback(...)
138
+ block.call(...).tap { mark_as_called }
139
+ end
140
+
141
+ ##
142
+ # @return [Object] Can be any type.
143
+ #
144
+ def call_callback_in_context(context, *args)
145
+ context.instance_exec(*args, &block).tap { mark_as_called }
146
+ end
54
147
  end
55
148
  end
56
149
  end
@@ -5,12 +5,33 @@ module ConvenientService
5
5
  module Plugins
6
6
  module HasCallbacks
7
7
  class Middleware < Core::MethodChainMiddleware
8
- def next(...)
9
- entity.callbacks.for([:before, method]).each { |callback| callback.call_in_context(entity) }
8
+ def next(*args, **kwargs, &block)
9
+ ##
10
+ # class Service
11
+ # before :result do
12
+ # end
13
+ #
14
+ # before :result do |arguments|
15
+ # end
16
+ # end
17
+ #
18
+ entity.callbacks.for([:before, method]).each { |callback| callback.call_in_context_with_arguments(entity, *args, **kwargs, &block) }
10
19
 
11
- original_value = chain.next(...)
20
+ original_value = chain.next(*args, **kwargs, &block)
12
21
 
13
- entity.callbacks.for([:after, method]).reverse_each { |callback| callback.call_in_context(entity, original_value) }
22
+ ##
23
+ # class Service
24
+ # after :result do
25
+ # end
26
+ #
27
+ # after :result do |result|
28
+ # end
29
+ #
30
+ # after :result do |result, arguments|
31
+ # end
32
+ # end
33
+ #
34
+ entity.callbacks.for([:after, method]).reverse_each { |callback| callback.call_in_context_with_value_and_arguments(entity, original_value, *args, **kwargs, &block) }
14
35
 
15
36
  original_value
16
37
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "has_callbacks/concern"
4
+ require_relative "has_callbacks/container"
4
5
  require_relative "has_callbacks/entities"
5
6
  require_relative "has_callbacks/middleware"
@@ -8,8 +8,8 @@ require_relative "plugins/normalizes_env"
8
8
  require_relative "plugins/caches_constructor_params"
9
9
  require_relative "plugins/caches_return_value"
10
10
  require_relative "plugins/can_be_copied"
11
- require_relative "plugins/has_around_callbacks"
12
11
  require_relative "plugins/has_callbacks"
12
+ require_relative "plugins/has_around_callbacks"
13
13
  require_relative "plugins/has_constructor"
14
14
  require_relative "plugins/has_constructor_without_initialize"
15
15
  require_relative "plugins/has_internals"
@@ -34,12 +34,6 @@ module ConvenientService
34
34
  use Plugins::Common::HasAroundCallbacks::Concern
35
35
 
36
36
  use Plugins::Service::HasInspect::Concern
37
- ##
38
- # NOTE: Optional plugins.
39
- # TODO: Specs.
40
- #
41
- # use Plugins::Common::HasConfig::Concern
42
- #
43
37
  end
44
38
 
45
39
  middlewares :initialize do
@@ -51,18 +45,24 @@ module ConvenientService
51
45
  middlewares :result do
52
46
  use Plugins::Common::NormalizesEnv::Middleware
53
47
 
54
- use Plugins::Service::HasResult::Middleware
55
-
56
- use Plugins::Service::HasResultSteps::Middleware
57
-
58
48
  use Plugins::Common::HasCallbacks::Middleware
59
49
  use Plugins::Common::HasAroundCallbacks::Middleware
60
50
 
51
+ use Plugins::Service::HasResult::Middleware
52
+ use Plugins::Service::HasResultSteps::Middleware
53
+
61
54
  use Plugins::Service::RaisesOnDoubleResult::Middleware
62
55
 
63
56
  use Plugins::Common::CachesReturnValue::Middleware
64
57
  end
65
58
 
59
+ middlewares :step do
60
+ use Plugins::Common::NormalizesEnv::Middleware
61
+
62
+ use Plugins::Common::HasCallbacks::Middleware
63
+ use Plugins::Common::HasAroundCallbacks::Middleware
64
+ end
65
+
66
66
  middlewares :success do
67
67
  use Plugins::Common::NormalizesEnv::Middleware
68
68
 
@@ -111,6 +111,9 @@ module ConvenientService
111
111
  use Plugins::Result::HasResultShortSyntax::Concern
112
112
  use Plugins::Result::CanRecalculateResult::Concern
113
113
 
114
+ use Plugins::Result::HasStep::Concern
115
+ use Plugins::Result::CanHaveParentResult::Concern
116
+
114
117
  use Plugins::Result::HasInspect::Concern
115
118
  end
116
119
 
@@ -118,6 +121,9 @@ module ConvenientService
118
121
  use Plugins::Common::NormalizesEnv::Middleware
119
122
 
120
123
  use Plugins::Result::HasJsendStatusAndAttributes::Middleware
124
+
125
+ use Plugins::Result::HasStep::Initialize::Middleware
126
+ use Plugins::Result::CanHaveParentResult::Initialize::Middleware
121
127
  end
122
128
 
123
129
  middlewares :success? do
@@ -174,6 +180,13 @@ module ConvenientService
174
180
  use Plugins::Result::RaisesOnNotCheckedResultStatus::Middleware
175
181
  end
176
182
 
183
+ middlewares :to_kwargs do
184
+ use Plugins::Common::NormalizesEnv::Middleware
185
+
186
+ use Plugins::Result::HasStep::ToKwargs::Middleware
187
+ use Plugins::Result::CanHaveParentResult::ToKwargs::Middleware
188
+ end
189
+
177
190
  class self::Internals
178
191
  include Core
179
192
 
@@ -192,10 +205,10 @@ module ConvenientService
192
205
  use Plugins::Step::HasInspect::Concern
193
206
  end
194
207
 
195
- middlewares :result do
208
+ middlewares :calculate_result do
196
209
  use Plugins::Common::NormalizesEnv::Middleware
197
210
 
198
- use Plugins::Common::CachesReturnValue::Middleware
211
+ use Plugins::Step::CanHaveParentResult::Middleware
199
212
  end
200
213
 
201
214
  class self::Internals
@@ -35,30 +35,7 @@ module ConvenientService
35
35
  # @return [Module]
36
36
  #
37
37
  def call
38
- get_methods_middlewares_callers || set_methods_middlewares_callers
39
- end
40
-
41
- private
42
-
43
- ##
44
- # @return [Module, nil]
45
- #
46
- def get_methods_middlewares_callers
47
- Utils::Module.get_own_const(klass, module_name)
48
- end
49
-
50
- ##
51
- # @return [Module]
52
- #
53
- def set_methods_middlewares_callers
54
- klass.const_set(module_name, ::Module.new)
55
- end
56
-
57
- ##
58
- # @return [Symbol]
59
- #
60
- def module_name
61
- @module_name ||= :MethodsMiddlewaresCallers
38
+ Utils::Module.fetch_own_const(klass, :MethodsMiddlewaresCallers) { ::Module.new }
62
39
  end
63
40
  end
64
41
  end