convenient_service 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (406) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/lib/convenient_service/common/plugins/ensures_negated_j_send_result/middleware.rb +22 -0
  4. data/lib/convenient_service/common/plugins/ensures_negated_j_send_result.rb +3 -0
  5. data/lib/convenient_service/common/plugins/has_around_callbacks/concern.rb +8 -1
  6. data/lib/convenient_service/common/plugins/has_around_callbacks/middleware.rb +28 -7
  7. data/lib/convenient_service/common/plugins/has_callbacks/concern.rb +19 -9
  8. data/lib/convenient_service/common/plugins/has_callbacks/entities/callback_collection.rb +49 -1
  9. data/lib/convenient_service/common/plugins/has_callbacks/middleware.rb +21 -3
  10. data/lib/convenient_service/common/plugins/has_callbacks.rb +0 -1
  11. data/lib/convenient_service/common/plugins/has_instance_proxy/entities/instance_proxy.rb +1 -1
  12. data/lib/convenient_service/common/plugins/has_internals/entities/internals/plugins/has_cache/concern.rb +12 -0
  13. data/lib/convenient_service/common/plugins.rb +1 -0
  14. data/lib/convenient_service/core/entities/config/exceptions.rb +2 -0
  15. data/lib/convenient_service/core/entities/config.rb +3 -0
  16. data/lib/convenient_service/dependencies.rb +11 -3
  17. data/lib/convenient_service/logger.rb +9 -1
  18. data/lib/convenient_service/rspec/matchers/classes/call_chain_next.rb +41 -0
  19. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/commands/generate_printable_method.rb +46 -0
  20. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/delegation.rb +89 -0
  21. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/inputs.rb +223 -0
  22. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/outputs.rb +38 -0
  23. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matcher_collection.rb +157 -0
  24. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/arguments/commands/apply_stub_to_track_delegations.rb +77 -0
  25. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/arguments/commands/generate_printable_arguments.rb +94 -0
  26. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/arguments.rb +89 -0
  27. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/base.rb +99 -0
  28. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/return_custom_value.rb +91 -0
  29. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/return_delegation_value.rb +129 -0
  30. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/with_any_arguments.rb +31 -0
  31. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/with_concrete_arguments.rb +31 -0
  32. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers/without_arguments.rb +31 -0
  33. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/sub_matchers.rb +11 -0
  34. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities.rb +5 -1
  35. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/exceptions.rb +65 -0
  36. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to.rb +163 -41
  37. data/lib/convenient_service/service/configs/minimal.rb +85 -33
  38. data/lib/convenient_service/service/configs/standard/v1.rb +42 -24
  39. data/lib/convenient_service/service/configs/standard.rb +60 -46
  40. data/lib/convenient_service/service/plugins/can_have_connected_steps/concern.rb +503 -0
  41. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/and.rb +133 -0
  42. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/base.rb +126 -0
  43. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/empty.rb +104 -0
  44. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/group.rb +118 -0
  45. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/not.rb +118 -0
  46. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/or.rb +145 -0
  47. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions/scalar.rb +133 -0
  48. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/expressions.rb +10 -0
  49. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities/step_collection.rb +217 -0
  50. data/lib/convenient_service/service/plugins/can_have_connected_steps/entities.rb +4 -0
  51. data/lib/convenient_service/service/plugins/can_have_connected_steps/exceptions.rb +95 -0
  52. data/lib/convenient_service/service/plugins/can_have_connected_steps/middleware.rb +30 -0
  53. data/lib/convenient_service/service/plugins/can_have_connected_steps.rb +6 -0
  54. data/lib/convenient_service/service/plugins/can_have_sequential_steps/concern.rb +76 -0
  55. data/lib/convenient_service/service/plugins/{can_have_steps → can_have_sequential_steps}/entities/step_collection.rb +54 -10
  56. data/lib/convenient_service/service/plugins/can_have_sequential_steps/entities.rb +3 -0
  57. data/lib/convenient_service/service/plugins/{can_have_steps → can_have_sequential_steps}/middleware.rb +7 -3
  58. data/lib/convenient_service/service/plugins/can_have_sequential_steps.rb +5 -0
  59. data/lib/convenient_service/service/plugins/can_have_steps/concern.rb +4 -57
  60. data/lib/convenient_service/service/plugins/can_have_steps/entities/method/commands/define_method_in_container.rb +45 -26
  61. data/lib/convenient_service/service/plugins/can_have_steps/entities/method/entities/callers/reassignment.rb +0 -2
  62. data/lib/convenient_service/service/plugins/can_have_steps/entities/method/exceptions.rb +4 -24
  63. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/concern/instance_methods.rb +155 -80
  64. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/exceptions.rb +19 -0
  65. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/{can_be_result_step → can_be_method_step}/can_be_executed/exceptions.rb +1 -1
  66. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_method_step/can_be_executed/middleware.rb +64 -4
  67. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_method_step/can_be_executed.rb +1 -0
  68. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_method_step/concern.rb +7 -0
  69. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_have_alternative_steps.rb +3 -0
  70. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_have_fallbacks/concern.rb +0 -46
  71. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_have_fallbacks/middleware.rb +26 -2
  72. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_have_parent_result/middleware.rb +13 -1
  73. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/{can_be_result_step → has_result}/concern.rb +8 -4
  74. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_result/middleware.rb +33 -0
  75. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_result.rb +4 -0
  76. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins.rb +2 -1
  77. data/lib/convenient_service/service/plugins/can_have_steps/entities.rb +0 -1
  78. data/lib/convenient_service/service/plugins/can_have_steps.rb +0 -1
  79. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_have_checked_status/concern.rb +2 -2
  80. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_have_checked_status.rb +0 -1
  81. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/concern/instance_methods.rb +135 -2
  82. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/concern/instance_methods.rb +45 -17
  83. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/can_be_checked/concern.rb +38 -0
  84. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/can_be_checked/middleware.rb +51 -0
  85. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/can_be_checked.rb +4 -0
  86. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins.rb +1 -0
  87. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/exceptions.rb +15 -0
  88. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_negated_result/concern.rb +72 -0
  89. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_negated_result.rb +3 -0
  90. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/raises_on_not_checked_result_status/middleware.rb +1 -1
  91. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins.rb +1 -0
  92. data/lib/convenient_service/service/plugins/has_j_send_result.rb +0 -1
  93. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_dry_validation/middleware.rb +4 -0
  94. data/lib/convenient_service/service/plugins/has_negated_j_send_result/concern.rb +23 -0
  95. data/lib/convenient_service/service/plugins/has_negated_j_send_result.rb +3 -0
  96. data/lib/convenient_service/service/plugins/has_negated_result/concern.rb +33 -0
  97. data/lib/convenient_service/service/plugins/{has_j_send_result → has_negated_result}/exceptions.rb +3 -3
  98. data/lib/convenient_service/service/plugins/has_negated_result.rb +4 -0
  99. data/lib/convenient_service/service/plugins/{wraps_result_in_db_transaction → wraps_result_in_d_b_transaction}/middleware.rb +1 -1
  100. data/lib/convenient_service/service/plugins.rb +7 -2
  101. data/lib/convenient_service/specification.rb +28 -0
  102. data/lib/convenient_service/support/backtrace_cleaner.rb +6 -1
  103. data/lib/convenient_service/support/cache/entities/caches/base.rb +3 -0
  104. data/lib/convenient_service/support/method_parameters.rb +121 -0
  105. data/lib/convenient_service/support/never_reach_here.rb +21 -0
  106. data/lib/convenient_service/support/unique_value.rb +3 -0
  107. data/lib/convenient_service/support/value.rb +78 -0
  108. data/lib/convenient_service/support.rb +3 -0
  109. data/lib/convenient_service/utils/array/find_last.rb +8 -3
  110. data/lib/convenient_service/utils/object/instance_variable_delete.rb +1 -1
  111. data/lib/convenient_service/version.rb +1 -1
  112. data/lib/convenient_service.rb +23 -0
  113. metadata +109 -308
  114. data/.dev/.tmuxinator.yml +0 -22
  115. data/.dockerignore +0 -1
  116. data/.gem_release.yml +0 -11
  117. data/.github/contributing.md +0 -15
  118. data/.github/issue_template.md +0 -35
  119. data/.github/pull_request_template.md +0 -31
  120. data/.github/workflows/cd.yml +0 -68
  121. data/.github/workflows/ci.yml +0 -212
  122. data/.gitignore +0 -66
  123. data/.inch.yml +0 -7
  124. data/.rspec +0 -3
  125. data/.rubocop.yml +0 -45
  126. data/.rubocop_rspec.yml +0 -58
  127. data/.ruby-version +0 -1
  128. data/.tool-versions +0 -1
  129. data/.vscode/CacheItsValue.code-snippets +0 -15
  130. data/.vscode/DelegateTo.code-snippets +0 -15
  131. data/.vscode/cache_its_value.code-snippets +0 -17
  132. data/.vscode/comparison.code-snippets +0 -41
  133. data/.vscode/delegate_to.code-snippets +0 -20
  134. data/.yardopts +0 -16
  135. data/Appraisals +0 -146
  136. data/CHANGELOG.md +0 -504
  137. data/Gemfile +0 -17
  138. data/ROADMAP.md +0 -92
  139. data/Rakefile +0 -54
  140. data/Taskfile.yml +0 -679
  141. data/benchmark/commit_config/ips.rb +0 -18
  142. data/benchmark/commit_config/profile.rb +0 -30
  143. data/benchmark/empty_service/ips.rb +0 -123
  144. data/benchmark/has_committed_config/ips.rb +0 -78
  145. data/benchmark/has_committed_config/profile.rb +0 -30
  146. data/convenient_service.gemspec +0 -233
  147. data/coverage/.gitkeep +0 -0
  148. data/docker/2.7/Dockerfile +0 -73
  149. data/docker/3.0/Dockerfile +0 -73
  150. data/docker/3.1/Dockerfile +0 -73
  151. data/docker/3.2/Dockerfile +0 -73
  152. data/docker/jruby-9.4/Dockerfile +0 -88
  153. data/docker/truffleruby-22.3/Dockerfile +0 -91
  154. data/docs/.gitkeep +0 -0
  155. data/docs/api/.gitkeep +0 -0
  156. data/env.rb +0 -23
  157. data/gemfiles/.gitkeep +0 -0
  158. data/lib/convenient_service/common/plugins/has_callbacks/container.rb +0 -17
  159. data/lib/convenient_service/examples/dry/gemfile/dry_service/config.rb +0 -45
  160. data/lib/convenient_service/examples/dry/gemfile/dry_service.rb +0 -3
  161. data/lib/convenient_service/examples/dry/gemfile/services/assert_file_exists.rb +0 -29
  162. data/lib/convenient_service/examples/dry/gemfile/services/assert_file_not_empty.rb +0 -29
  163. data/lib/convenient_service/examples/dry/gemfile/services/assert_node_available.rb +0 -26
  164. data/lib/convenient_service/examples/dry/gemfile/services/assert_npm_package_available.rb +0 -39
  165. data/lib/convenient_service/examples/dry/gemfile/services/assert_valid_ruby_syntax.rb +0 -41
  166. data/lib/convenient_service/examples/dry/gemfile/services/format.rb +0 -37
  167. data/lib/convenient_service/examples/dry/gemfile/services/format_body.rb +0 -93
  168. data/lib/convenient_service/examples/dry/gemfile/services/format_gems_with_envs.rb +0 -96
  169. data/lib/convenient_service/examples/dry/gemfile/services/format_gems_without_envs.rb +0 -84
  170. data/lib/convenient_service/examples/dry/gemfile/services/format_header.rb +0 -74
  171. data/lib/convenient_service/examples/dry/gemfile/services/parse_content.rb +0 -93
  172. data/lib/convenient_service/examples/dry/gemfile/services/print_shell_command.rb +0 -44
  173. data/lib/convenient_service/examples/dry/gemfile/services/read_file_content.rb +0 -31
  174. data/lib/convenient_service/examples/dry/gemfile/services/run_shell_command.rb +0 -45
  175. data/lib/convenient_service/examples/dry/gemfile/services/strip_comments.rb +0 -109
  176. data/lib/convenient_service/examples/dry/gemfile/services.rb +0 -18
  177. data/lib/convenient_service/examples/dry/gemfile.rb +0 -27
  178. data/lib/convenient_service/examples/dry/v1/gemfile/dry_service/config.rb +0 -47
  179. data/lib/convenient_service/examples/dry/v1/gemfile/dry_service.rb +0 -3
  180. data/lib/convenient_service/examples/dry/v1/gemfile/services/assert_file_exists.rb +0 -31
  181. data/lib/convenient_service/examples/dry/v1/gemfile/services/assert_file_not_empty.rb +0 -31
  182. data/lib/convenient_service/examples/dry/v1/gemfile/services/assert_node_available.rb +0 -28
  183. data/lib/convenient_service/examples/dry/v1/gemfile/services/assert_npm_package_available.rb +0 -41
  184. data/lib/convenient_service/examples/dry/v1/gemfile/services/assert_valid_ruby_syntax.rb +0 -43
  185. data/lib/convenient_service/examples/dry/v1/gemfile/services/format.rb +0 -39
  186. data/lib/convenient_service/examples/dry/v1/gemfile/services/format_body.rb +0 -95
  187. data/lib/convenient_service/examples/dry/v1/gemfile/services/format_gems_with_envs.rb +0 -98
  188. data/lib/convenient_service/examples/dry/v1/gemfile/services/format_gems_without_envs.rb +0 -86
  189. data/lib/convenient_service/examples/dry/v1/gemfile/services/format_header.rb +0 -76
  190. data/lib/convenient_service/examples/dry/v1/gemfile/services/parse_content.rb +0 -95
  191. data/lib/convenient_service/examples/dry/v1/gemfile/services/read_file_content.rb +0 -33
  192. data/lib/convenient_service/examples/dry/v1/gemfile/services/run_shell_command.rb +0 -43
  193. data/lib/convenient_service/examples/dry/v1/gemfile/services/strip_comments.rb +0 -111
  194. data/lib/convenient_service/examples/dry/v1/gemfile/services.rb +0 -17
  195. data/lib/convenient_service/examples/dry/v1/gemfile.rb +0 -29
  196. data/lib/convenient_service/examples/rails/gemfile/rails_service/config.rb +0 -56
  197. data/lib/convenient_service/examples/rails/gemfile/rails_service.rb +0 -3
  198. data/lib/convenient_service/examples/rails/gemfile/services/assert_file_exists.rb +0 -25
  199. data/lib/convenient_service/examples/rails/gemfile/services/assert_file_not_empty.rb +0 -25
  200. data/lib/convenient_service/examples/rails/gemfile/services/assert_node_available.rb +0 -26
  201. data/lib/convenient_service/examples/rails/gemfile/services/assert_npm_package_available.rb +0 -35
  202. data/lib/convenient_service/examples/rails/gemfile/services/assert_valid_ruby_syntax.rb +0 -35
  203. data/lib/convenient_service/examples/rails/gemfile/services/format.rb +0 -66
  204. data/lib/convenient_service/examples/rails/gemfile/services/format_body.rb +0 -79
  205. data/lib/convenient_service/examples/rails/gemfile/services/format_gems_with_envs.rb +0 -82
  206. data/lib/convenient_service/examples/rails/gemfile/services/format_gems_without_envs.rb +0 -70
  207. data/lib/convenient_service/examples/rails/gemfile/services/format_header.rb +0 -68
  208. data/lib/convenient_service/examples/rails/gemfile/services/merge_sections.rb +0 -25
  209. data/lib/convenient_service/examples/rails/gemfile/services/parse_content.rb +0 -89
  210. data/lib/convenient_service/examples/rails/gemfile/services/print_shell_command.rb +0 -40
  211. data/lib/convenient_service/examples/rails/gemfile/services/read_file_content.rb +0 -27
  212. data/lib/convenient_service/examples/rails/gemfile/services/replace_file_content.rb +0 -37
  213. data/lib/convenient_service/examples/rails/gemfile/services/run_shell_command.rb +0 -40
  214. data/lib/convenient_service/examples/rails/gemfile/services/strip_comments.rb +0 -107
  215. data/lib/convenient_service/examples/rails/gemfile/services.rb +0 -21
  216. data/lib/convenient_service/examples/rails/gemfile.rb +0 -27
  217. data/lib/convenient_service/examples/rails/v1/gemfile/rails_service/config.rb +0 -58
  218. data/lib/convenient_service/examples/rails/v1/gemfile/rails_service.rb +0 -3
  219. data/lib/convenient_service/examples/rails/v1/gemfile/services/assert_file_exists.rb +0 -27
  220. data/lib/convenient_service/examples/rails/v1/gemfile/services/assert_file_not_empty.rb +0 -27
  221. data/lib/convenient_service/examples/rails/v1/gemfile/services/assert_node_available.rb +0 -28
  222. data/lib/convenient_service/examples/rails/v1/gemfile/services/assert_npm_package_available.rb +0 -37
  223. data/lib/convenient_service/examples/rails/v1/gemfile/services/assert_valid_ruby_syntax.rb +0 -37
  224. data/lib/convenient_service/examples/rails/v1/gemfile/services/format.rb +0 -68
  225. data/lib/convenient_service/examples/rails/v1/gemfile/services/format_body.rb +0 -81
  226. data/lib/convenient_service/examples/rails/v1/gemfile/services/format_gems_with_envs.rb +0 -84
  227. data/lib/convenient_service/examples/rails/v1/gemfile/services/format_gems_without_envs.rb +0 -72
  228. data/lib/convenient_service/examples/rails/v1/gemfile/services/format_header.rb +0 -70
  229. data/lib/convenient_service/examples/rails/v1/gemfile/services/merge_sections.rb +0 -27
  230. data/lib/convenient_service/examples/rails/v1/gemfile/services/parse_content.rb +0 -91
  231. data/lib/convenient_service/examples/rails/v1/gemfile/services/read_file_content.rb +0 -29
  232. data/lib/convenient_service/examples/rails/v1/gemfile/services/replace_file_content.rb +0 -39
  233. data/lib/convenient_service/examples/rails/v1/gemfile/services/run_shell_command.rb +0 -38
  234. data/lib/convenient_service/examples/rails/v1/gemfile/services/strip_comments.rb +0 -109
  235. data/lib/convenient_service/examples/rails/v1/gemfile/services.rb +0 -20
  236. data/lib/convenient_service/examples/rails/v1/gemfile.rb +0 -29
  237. data/lib/convenient_service/examples/standard/cowsay/services/build_cloud.rb +0 -42
  238. data/lib/convenient_service/examples/standard/cowsay/services/build_cow.rb +0 -38
  239. data/lib/convenient_service/examples/standard/cowsay/services/print.rb +0 -32
  240. data/lib/convenient_service/examples/standard/cowsay/services.rb +0 -5
  241. data/lib/convenient_service/examples/standard/cowsay.rb +0 -26
  242. data/lib/convenient_service/examples/standard/date_time/services/safe_parse.rb +0 -31
  243. data/lib/convenient_service/examples/standard/date_time/services.rb +0 -3
  244. data/lib/convenient_service/examples/standard/date_time.rb +0 -25
  245. data/lib/convenient_service/examples/standard/factorial/services/calculate.rb +0 -55
  246. data/lib/convenient_service/examples/standard/factorial/services.rb +0 -3
  247. data/lib/convenient_service/examples/standard/factorial/utils/timeout/with_timeout.rb +0 -50
  248. data/lib/convenient_service/examples/standard/factorial/utils/timeout.rb +0 -21
  249. data/lib/convenient_service/examples/standard/factorial/utils.rb +0 -3
  250. data/lib/convenient_service/examples/standard/factorial.rb +0 -26
  251. data/lib/convenient_service/examples/standard/gemfile/services/assert_file_exists.rb +0 -30
  252. data/lib/convenient_service/examples/standard/gemfile/services/assert_file_not_empty.rb +0 -30
  253. data/lib/convenient_service/examples/standard/gemfile/services/assert_node_available.rb +0 -26
  254. data/lib/convenient_service/examples/standard/gemfile/services/assert_npm_package_available.rb +0 -48
  255. data/lib/convenient_service/examples/standard/gemfile/services/assert_valid_ruby_syntax.rb +0 -39
  256. data/lib/convenient_service/examples/standard/gemfile/services/format.rb +0 -80
  257. data/lib/convenient_service/examples/standard/gemfile/services/format_body.rb +0 -83
  258. data/lib/convenient_service/examples/standard/gemfile/services/format_gems_with_envs.rb +0 -86
  259. data/lib/convenient_service/examples/standard/gemfile/services/format_gems_without_envs.rb +0 -74
  260. data/lib/convenient_service/examples/standard/gemfile/services/format_header.rb +0 -66
  261. data/lib/convenient_service/examples/standard/gemfile/services/merge_sections.rb +0 -52
  262. data/lib/convenient_service/examples/standard/gemfile/services/parse_content.rb +0 -101
  263. data/lib/convenient_service/examples/standard/gemfile/services/print_shell_command.rb +0 -45
  264. data/lib/convenient_service/examples/standard/gemfile/services/read_file_content.rb +0 -39
  265. data/lib/convenient_service/examples/standard/gemfile/services/replace_file_content.rb +0 -48
  266. data/lib/convenient_service/examples/standard/gemfile/services/run_shell_command.rb +0 -54
  267. data/lib/convenient_service/examples/standard/gemfile/services/strip_comments.rb +0 -111
  268. data/lib/convenient_service/examples/standard/gemfile/services.rb +0 -21
  269. data/lib/convenient_service/examples/standard/gemfile.rb +0 -26
  270. data/lib/convenient_service/examples/standard/request_params/constants.rb +0 -15
  271. data/lib/convenient_service/examples/standard/request_params/entities/description.rb +0 -40
  272. data/lib/convenient_service/examples/standard/request_params/entities/format.rb +0 -40
  273. data/lib/convenient_service/examples/standard/request_params/entities/id.rb +0 -47
  274. data/lib/convenient_service/examples/standard/request_params/entities/logger.rb +0 -21
  275. data/lib/convenient_service/examples/standard/request_params/entities/request.rb +0 -23
  276. data/lib/convenient_service/examples/standard/request_params/entities/source.rb +0 -40
  277. data/lib/convenient_service/examples/standard/request_params/entities/tag.rb +0 -40
  278. data/lib/convenient_service/examples/standard/request_params/entities/title.rb +0 -40
  279. data/lib/convenient_service/examples/standard/request_params/entities.rb +0 -11
  280. data/lib/convenient_service/examples/standard/request_params/services/apply_default_param_values.rb +0 -26
  281. data/lib/convenient_service/examples/standard/request_params/services/cast_params.rb +0 -38
  282. data/lib/convenient_service/examples/standard/request_params/services/extract_params_from_body.rb +0 -70
  283. data/lib/convenient_service/examples/standard/request_params/services/extract_params_from_path.rb +0 -62
  284. data/lib/convenient_service/examples/standard/request_params/services/filter_out_unpermitted_params.rb +0 -26
  285. data/lib/convenient_service/examples/standard/request_params/services/log_request_params.rb +0 -54
  286. data/lib/convenient_service/examples/standard/request_params/services/merge_params.rb +0 -26
  287. data/lib/convenient_service/examples/standard/request_params/services/prepare.rb +0 -65
  288. data/lib/convenient_service/examples/standard/request_params/services/validate_casted_params.rb +0 -94
  289. data/lib/convenient_service/examples/standard/request_params/services/validate_uncasted_params.rb +0 -72
  290. data/lib/convenient_service/examples/standard/request_params/services.rb +0 -13
  291. data/lib/convenient_service/examples/standard/request_params/utils/array/wrap.rb +0 -46
  292. data/lib/convenient_service/examples/standard/request_params/utils/array.rb +0 -21
  293. data/lib/convenient_service/examples/standard/request_params/utils/http/request/parse_body.rb +0 -42
  294. data/lib/convenient_service/examples/standard/request_params/utils/http/request/parse_path.rb +0 -40
  295. data/lib/convenient_service/examples/standard/request_params/utils/http/request.rb +0 -28
  296. data/lib/convenient_service/examples/standard/request_params/utils/http.rb +0 -3
  297. data/lib/convenient_service/examples/standard/request_params/utils/integer/safe_parse.rb +0 -31
  298. data/lib/convenient_service/examples/standard/request_params/utils/integer.rb +0 -25
  299. data/lib/convenient_service/examples/standard/request_params/utils/json/safe_parse.rb +0 -40
  300. data/lib/convenient_service/examples/standard/request_params/utils/json.rb +0 -21
  301. data/lib/convenient_service/examples/standard/request_params/utils/object/blank.rb +0 -34
  302. data/lib/convenient_service/examples/standard/request_params/utils/object/present.rb +0 -31
  303. data/lib/convenient_service/examples/standard/request_params/utils/object.rb +0 -26
  304. data/lib/convenient_service/examples/standard/request_params/utils/url/valid.rb +0 -47
  305. data/lib/convenient_service/examples/standard/request_params/utils/url.rb +0 -21
  306. data/lib/convenient_service/examples/standard/request_params/utils.rb +0 -8
  307. data/lib/convenient_service/examples/standard/request_params.rb +0 -49
  308. data/lib/convenient_service/examples/standard/v1/cowsay/services/build_cloud.rb +0 -44
  309. data/lib/convenient_service/examples/standard/v1/cowsay/services/build_cow.rb +0 -40
  310. data/lib/convenient_service/examples/standard/v1/cowsay/services/print.rb +0 -34
  311. data/lib/convenient_service/examples/standard/v1/cowsay/services.rb +0 -5
  312. data/lib/convenient_service/examples/standard/v1/cowsay.rb +0 -26
  313. data/lib/convenient_service/examples/standard/v1/date_time/services/safe_parse.rb +0 -33
  314. data/lib/convenient_service/examples/standard/v1/date_time/services.rb +0 -3
  315. data/lib/convenient_service/examples/standard/v1/date_time.rb +0 -25
  316. data/lib/convenient_service/examples/standard/v1/factorial/services/calculate.rb +0 -51
  317. data/lib/convenient_service/examples/standard/v1/factorial/services.rb +0 -3
  318. data/lib/convenient_service/examples/standard/v1/factorial/utils/timeout/with_timeout.rb +0 -52
  319. data/lib/convenient_service/examples/standard/v1/factorial/utils/timeout.rb +0 -23
  320. data/lib/convenient_service/examples/standard/v1/factorial/utils.rb +0 -3
  321. data/lib/convenient_service/examples/standard/v1/factorial.rb +0 -26
  322. data/lib/convenient_service/examples/standard/v1/gemfile/services/assert_file_exists.rb +0 -32
  323. data/lib/convenient_service/examples/standard/v1/gemfile/services/assert_file_not_empty.rb +0 -32
  324. data/lib/convenient_service/examples/standard/v1/gemfile/services/assert_node_available.rb +0 -28
  325. data/lib/convenient_service/examples/standard/v1/gemfile/services/assert_npm_package_available.rb +0 -50
  326. data/lib/convenient_service/examples/standard/v1/gemfile/services/assert_valid_ruby_syntax.rb +0 -41
  327. data/lib/convenient_service/examples/standard/v1/gemfile/services/format.rb +0 -82
  328. data/lib/convenient_service/examples/standard/v1/gemfile/services/format_body.rb +0 -85
  329. data/lib/convenient_service/examples/standard/v1/gemfile/services/format_gems_with_envs.rb +0 -88
  330. data/lib/convenient_service/examples/standard/v1/gemfile/services/format_gems_without_envs.rb +0 -76
  331. data/lib/convenient_service/examples/standard/v1/gemfile/services/format_header.rb +0 -68
  332. data/lib/convenient_service/examples/standard/v1/gemfile/services/merge_sections.rb +0 -54
  333. data/lib/convenient_service/examples/standard/v1/gemfile/services/parse_content.rb +0 -103
  334. data/lib/convenient_service/examples/standard/v1/gemfile/services/read_file_content.rb +0 -41
  335. data/lib/convenient_service/examples/standard/v1/gemfile/services/replace_file_content.rb +0 -50
  336. data/lib/convenient_service/examples/standard/v1/gemfile/services/run_shell_command.rb +0 -52
  337. data/lib/convenient_service/examples/standard/v1/gemfile/services/strip_comments.rb +0 -113
  338. data/lib/convenient_service/examples/standard/v1/gemfile/services.rb +0 -20
  339. data/lib/convenient_service/examples/standard/v1/gemfile.rb +0 -26
  340. data/lib/convenient_service/examples/standard/v1/request_params/constants.rb +0 -17
  341. data/lib/convenient_service/examples/standard/v1/request_params/entities/description.rb +0 -42
  342. data/lib/convenient_service/examples/standard/v1/request_params/entities/format.rb +0 -42
  343. data/lib/convenient_service/examples/standard/v1/request_params/entities/id.rb +0 -49
  344. data/lib/convenient_service/examples/standard/v1/request_params/entities/logger.rb +0 -23
  345. data/lib/convenient_service/examples/standard/v1/request_params/entities/request.rb +0 -25
  346. data/lib/convenient_service/examples/standard/v1/request_params/entities/source.rb +0 -42
  347. data/lib/convenient_service/examples/standard/v1/request_params/entities/tag.rb +0 -42
  348. data/lib/convenient_service/examples/standard/v1/request_params/entities/title.rb +0 -42
  349. data/lib/convenient_service/examples/standard/v1/request_params/entities.rb +0 -11
  350. data/lib/convenient_service/examples/standard/v1/request_params/services/apply_default_param_values.rb +0 -28
  351. data/lib/convenient_service/examples/standard/v1/request_params/services/cast_params.rb +0 -40
  352. data/lib/convenient_service/examples/standard/v1/request_params/services/extract_params_from_body.rb +0 -72
  353. data/lib/convenient_service/examples/standard/v1/request_params/services/extract_params_from_path.rb +0 -64
  354. data/lib/convenient_service/examples/standard/v1/request_params/services/filter_out_unpermitted_params.rb +0 -28
  355. data/lib/convenient_service/examples/standard/v1/request_params/services/log_request_params.rb +0 -56
  356. data/lib/convenient_service/examples/standard/v1/request_params/services/merge_params.rb +0 -28
  357. data/lib/convenient_service/examples/standard/v1/request_params/services/prepare.rb +0 -67
  358. data/lib/convenient_service/examples/standard/v1/request_params/services/validate_casted_params.rb +0 -96
  359. data/lib/convenient_service/examples/standard/v1/request_params/services/validate_uncasted_params.rb +0 -74
  360. data/lib/convenient_service/examples/standard/v1/request_params/services.rb +0 -13
  361. data/lib/convenient_service/examples/standard/v1/request_params/utils/array/wrap.rb +0 -48
  362. data/lib/convenient_service/examples/standard/v1/request_params/utils/array.rb +0 -23
  363. data/lib/convenient_service/examples/standard/v1/request_params/utils/http/request/parse_body.rb +0 -44
  364. data/lib/convenient_service/examples/standard/v1/request_params/utils/http/request/parse_path.rb +0 -42
  365. data/lib/convenient_service/examples/standard/v1/request_params/utils/http/request.rb +0 -30
  366. data/lib/convenient_service/examples/standard/v1/request_params/utils/http.rb +0 -3
  367. data/lib/convenient_service/examples/standard/v1/request_params/utils/integer/safe_parse.rb +0 -33
  368. data/lib/convenient_service/examples/standard/v1/request_params/utils/integer.rb +0 -27
  369. data/lib/convenient_service/examples/standard/v1/request_params/utils/json/safe_parse.rb +0 -42
  370. data/lib/convenient_service/examples/standard/v1/request_params/utils/json.rb +0 -23
  371. data/lib/convenient_service/examples/standard/v1/request_params/utils/object/blank.rb +0 -36
  372. data/lib/convenient_service/examples/standard/v1/request_params/utils/object/present.rb +0 -33
  373. data/lib/convenient_service/examples/standard/v1/request_params/utils/object.rb +0 -28
  374. data/lib/convenient_service/examples/standard/v1/request_params/utils/url/valid.rb +0 -49
  375. data/lib/convenient_service/examples/standard/v1/request_params/utils/url.rb +0 -23
  376. data/lib/convenient_service/examples/standard/v1/request_params/utils.rb +0 -8
  377. data/lib/convenient_service/examples/standard/v1/request_params.rb +0 -49
  378. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/commands/generate_printable_method.rb +0 -50
  379. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands/apply_stub_to_track_delegations.rb +0 -82
  380. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments/commands/generate_printable_arguments.rb +0 -100
  381. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/arguments.rb +0 -95
  382. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/base.rb +0 -87
  383. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/return_its_value.rb +0 -132
  384. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_any_arguments.rb +0 -37
  385. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/with_concrete_arguments.rb +0 -37
  386. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/sub_matchers/without_arguments.rb +0 -37
  387. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/values/base.rb +0 -41
  388. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/values/with_calling_original.rb +0 -30
  389. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings/values/without_calling_original.rb +0 -30
  390. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings.rb +0 -12
  391. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings_collection/exceptions.rb +0 -57
  392. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/chainings_collection.rb +0 -171
  393. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities/delegation.rb +0 -79
  394. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher/entities.rb +0 -5
  395. data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/matcher.rb +0 -276
  396. data/lib/convenient_service/service/plugins/can_have_steps/entities/method/entities/callers/reassignment/commands/define_method_in_container.rb +0 -74
  397. data/lib/convenient_service/service/plugins/can_have_steps/entities/method/entities/callers/reassignment/commands.rb +0 -3
  398. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_result_step/can_be_executed/middleware.rb +0 -72
  399. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_result_step/can_be_executed.rb +0 -4
  400. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_result_step.rb +0 -5
  401. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_have_checked_status/middleware.rb +0 -43
  402. data/logo.png +0 -0
  403. data/minitest.rb +0 -30
  404. data/yard/yard-convenient_service_concern.rb +0 -45
  405. /data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/{entities/matcher/commands.rb → commands.rb} +0 -0
  406. /data/lib/convenient_service/rspec/primitive_matchers/classes/delegate_to/entities/{matcher/entities/chainings/sub_matchers → sub_matchers}/arguments/commands.rb +0 -0
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/setup"
4
- require "convenient_service"
5
- require "stackprof"
6
-
7
- class Service
8
- include ConvenientService::Standard::Config
9
- end
10
-
11
- Service.commit_config!
12
-
13
- ##
14
- # Quotes:
15
- # - stackprof will tell you what is impeding your progress.
16
- # - The assumption is the more times something shows up in the sample the more time it is taking.
17
- #
18
- # Docs:
19
- # - https://www.johnnunemaker.com/how-to-benchmark-your-ruby-gem
20
- # - https://github.com/tmm1/stackprof
21
- #
22
- profile = StackProf.run(mode: :wall, interval: 1_000) do
23
- 2_000_000.times { Service.commit_config! }
24
- end
25
-
26
- result = StackProf::Report.new(profile)
27
- puts
28
- result.print_text
29
- puts "\n\n\n"
30
- result.print_method(/commit_config!/)
@@ -1,123 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/setup"
4
- require "service_actor"
5
- require "interactor"
6
- require "trailblazer/operation"
7
- require "active_interaction"
8
- require "light-service"
9
- require "mutations"
10
- require "convenient_service"
11
- require "benchmark/ips"
12
-
13
- ##
14
- # Imaginary no gem service. Used as unattainable standard.
15
- #
16
- class NoGemService
17
- Result = Struct.new(:success?, :data)
18
-
19
- def self.result(**kwargs)
20
- new(**kwargs).result
21
- end
22
-
23
- def result
24
- Result.new
25
- end
26
-
27
- private
28
-
29
- def success(**kwargs)
30
- Result.new(success?: true, data: kwargs)
31
- end
32
- end
33
-
34
- ##
35
- # ServiceActor - Composable Ruby service objects.
36
- # - https://github.com/sunny/actor
37
- #
38
- class ActorService < Actor
39
- def call
40
- end
41
- end
42
-
43
- ##
44
- # Interactor - Interactor provides a common interface for performing complex user interactions.
45
- # - https://github.com/collectiveidea/interactor
46
- #
47
- class InteractorService
48
- include Interactor
49
-
50
- def call
51
- end
52
- end
53
-
54
- ##
55
- # Trailblazer-operation - Trailblazer's Operation implementation.
56
- # - https://trailblazer.to/2.1/docs/operation.html#operation-overview
57
- # - https://github.com/trailblazer/trailblazer-operation
58
- #
59
- class TrailblazerService < Trailblazer::Operation
60
- step :result
61
-
62
- def result(options, *)
63
- end
64
- end
65
-
66
- ##
67
- # ActiveInteraction - Manage application specific business logic.
68
- # - https://github.com/AaronLasseigne/active_interaction
69
- #
70
- class ActiveInteractionService < ActiveInteraction::Base
71
- def execute
72
- end
73
- end
74
-
75
- ##
76
- # LightService - Series of Actions with an emphasis on simplicity.
77
- # - https://github.com/adomokos/light-service
78
- #
79
- class LightServiceService
80
- extend ::LightService::Action
81
-
82
- executed do |context|
83
- end
84
- end
85
-
86
- ##
87
- # Mutations - Compose your business logic into commands that sanitize and validate input.
88
- # - https://github.com/cypriss/mutations
89
- #
90
- class MutationsService < Mutations::Command
91
- def execute
92
- end
93
- end
94
-
95
- ##
96
- # Convenient Service - Service object pattern implementation in Ruby.
97
- # - https://github.com/marian13/convenient_service
98
- #
99
- class ConvenientServiceService
100
- include ConvenientService::Standard::Config
101
-
102
- def result
103
- success
104
- end
105
- end
106
-
107
- ConvenientServiceService.commit_config! # Warmup.
108
-
109
- Benchmark.ips do |x|
110
- x.time = 10 # Seconds.
111
- x.warmup = 0 # No additional warmup required. It is already performed outside.
112
-
113
- x.report("Empty service - Without any gem") { NoGemService.result }
114
- x.report("Empty service - With Actor") { ActorService.call }
115
- x.report("Empty service - With Interactor") { InteractorService.call }
116
- x.report("Empty service - With Trailblazer Operation") { TrailblazerService.call }
117
- x.report("Empty service - With ActiveInteraction") { ActiveInteractionService.run! }
118
- x.report("Empty service - With LightService") { LightServiceService.execute }
119
- x.report("Empty service - With Mutations") { MutationsService.run }
120
- x.report("Empty service - With Convenient Service") { ConvenientServiceService.result }
121
-
122
- x.compare!(order: :baseline)
123
- end
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/setup"
4
- require "convenient_service"
5
- require "benchmark/ips"
6
-
7
- ##
8
- # Introduction.
9
- #
10
- # This benchmark is checking `.has_committed_config?`. As a result, keep in mind that everything in this file should be reviewed in its context.
11
- # For example, there is a class called `CurrentImplementation`. Actually, it is the `ImplementationWithoutMemoizationOfHasCommittedConfigInService`.
12
- # Or `WithMemoizationInService` - means `ImplementationWithMemoizationOfHasCommittedConfigInService`, etc.
13
- #
14
- # For the current implementation source, see `ConvenientService::Core::Concern::ClassMethods#has_committed_config?`.
15
- ##
16
-
17
- class CurrentImplementation
18
- include ConvenientService::Standard::Config
19
- end
20
-
21
- class WithMemoizationInService
22
- include ConvenientService::Standard::Config
23
-
24
- class << self
25
- def has_committed_config?
26
- @__convenient_service_has_committed_config__ ||= super
27
- end
28
- end
29
- end
30
-
31
- ##
32
- # Warmup.
33
- #
34
- implementations = [CurrentImplementation, WithMemoizationInService]
35
-
36
- implementations.each(&:commit_config!)
37
-
38
- ##
39
- # Benchmarking of iterations per second.
40
- #
41
- Benchmark.ips do |x|
42
- x.time = 5 # Seconds.
43
- x.warmup = 0 # No additional warmup required. It is already performed outside.
44
-
45
- x.report("`.has_committed_config?` - No memoization in service") { CurrentImplementation.has_committed_config? }
46
- x.report("`.has_committed_config?` - Memoization in service") { WithMemoizationInService.has_committed_config? }
47
-
48
- x.compare!(order: :baseline)
49
- end
50
-
51
- ##
52
- # Example result.
53
- #
54
- # Calculating -------------------------------------
55
- # `.has_committed_config?` - No memoization in service
56
- # 131.142k (± 8.9%) i/s - 220.039k in 1.777241s
57
- # `.has_committed_config?` - Memoization in service
58
- # 131.319k (±10.5%) i/s - 216.215k in 1.763880s
59
-
60
- # Comparison:
61
- # `.has_committed_config?` - No memoization in service: 131142.1 i/s
62
- # `.has_committed_config?` - Memoization in service: 131319.1 i/s - same-ish: difference falls within error
63
- ##
64
-
65
- ##
66
- # Summary.
67
- #
68
- # It is one of the Convenient Service design goals to NOT pollute the end-user public interface with extra private methods, instance variables, etc.
69
- # Since memoization does NOT bring too big performance improvement, no extra instance variables are introduced.
70
- ##
71
-
72
- ##
73
- # More info.
74
- # - https://johnnunemaker.com/how-to-benchmark-your-ruby-gem
75
- # - https://github.com/evanphx/benchmark-ips
76
- # - https://rubydoc.info/gems/benchmark-ips/Benchmark/Compare
77
- # - https://en.wikipedia.org/wiki/Standard_deviation
78
- ##
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/setup"
4
- require "convenient_service"
5
- require "stackprof"
6
-
7
- class Service
8
- include ConvenientService::Standard::Config
9
- end
10
-
11
- Service.commit_config!
12
-
13
- ##
14
- # Quotes:
15
- # - stackprof will tell you what is impeding your progress.
16
- # - The assumption is the more times something shows up in the sample the more time it is taking.
17
- #
18
- # Docs:
19
- # - https://www.johnnunemaker.com/how-to-benchmark-your-ruby-gem
20
- # - https://github.com/tmm1/stackprof
21
- #
22
- profile = StackProf.run(mode: :wall, interval: 1_000) do
23
- 2_000_000.times { Service.has_committed_config? }
24
- end
25
-
26
- result = StackProf::Report.new(profile)
27
- puts
28
- result.print_text
29
- puts "\n\n\n"
30
- result.print_method(/has_committed_config?/)
@@ -1,233 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/convenient_service/specification"
4
- require_relative "lib/convenient_service/version"
5
-
6
- ##
7
- # NOTE:
8
- # - Use `ConvenientService::Support::Ruby.jruby?` directly only in the files that do not require to load all dependencies.
9
- # - Prefer `ConvenientService::Dependencies.ruby.jruby?` for the rest of the files.
10
- #
11
- require_relative "lib/convenient_service/support/ruby"
12
-
13
- Gem::Specification.new do |spec|
14
- spec.name = ConvenientService::Specification::NAME
15
- spec.authors = ConvenientService::Specification::AUTHORS
16
- spec.email = ConvenientService::Specification::EMAIL
17
- spec.homepage = ConvenientService::Specification::HOMEPAGE
18
- spec.summary = ConvenientService::Specification::SUMMARY
19
- spec.description = ConvenientService::Specification::DESCRIPTION
20
-
21
- spec.version = ConvenientService::VERSION
22
-
23
- spec.license = "MIT"
24
-
25
- spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
26
-
27
- spec.metadata["homepage_uri"] = spec.homepage
28
- spec.metadata["source_code_uri"] = spec.homepage
29
- spec.metadata["changelog_uri"] = "#{spec.homepage}/CHANGELOG.md"
30
-
31
- # Specify which files should be added to the gem when it is released.
32
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
33
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
34
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
35
- end
36
-
37
- spec.require_paths = ["lib"]
38
-
39
- ##
40
- # Used to run specs with multiple versions of gems.
41
- # - https://github.com/thoughtbot/appraisal
42
- #
43
- spec.add_development_dependency "appraisal", "~> 2.5.0"
44
-
45
- spec.add_development_dependency "awesome_print"
46
-
47
- ##
48
- # Used for benchmarking (iteration per second). See `benchmark` directory.
49
- # - https://github.com/evanphx/benchmark-ips
50
- # - https://www.johnnunemaker.com/how-to-benchmark-your-ruby-gem
51
- #
52
- spec.add_development_dependency "benchmark-ips", "~> 2.12.0"
53
-
54
- ##
55
- # Used for debugging any Ruby code (CRuby, JRuby, etc), since it written in plain Ruby.
56
- # Has minimalistic interface.
57
- # Does NOT support frame filtering.
58
- # - https://github.com/gsamokovarov/break
59
- #
60
- spec.add_development_dependency "break"
61
-
62
- ##
63
- # Used for debugging CRuby code.
64
- # Check `debug` if you need frame filtering.
65
- # Check `break` if you need to debug JRuby.
66
- # - https://github.com/deivid-rodriguez/byebug
67
- #
68
- # NOTE: `byebug` has C extensions, that is why it is NOT supported in JRuby.
69
- # - https://github.com/deivid-rodriguez/byebug/tree/master/ext/byebug
70
- # - https://github.com/deivid-rodriguez/byebug/issues/179#issuecomment-152727003
71
- #
72
- spec.add_development_dependency "byebug", "~> 10.0" unless ConvenientService::Support::Ruby.jruby?
73
-
74
- ##
75
- # Used for parsing Markdown in YARD docs.
76
- # - https://github.com/gjtorikian/commonmarker
77
- #
78
- # NOTE: `commonmarker` has C extensions, that is why it is NOT supported in JRuby.
79
- # - https://github.com/gjtorikian/commonmarker/tree/main/ext/commonmarker
80
- #
81
- # TODO: `commonmarker` v1 does NOT work with `yard-junk`.
82
- #
83
- spec.add_development_dependency "commonmarker", "~> 0.23.10" unless ConvenientService::Support::Ruby.jruby?
84
-
85
- ##
86
- # Used for debugging CRuby code.
87
- # Has almost the same public API as `byebug`, but supports frame filtering.
88
- # Check `break` if you need to debug JRuby.
89
- # - https://github.com/ruby/debug
90
- # - https://st0012.dev/from-byebug-to-ruby-debug
91
- # - https://st0012.dev/from-byebug-to-ruby-debug#heading-configuration
92
- # - https://github.com/ruby/debug#configuration
93
- # - ENV["RUBY_DEBUG_SKIP_PATH"]
94
- #
95
- # NOTE: `debug` has C extensions, that is why it is NOT supported in JRuby.
96
- # - https://github.com/ruby/debug/tree/master/ext/debug
97
- #
98
- spec.add_development_dependency "debug" unless ConvenientService::Support::Ruby.jruby?
99
-
100
- spec.add_development_dependency "faker"
101
-
102
- spec.add_development_dependency "gem-release"
103
-
104
- spec.add_development_dependency "inch"
105
-
106
- spec.add_development_dependency "json"
107
-
108
- ##
109
- # Used for memory profiling of Ruby code.
110
- # - https://github.com/SamSaffron/memory_profiler
111
- # - https://thoughtbot.com/blog/a-crash-course-in-analyzing-memory-usage-in-ruby
112
- #
113
- spec.add_development_dependency "memory_profiler"
114
-
115
- ##
116
- # Used for testing Ruby code outside RSpec.
117
- # - https://github.com/minitest/minitest
118
- # - https://semaphoreci.com/community/tutorials/getting-started-with-minitest
119
- # - https://cloudbees.com/blog/getting-started-with-minitest
120
- #
121
- spec.add_development_dependency "minitest", "~> 5.18.0"
122
-
123
- ##
124
- # Used for mutation testing of Ruby code.
125
- # - https://github.com/mbj/mutant
126
- # - https://github.com/mbj/mutant/blob/main/docs/nomenclature.md
127
- # - https://github.com/mbj/mutant/blob/main/docs/mutant-rspec.md
128
- # - https://github.com/mbj/mutant/blob/main/docs/incremental.md
129
- #
130
- # NOTE: How to get a licence key?
131
- # - https://github.com/mbj/mutant/issues/1396
132
- #
133
- if ::ENV["CONVENIENT_SERVICE_MUTANT_LICENCE_KEY"]
134
- spec.add_development_dependency "mutant", "~> 0.11.21"
135
- spec.add_development_dependency "mutant-rspec", "~> 0.11.21"
136
- end
137
-
138
- ##
139
- # Used for coloring logs.
140
- # - https://github.com/janlelis/paint
141
- #
142
- spec.add_development_dependency "paint"
143
-
144
- spec.add_development_dependency "progressbar"
145
-
146
- spec.add_development_dependency "rake", "~> 12.0"
147
-
148
- spec.add_development_dependency "rerun"
149
-
150
- spec.add_development_dependency "rouge"
151
-
152
- ##
153
- # Used for testing Ruby code.
154
- # https://rspec.info
155
- #
156
- spec.add_development_dependency "rspec", "~> 3.11.0"
157
-
158
- ##
159
- # Used for performance testing with RSpec.
160
- # https://github.com/piotrmurach
161
- #
162
- spec.add_development_dependency "rspec-benchmark", "~> 0.6.0"
163
-
164
- ##
165
- # Used for linting Ruby files.
166
- # https://github.com/rubocop/rubocop
167
- #
168
- spec.add_development_dependency "rubocop", "~> 1.52.0"
169
-
170
- ##
171
- # Used as a set of rules for rubocop for linting RSpec files.
172
- # https://github.com/rubocop/rubocop-rspec
173
- #
174
- spec.add_development_dependency "rubocop-rspec", "~> 2.22.0"
175
-
176
- spec.add_development_dependency "tty-prompt"
177
-
178
- ##
179
- # Used as a set of rules for robocop for linting source files.
180
- # https://github.com/testdouble/standard
181
- #
182
- spec.add_development_dependency "standard", "~> 1.30.1"
183
-
184
- spec.add_development_dependency "simplecov"
185
-
186
- spec.add_development_dependency "simplecov-lcov"
187
-
188
- ##
189
- # Used to have a simplified public API of minitest.
190
- # - https://github.com/thoughtbot/shoulda-context
191
- #
192
- spec.add_development_dependency "shoulda-context", "~> 2.0.0"
193
-
194
- ##
195
- # Used for benchmarking (call-stack profiler). See `benchmark` directory.
196
- # - https://github.com/tmm1/stackprof
197
- # - https://www.johnnunemaker.com/how-to-benchmark-your-ruby-gem
198
- #
199
- spec.add_development_dependency "stackprof", "~> 0.2.25" unless ConvenientService::Support::Ruby.jruby?
200
-
201
- spec.add_development_dependency "webrick"
202
-
203
- ##
204
- # Used for generation of API docs for Ruby code.
205
- # - https://github.com/lsegal/yard
206
- # - https://yardoc.org
207
- #
208
- spec.add_development_dependency "yard", "~> 0.9.34"
209
-
210
- ##
211
- # Used for linting YARD docs.
212
- # - https://github.com/zverok/yard-junk
213
- #
214
- spec.add_development_dependency "yard-junk", "~> 0.0.9"
215
-
216
- ##
217
- # The following gems are Convenient Service alternatives.
218
- # Used for performance comparisons.
219
- # See `benchmark/empty_service`.
220
- # - https://github.com/sunny/actor
221
- # - https://github.com/collectiveidea/interactor
222
- # - https://github.com/trailblazer/trailblazer-operation
223
- # - https://github.com/AaronLasseigne/active_interaction
224
- # - https://github.com/adomokos/light-service
225
- # - https://github.com/cypriss/mutations
226
- #
227
- spec.add_development_dependency "service_actor", "~> 3.7.0"
228
- spec.add_development_dependency "interactor", "~> 3.1.2"
229
- spec.add_development_dependency "trailblazer-operation", "~> 0.10.1"
230
- spec.add_development_dependency "active_interaction", "~> 5.3.0"
231
- spec.add_development_dependency "light-service", "~> 0.18.0"
232
- spec.add_development_dependency "mutations", "~> 0.9.1"
233
- end
data/coverage/.gitkeep DELETED
File without changes
@@ -1,73 +0,0 @@
1
- ##
2
- # Ruby 2.7 with Node.js 16.x.
3
- #
4
- # NOTE: Linted by hadolint.
5
- #
6
- # docker run --rm -i ghcr.io/hadolint/hadolint < docker/2.7/Dockerfile
7
- #
8
- # NOTE: A command to build image.
9
- #
10
- # cd convenient_service
11
- # cp Gemfile Gemfile.2.7
12
- # docker build . -f docker/2.7/Dockerfile -t convenient_service:2.7
13
- # # or `task docker:build:ruby_2.7`
14
- #
15
- # NOTE: A command to run bash in container.
16
- #
17
- # cd convenient_service
18
- # docker run --rm -it -v $(pwd):/gem convenient_service:2.7 bash
19
- # # or `task docker:bash:ruby_2.7`
20
- #
21
- # NOTE: If there are no memory, performance, or cost constraints, prefer to use as standard Linux distribution as it is possible.
22
- # In a general case, you simply won't have enough time to resolve all the "quirks" of more specific distributions if you are an application developer.
23
- # That is why a `slim` version is used instead of `alpine`.
24
- # Also `slim` is more similar to Ubuntu.
25
- # - https://github.com/timbru31/docker-ruby-node/tree/master/2.7/16
26
- # - https://medium.com/swlh/alpine-slim-stretch-buster-jessie-bullseye-bookworm-what-are-the-differences-in-docker-62171ed4531d
27
- # - https://hub.docker.com/r/timbru31/ruby-node/tags
28
- #
29
- # NOTE: Gallium means Node.js 16.x.
30
- # https://github.com/nodejs/Release
31
- #
32
- FROM timbru31/ruby-node:2.7-slim-gallium
33
-
34
- ##
35
- # NOTE: `bundle install` dependencies.
36
- #
37
- RUN apt-get update -qq \
38
- && apt-get install --no-install-recommends -y git \
39
- && apt-get install --no-install-recommends -y make \
40
- && apt-get install --no-install-recommends -y gcc \
41
- && apt-get clean \
42
- && rm -rf /var/lib/apt/lists/*
43
-
44
- RUN mkdir -p /gem
45
-
46
- WORKDIR /gem
47
-
48
- COPY . /gem
49
-
50
- ##
51
- # NOTE: Every container has its own copy of `Gemfile`. This way a developer doesn't need to delete `Gemfile.lock` all the time when changing containers.
52
- # - https://docs.docker.com/engine/reference/builder/#env
53
- # - https://stackoverflow.com/questions/48863711/is-it-possible-to-override-gemfile-for-local-development
54
- #
55
- ENV BUNDLE_GEMFILE=Gemfile.2.7
56
-
57
- RUN bundle install
58
-
59
- RUN bundle exec appraisal install
60
-
61
- ##
62
- # NOTE: Installs `task`.
63
- # https://taskfile.dev/installation/#install-script
64
- #
65
- # NOTE: `task` is installed into `~/bin`. That is why `-b /bin` is used. See `echo ${PATH}` to debug.
66
- #
67
- RUN sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /bin
68
-
69
- ##
70
- # NOTE: Is used to check whether a command is executed inside a Docker container. See Rakefile for examples.
71
- # https://stackoverflow.com/a/65942222/12201472
72
- #
73
- ENV IN_DOCKER_CONTAINER=true
@@ -1,73 +0,0 @@
1
- ##
2
- # Ruby 3.0 with Node.js 16.x.
3
- #
4
- # NOTE: Linted by hadolint.
5
- #
6
- # docker run --rm -i ghcr.io/hadolint/hadolint < docker/3.0/Dockerfile
7
- #
8
- # NOTE: A command to build image.
9
- #
10
- # cd convenient_service
11
- # cp Gemfile Gemfile.3.0
12
- # docker build . -f docker/3.0/Dockerfile -t convenient_service:3.0
13
- # # or `task docker:build:ruby_3.0`
14
- #
15
- # NOTE: A command to run bash in container.
16
- #
17
- # cd convenient_service
18
- # docker run --rm -it -v $(pwd):/gem convenient_service:3.0 bash
19
- # # or `task docker:bash:ruby_3.0`
20
- #
21
- # NOTE: If there are no memory, performance, or cost constraints, prefer to use as standard Linux distribution as it is possible.
22
- # In a general case, you simply won't have enough time to resolve all the "quirks" of more specific distributions if you are an application developer.
23
- # That is why a `slim` version is used instead of `alpine`.
24
- # Also `slim` is more similar to Ubuntu.
25
- # - https://github.com/timbru31/docker-ruby-node/tree/master/3.0/16
26
- # - https://medium.com/swlh/alpine-slim-stretch-buster-jessie-bullseye-bookworm-what-are-the-differences-in-docker-62171ed4531d
27
- # - https://hub.docker.com/r/timbru31/ruby-node/tags
28
- #
29
- # NOTE: Gallium means Node.js 16.x.
30
- # https://github.com/nodejs/Release
31
- #
32
- FROM timbru31/ruby-node:3.0-slim-gallium
33
-
34
- ##
35
- # NOTE: `bundle install` dependencies.
36
- #
37
- RUN apt-get update -qq \
38
- && apt-get install --no-install-recommends -y git \
39
- && apt-get install --no-install-recommends -y make \
40
- && apt-get install --no-install-recommends -y gcc \
41
- && apt-get clean \
42
- && rm -rf /var/lib/apt/lists/*
43
-
44
- RUN mkdir -p /gem
45
-
46
- WORKDIR /gem
47
-
48
- COPY . /gem
49
-
50
- ##
51
- # NOTE: Every container has its own copy of `Gemfile`. This way a developer doesn't need to delete `Gemfile.lock` all the time when changing containers.
52
- # - https://docs.docker.com/engine/reference/builder/#env
53
- # - https://stackoverflow.com/questions/48863711/is-it-possible-to-override-gemfile-for-local-development
54
- #
55
- ENV BUNDLE_GEMFILE=Gemfile.3.0
56
-
57
- RUN bundle install
58
-
59
- RUN bundle exec appraisal install
60
-
61
- ##
62
- # NOTE: Installs `task`.
63
- # https://taskfile.dev/installation/#install-script
64
- #
65
- # NOTE: `task` is installed into `~/bin`. That is why `-b /bin` is used. See `echo ${PATH}` to debug.
66
- #
67
- RUN sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /bin
68
-
69
- ##
70
- # NOTE: Is used to check whether a command is executed inside a Docker container. See Rakefile for examples.
71
- # https://stackoverflow.com/a/65942222/12201472
72
- #
73
- ENV IN_DOCKER_CONTAINER=true