my_api_client 1.3.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +8 -0
  3. data/.envrc.skeleton +0 -1
  4. data/.github/dependabot.yml +82 -7
  5. data/.github/workflows/ci.yml +334 -0
  6. data/.github/workflows/dependabot-auto-merge.yml +96 -0
  7. data/.github/workflows/release.yml +33 -0
  8. data/.github/workflows/rubocop_challenge.yml +33 -0
  9. data/.gitignore +1 -0
  10. data/.rubocop.yml +1 -1
  11. data/.ruby-version +1 -1
  12. data/AGENTS.md +128 -0
  13. data/CHANGELOG.md +54 -2
  14. data/CLAUDE.md +6 -0
  15. data/Dockerfile +22 -0
  16. data/Gemfile +1 -1
  17. data/Gemfile.lock +67 -59
  18. data/README.md +398 -62
  19. data/docker-compose.yml +29 -0
  20. data/docs/runbooks/dependabot_pr_auto_merge.md +113 -0
  21. data/gemfiles/rails_7.2.gemfile +1 -1
  22. data/gemfiles/{rails_7.1.gemfile → rails_8.0.gemfile} +2 -2
  23. data/gemfiles/{rails_6.1.gemfile → rails_8.1.gemfile} +2 -2
  24. data/lib/my_api_client/default_error_handlers.rb +1 -1
  25. data/lib/my_api_client/errors/client_error.rb +5 -1
  26. data/lib/my_api_client/integrations/bugsnag.rb +1 -1
  27. data/lib/my_api_client/version.rb +1 -1
  28. data/lib/my_api_client.rb +1 -1
  29. data/my_api/.ruby-version +1 -1
  30. data/my_api/AGENTS.md +35 -0
  31. data/my_api/Dockerfile +25 -0
  32. data/my_api/Gemfile +5 -16
  33. data/my_api/Gemfile.lock +263 -228
  34. data/my_api/README.md +36 -25
  35. data/my_api/Rakefile +3 -2
  36. data/my_api/app/controllers/application_controller.rb +1 -2
  37. data/my_api/app/controllers/error_controller.rb +2 -2
  38. data/my_api/app/controllers/header_controller.rb +6 -3
  39. data/my_api/app/controllers/pagination_controller.rb +5 -15
  40. data/my_api/app/controllers/rest_controller.rb +12 -16
  41. data/my_api/app/controllers/status_controller.rb +3 -4
  42. data/my_api/config/application.rb +12 -67
  43. data/{rails_app/rails_6.1 → my_api}/config/boot.rb +1 -1
  44. data/{rails_app/rails_7.1 → my_api}/config/environment.rb +0 -2
  45. data/my_api/config/environments/development.rb +6 -6
  46. data/my_api/config/environments/production.rb +5 -8
  47. data/my_api/config/environments/test.rb +5 -6
  48. data/my_api/config/routes.rb +2 -10
  49. data/my_api/config.ru +2 -4
  50. data/my_api/public/index.html +10 -90
  51. data/{rails_app/rails_7.0 → my_api}/spec/rails_helper.rb +3 -4
  52. data/my_api/spec/requests/error_controller_spec.rb +18 -0
  53. data/my_api/spec/requests/pagination_controller_spec.rb +22 -0
  54. data/my_api/spec/requests/rest_controller_spec.rb +22 -0
  55. data/my_api/spec/requests/status_controller_spec.rb +20 -0
  56. data/my_api/spec/spec_helper.rb +15 -23
  57. data/my_api_client.gemspec +2 -2
  58. data/rails_app/AGENTS.md +13 -0
  59. data/rails_app/rails_7.2/Dockerfile +1 -1
  60. data/rails_app/rails_7.2/Gemfile +2 -0
  61. data/rails_app/rails_7.2/Gemfile.lock +143 -122
  62. data/rails_app/{rails_7.1 → rails_8.0}/.dockerignore +16 -2
  63. data/rails_app/{rails_6.1 → rails_8.0}/.gitattributes +2 -1
  64. data/rails_app/rails_8.0/.github/workflows/ci.yml +39 -0
  65. data/rails_app/{rails_6.1 → rails_8.0}/.gitignore +11 -7
  66. data/rails_app/rails_8.0/.rubocop.yml +8 -0
  67. data/rails_app/rails_8.0/.ruby-version +1 -0
  68. data/rails_app/{rails_7.1 → rails_8.0}/Dockerfile +28 -18
  69. data/rails_app/rails_8.0/Gemfile +15 -0
  70. data/rails_app/rails_8.0/Gemfile.lock +286 -0
  71. data/rails_app/{rails_6.1 → rails_8.0}/Rakefile +1 -3
  72. data/rails_app/{rails_7.1 → rails_8.0}/app/controllers/application_controller.rb +0 -2
  73. data/rails_app/rails_8.0/app/jobs/application_job.rb +7 -0
  74. data/rails_app/rails_8.0/app/mailers/application_mailer.rb +4 -0
  75. data/rails_app/{rails_7.0 → rails_8.0}/app/models/application_record.rb +0 -2
  76. data/rails_app/rails_8.0/app/views/layouts/mailer.html.erb +13 -0
  77. data/rails_app/rails_8.0/app/views/layouts/mailer.text.erb +1 -0
  78. data/rails_app/rails_8.0/bin/brakeman +7 -0
  79. data/rails_app/rails_8.0/bin/dev +2 -0
  80. data/rails_app/rails_8.0/bin/docker-entrypoint +14 -0
  81. data/rails_app/rails_8.0/bin/rails +4 -0
  82. data/rails_app/rails_8.0/bin/rake +4 -0
  83. data/rails_app/rails_8.0/bin/rubocop +8 -0
  84. data/rails_app/{rails_7.1 → rails_8.0}/bin/setup +11 -12
  85. data/rails_app/rails_8.0/bin/thrust +5 -0
  86. data/rails_app/{rails_7.1 → rails_8.0}/config/application.rb +14 -16
  87. data/rails_app/rails_8.0/config/boot.rb +3 -0
  88. data/rails_app/rails_8.0/config/cable.yml +10 -0
  89. data/rails_app/rails_8.0/config/credentials.yml.enc +1 -0
  90. data/rails_app/{rails_7.1 → rails_8.0}/config/database.yml +18 -2
  91. data/rails_app/{rails_6.1 → rails_8.0}/config/environment.rb +1 -3
  92. data/rails_app/rails_8.0/config/environments/development.rb +70 -0
  93. data/rails_app/rails_8.0/config/environments/production.rb +86 -0
  94. data/rails_app/{rails_7.1 → rails_8.0}/config/environments/test.rb +16 -19
  95. data/rails_app/{rails_7.1 → rails_8.0}/config/initializers/cors.rb +0 -1
  96. data/rails_app/{rails_7.1 → rails_8.0}/config/initializers/filter_parameter_logging.rb +2 -4
  97. data/rails_app/{rails_7.0 → rails_8.0}/config/initializers/inflections.rb +0 -1
  98. data/rails_app/rails_8.0/config/puma.rb +41 -0
  99. data/rails_app/{rails_7.1 → rails_8.0}/config/routes.rb +1 -3
  100. data/rails_app/rails_8.0/config/storage.yml +34 -0
  101. data/rails_app/{rails_7.1 → rails_8.0}/config.ru +1 -3
  102. data/rails_app/{rails_7.1 → rails_8.0}/db/seeds.rb +0 -1
  103. data/rails_app/{rails_7.1 → rails_8.0}/spec/rails_helper.rb +1 -1
  104. data/rails_app/rails_8.1/.dockerignore +45 -0
  105. data/rails_app/rails_8.1/.gitattributes +9 -0
  106. data/rails_app/rails_8.1/.github/workflows/ci.yml +52 -0
  107. data/rails_app/rails_8.1/.gitignore +33 -0
  108. data/rails_app/rails_8.1/.rspec +1 -0
  109. data/rails_app/rails_8.1/.rubocop.yml +8 -0
  110. data/rails_app/rails_8.1/.ruby-version +1 -0
  111. data/rails_app/rails_8.1/Dockerfile +68 -0
  112. data/rails_app/rails_8.1/Gemfile +15 -0
  113. data/rails_app/rails_8.1/Gemfile.lock +289 -0
  114. data/rails_app/{rails_7.0 → rails_8.1}/Rakefile +1 -3
  115. data/rails_app/{rails_6.1 → rails_8.1}/app/controllers/application_controller.rb +0 -2
  116. data/rails_app/rails_8.1/app/jobs/application_job.rb +7 -0
  117. data/rails_app/rails_8.1/app/mailers/application_mailer.rb +4 -0
  118. data/rails_app/{rails_7.1 → rails_8.1}/app/models/application_record.rb +0 -2
  119. data/rails_app/rails_8.1/app/views/layouts/mailer.html.erb +13 -0
  120. data/rails_app/rails_8.1/app/views/layouts/mailer.text.erb +1 -0
  121. data/rails_app/rails_8.1/bin/brakeman +7 -0
  122. data/rails_app/rails_8.1/bin/bundler-audit +6 -0
  123. data/rails_app/rails_8.1/bin/ci +6 -0
  124. data/rails_app/rails_8.1/bin/dev +2 -0
  125. data/rails_app/{rails_7.1 → rails_8.1}/bin/docker-entrypoint +1 -1
  126. data/rails_app/rails_8.1/bin/rails +4 -0
  127. data/rails_app/rails_8.1/bin/rake +4 -0
  128. data/rails_app/rails_8.1/bin/rubocop +8 -0
  129. data/rails_app/{rails_7.0 → rails_8.1}/bin/setup +13 -13
  130. data/rails_app/rails_8.1/bin/thrust +5 -0
  131. data/rails_app/{rails_6.1 → rails_8.1}/config/application.rb +19 -17
  132. data/rails_app/rails_8.1/config/boot.rb +3 -0
  133. data/rails_app/rails_8.1/config/bundler-audit.yml +5 -0
  134. data/rails_app/rails_8.1/config/cable.yml +10 -0
  135. data/rails_app/rails_8.1/config/ci.rb +19 -0
  136. data/rails_app/rails_8.1/config/credentials.yml.enc +1 -0
  137. data/rails_app/rails_8.1/config/database.yml +40 -0
  138. data/rails_app/{rails_7.0 → rails_8.1}/config/environment.rb +1 -3
  139. data/rails_app/rails_8.1/config/environments/development.rb +73 -0
  140. data/rails_app/rails_8.1/config/environments/production.rb +86 -0
  141. data/rails_app/rails_8.1/config/environments/test.rb +53 -0
  142. data/rails_app/{rails_7.0 → rails_8.1}/config/initializers/cors.rb +1 -2
  143. data/rails_app/rails_8.1/config/initializers/filter_parameter_logging.rb +8 -0
  144. data/rails_app/{rails_7.1 → rails_8.1}/config/initializers/inflections.rb +0 -1
  145. data/rails_app/rails_8.1/config/locales/en.yml +31 -0
  146. data/rails_app/rails_8.1/config/puma.rb +42 -0
  147. data/rails_app/rails_8.1/config/routes.rb +10 -0
  148. data/rails_app/rails_8.1/config/storage.yml +27 -0
  149. data/rails_app/{rails_7.0 → rails_8.1}/config.ru +1 -3
  150. data/rails_app/rails_8.1/db/seeds.rb +9 -0
  151. data/rails_app/{rails_6.1 → rails_8.1}/spec/rails_helper.rb +1 -2
  152. metadata +139 -136
  153. data/.circleci/config.yml +0 -344
  154. data/README.jp.md +0 -785
  155. data/gemfiles/rails_7.0.gemfile +0 -15
  156. data/my_api/.envrc.skeleton +0 -3
  157. data/my_api/.jetskeep +0 -1
  158. data/my_api/Procfile +0 -7
  159. data/my_api/app/helpers/application_helper.rb +0 -5
  160. data/my_api/app/jobs/application_job.rb +0 -7
  161. data/my_api/app/models/application_item.rb +0 -5
  162. data/my_api/config/dynamodb.yml +0 -22
  163. data/my_api/spec/controllers/error_controller_spec.rb +0 -43
  164. data/my_api/spec/controllers/header_controller_spec.rb +0 -33
  165. data/my_api/spec/controllers/pagination_controller_spec.rb +0 -73
  166. data/my_api/spec/controllers/rest_controller_spec.rb +0 -99
  167. data/my_api/spec/controllers/status_controller_spec.rb +0 -47
  168. data/my_api/spec/fixtures/payloads/posts-index.json +0 -51
  169. data/my_api/spec/fixtures/payloads/posts-show.json +0 -53
  170. data/rails_app/rails_6.1/.rspec +0 -3
  171. data/rails_app/rails_6.1/Gemfile +0 -17
  172. data/rails_app/rails_6.1/Gemfile.lock +0 -195
  173. data/rails_app/rails_6.1/app/models/application_record.rb +0 -5
  174. data/rails_app/rails_6.1/bin/bundle +0 -122
  175. data/rails_app/rails_6.1/bin/rails +0 -6
  176. data/rails_app/rails_6.1/bin/rake +0 -6
  177. data/rails_app/rails_6.1/bin/setup +0 -35
  178. data/rails_app/rails_6.1/config/credentials.yml.enc +0 -1
  179. data/rails_app/rails_6.1/config/database.yml +0 -25
  180. data/rails_app/rails_6.1/config/environments/development.rb +0 -59
  181. data/rails_app/rails_6.1/config/environments/production.rb +0 -97
  182. data/rails_app/rails_6.1/config/environments/test.rb +0 -51
  183. data/rails_app/rails_6.1/config/initializers/application_controller_renderer.rb +0 -9
  184. data/rails_app/rails_6.1/config/initializers/backtrace_silencers.rb +0 -10
  185. data/rails_app/rails_6.1/config/initializers/cors.rb +0 -17
  186. data/rails_app/rails_6.1/config/initializers/filter_parameter_logging.rb +0 -8
  187. data/rails_app/rails_6.1/config/initializers/inflections.rb +0 -17
  188. data/rails_app/rails_6.1/config/initializers/mime_types.rb +0 -5
  189. data/rails_app/rails_6.1/config/initializers/wrap_parameters.rb +0 -16
  190. data/rails_app/rails_6.1/config/locales/en.yml +0 -33
  191. data/rails_app/rails_6.1/config/routes.rb +0 -5
  192. data/rails_app/rails_6.1/config.ru +0 -8
  193. data/rails_app/rails_6.1/db/seeds.rb +0 -8
  194. data/rails_app/rails_7.0/Gemfile +0 -13
  195. data/rails_app/rails_7.0/Gemfile.lock +0 -212
  196. data/rails_app/rails_7.0/app/controllers/application_controller.rb +0 -4
  197. data/rails_app/rails_7.0/bin/bundle +0 -122
  198. data/rails_app/rails_7.0/bin/rails +0 -6
  199. data/rails_app/rails_7.0/bin/rake +0 -6
  200. data/rails_app/rails_7.0/config/application.rb +0 -41
  201. data/rails_app/rails_7.0/config/boot.rb +0 -5
  202. data/rails_app/rails_7.0/config/credentials.yml.enc +0 -1
  203. data/rails_app/rails_7.0/config/database.yml +0 -25
  204. data/rails_app/rails_7.0/config/environments/development.rb +0 -58
  205. data/rails_app/rails_7.0/config/environments/production.rb +0 -70
  206. data/rails_app/rails_7.0/config/environments/test.rb +0 -52
  207. data/rails_app/rails_7.0/config/initializers/filter_parameter_logging.rb +0 -8
  208. data/rails_app/rails_7.0/config/locales/en.yml +0 -33
  209. data/rails_app/rails_7.0/config/routes.rb +0 -8
  210. data/rails_app/rails_7.0/db/seeds.rb +0 -8
  211. data/rails_app/rails_7.1/Gemfile +0 -16
  212. data/rails_app/rails_7.1/Gemfile.lock +0 -241
  213. data/rails_app/rails_7.1/README.md +0 -24
  214. data/rails_app/rails_7.1/Rakefile +0 -8
  215. data/rails_app/rails_7.1/bin/bundle +0 -122
  216. data/rails_app/rails_7.1/bin/rails +0 -6
  217. data/rails_app/rails_7.1/bin/rake +0 -6
  218. data/rails_app/rails_7.1/config/boot.rb +0 -5
  219. data/rails_app/rails_7.1/config/credentials.yml.enc +0 -1
  220. data/rails_app/rails_7.1/config/environments/development.rb +0 -58
  221. data/rails_app/rails_7.1/config/environments/production.rb +0 -74
  222. data/rails_app/rails_7.1/config/puma.rb +0 -46
  223. data/rails_app/rails_7.1/public/robots.txt +0 -2
  224. data/rails_app/rails_7.1/spec/spec_helper.rb +0 -13
  225. data/rails_app/rails_7.1/vendor/.keep +0 -0
  226. data/rails_app/rails_7.2/.github/dependabot.yml +0 -12
  227. /data/rails_app/{rails_7.1 → rails_8.0}/.rspec +0 -0
  228. /data/rails_app/{rails_6.1 → rails_8.0}/README.md +0 -0
  229. /data/rails_app/{rails_6.1 → rails_8.0}/app/controllers/concerns/.keep +0 -0
  230. /data/rails_app/{rails_6.1/app/javascript → rails_8.0/app/models/concerns}/.keep +0 -0
  231. /data/rails_app/{rails_7.1 → rails_8.0}/config/locales/en.yml +0 -0
  232. /data/rails_app/{rails_6.1/app/models/concerns → rails_8.0/lib/tasks}/.keep +0 -0
  233. /data/rails_app/{rails_6.1/lib/tasks → rails_8.0/log}/.keep +0 -0
  234. /data/rails_app/{rails_6.1 → rails_8.0}/public/robots.txt +0 -0
  235. /data/rails_app/{rails_6.1/tmp → rails_8.0/script}/.keep +0 -0
  236. /data/rails_app/{rails_6.1 → rails_8.0}/spec/spec_helper.rb +0 -0
  237. /data/rails_app/{rails_6.1/tmp/pids → rails_8.0/storage}/.keep +0 -0
  238. /data/rails_app/{rails_6.1 → rails_8.0}/vendor/.keep +0 -0
  239. /data/rails_app/{rails_7.0 → rails_8.1}/README.md +0 -0
  240. /data/rails_app/{rails_7.1 → rails_8.1}/app/controllers/concerns/.keep +0 -0
  241. /data/rails_app/{rails_7.1 → rails_8.1}/app/models/concerns/.keep +0 -0
  242. /data/rails_app/{rails_7.1 → rails_8.1}/lib/tasks/.keep +0 -0
  243. /data/rails_app/{rails_7.1/storage → rails_8.1/log}/.keep +0 -0
  244. /data/rails_app/{rails_7.0 → rails_8.1}/public/robots.txt +0 -0
  245. /data/rails_app/{rails_7.1/tmp → rails_8.1/script}/.keep +0 -0
  246. /data/rails_app/{rails_7.0 → rails_8.1}/spec/spec_helper.rb +0 -0
  247. /data/rails_app/{rails_7.1/tmp/pids → rails_8.1/storage}/.keep +0 -0
  248. /data/rails_app/{rails_7.1/tmp/storage → rails_8.1/vendor}/.keep +0 -0
data/AGENTS.md ADDED
@@ -0,0 +1,128 @@
1
+ # AGENTS.md
2
+
3
+ ## Branch Creation Rule
4
+
5
+ - Always create a new branch from `master`.
6
+ - Before creating a branch, update local `master` with the latest commits from `origin`.
7
+ - After updating local `master`, reload and re-read `AGENTS.md` before starting any new task.
8
+ - Example flow:
9
+ 1. `git checkout master`
10
+ 2. `git fetch origin`
11
+ 3. `git pull --ff-only origin master`
12
+ 4. Re-open `AGENTS.md` and confirm instructions
13
+ 5. `git checkout -b codex/<new-branch-name>`
14
+
15
+ ## Development Version Policy
16
+
17
+ - In development environments, always use the oldest versions among currently supported Ruby and Rails.
18
+ - Current baseline: Ruby 3.2 and Rails 7.2.
19
+ - Patch versions may be updated to the latest available releases within the selected baseline (e.g., Ruby 3.2.x and Rails 7.2.x).
20
+ - When updating support policy, also update `.ruby-version`, `Dockerfile` (`ARG RUBY_VERSION` and `BUNDLE_GEMFILE`), and development Dockerfiles under `rails_app/`.
21
+
22
+ ## Support Matrix Update Procedure
23
+
24
+ - Decide target support matrix first (Ruby and Rails versions to keep/add/remove).
25
+ - Update `my_api_client.gemspec`:
26
+ - `required_ruby_version`
27
+ - `activesupport` minimum version
28
+ - Update CI matrix in `.github/workflows/ci.yml`:
29
+ - `build_gem.strategy.matrix.ruby_version` / `rails_version`
30
+ - `verify_generator.strategy.matrix.ruby_version` / `rails_version`
31
+ - update representative matrix-gated conditions (e.g. coverage/upload conditions) to the intended runtime/framework pair
32
+ - Check other workflows under `.github/workflows/` for fixed Ruby versions and align them when support policy changes.
33
+ - Update supported versions in:
34
+ - `README.md`
35
+ - Keep development baseline files aligned:
36
+ - `.ruby-version`
37
+ - `Dockerfile` (`ARG RUBY_VERSION`)
38
+ - `rails_app/*/Dockerfile` (`ARG RUBY_VERSION`) for supported Rails verification apps
39
+ - Keep verification assets aligned with supported Rails:
40
+ - remove unsupported `gemfiles/rails_*.gemfile`
41
+ - remove unsupported `rails_app/rails_*` directories
42
+ - keep only supported Rails verification app directories
43
+ - Validate before commit:
44
+ - `docker run --rm -v "$PWD":/app -w /app my_api_client-dev bundle exec rspec`
45
+ - `docker run --rm -v "$PWD":/app -w /app my_api_client-dev bundle exec rubocop`
46
+ - `docker run --rm -v "$PWD":/app -w /app my_api_client-dev bundle exec rake build`
47
+ - If any `rails_app/rails_*/Gemfile.lock` drifts from gemspec constraints, sync at least the `my_api_client` entry (`version` and `activesupport` lower bound).
48
+
49
+ ## Docker Development Commands
50
+
51
+ - Command selection policy:
52
+ - Use `docker compose` for integration specs that require the `my_api` server.
53
+ - Use `docker run` for lint, build, and local non-integration spec execution.
54
+ - Build development image:
55
+ - `docker build -t my_api_client-dev .`
56
+ - Open a shell in the container (mount local source):
57
+ - `docker run --rm -it -v "$PWD":/app -w /app my_api_client-dev bash`
58
+ - Install/update gems:
59
+ - `docker run --rm -it -v "$PWD":/app -w /app my_api_client-dev bundle install`
60
+ - Run all specs:
61
+ - `docker run --rm -it -v "$PWD":/app -w /app my_api_client-dev bundle exec rspec`
62
+ - Run integration specs with real HTTP:
63
+ - `docker compose up -d --build my_api`
64
+ - `docker compose run --rm test bundle exec rspec`
65
+ - (integration only) `docker compose run --rm test bundle exec rspec spec/integrations/api_clients`
66
+ - (my_api request specs) `docker compose run --rm my_api bundle exec rspec spec/requests`
67
+ - `docker compose down --volumes --remove-orphans`
68
+ - Run RuboCop:
69
+ - `docker run --rm -it -v "$PWD":/app -w /app my_api_client-dev bundle exec rubocop`
70
+ - Build gem package:
71
+ - `docker run --rm -it -v "$PWD":/app -w /app my_api_client-dev bundle exec rake build`
72
+ - Install gem locally in container:
73
+ - `docker run --rm -it -v "$PWD":/app -w /app my_api_client-dev bundle exec rake install`
74
+
75
+ ## Validation Rule
76
+
77
+ - Run RuboCop and confirm there are no offenses only when `.rb` files are changed.
78
+
79
+ ## Retrospective Rule
80
+
81
+ - Propose a KPT retrospective when a task reaches a completion point, such as after creating a Pull Request.
82
+ - Based on the KPT results, propose updates to `AGENTS.md`.
83
+ - The timing of the retrospective may be decided by Codex when it is appropriate.
84
+ - Output destination rule: KPT content must be shared only in this Codex conversation unless the user explicitly requests another destination.
85
+ - Do not post KPT content to GitHub comments/issues/PRs unless the user explicitly requests it.
86
+
87
+ ## README Update Checklist
88
+
89
+ - When editing `README.md`, run a typo/consistency sweep before finishing.
90
+ - Check common typo patterns: `api_clinet`, `erros`, `reqest`, `resouce`.
91
+ - Verify sample request parameters match method signatures and examples (e.g. query/body keys).
92
+ - Verify JSONPath examples match sample JSON structures (e.g. `links` vs `link`).
93
+ - When removing or renaming documentation files, run `rg -n "<old-file-name>" --glob "*.md"` and resolve remaining references before finishing.
94
+
95
+ ## Documentation Language Policy
96
+
97
+ - `README.md` is the single source of truth for repository documentation.
98
+ - Do not add language-specific README copies (for example `README.jp.md`).
99
+ - For Japanese reading support, rely on browser translation features instead of maintaining duplicate files.
100
+
101
+ ## Pull Request Description Rule
102
+
103
+ - In PR descriptions, include a `Purpose of this change` section that explains why the change is needed, not only what changed.
104
+
105
+ ## GitHub CLI Body Safety
106
+
107
+ - When using `gh pr create`, `gh pr comment`, or similar commands with markdown body text, avoid inline shell strings that include backticks.
108
+ - Prefer one of the following:
109
+ - Use plain text without backticks in inline `--body`.
110
+ - Write the body to a temporary file and pass it via file-based options (or equivalent safe method) to prevent shell command substitution.
111
+
112
+ ## Runbook
113
+
114
+ - Dependabot PR review and auto-merge operation steps are documented in `docs/runbooks/dependabot_pr_auto_merge.md`.
115
+
116
+ ## CHANGELOG Organization Rule
117
+
118
+ - Follow the format of past versions in `CHANGELOG.md`.
119
+ - Use `-` for bullet list items (not `*`).
120
+ - Categorize entries under these headings, keeping only the headings that have entries (omit empty ones):
121
+ `Feature`, `Bugfix`, `Security`, `Breaking Change`, `Rubocop Challenge`, `Dependabot`, `Misc`.
122
+ - Keep the category order above.
123
+ - Dependabot section:
124
+ - List only bumps for the gem itself (root `Gemfile` / `.github/workflows`).
125
+ - Do NOT list bumps under `rails_app/*` or `my_api` (verification/test apps).
126
+ - When the same gem is bumped multiple times within a release, keep a single entry and merge the version range from the earliest `from` to the latest `to` (e.g. `Bump bugsnag from 6.27.1 to 6.30.0`).
127
+ - Only a change that breaks backward compatibility goes under `Breaking Change`.
128
+ A rename that keeps backward compatibility (e.g. via an alias) is a `Feature`, not a breaking change.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,59 @@
1
1
  # Change log
2
2
 
3
+ ## v2.0.0 (Jul 21, 2026)
4
+
5
+ This major release marks the shift to an AI-assisted (agent-driven) development workflow.
6
+ The development environment, CI/CD, and contribution guidelines were reorganized around AI
7
+ coding agents (see `AGENTS.md`), which is the primary reason for the major version bump.
8
+
9
+ ### Feature
10
+
11
+ - [#1153](https://github.com/ryz310/my_api_client/pull/1153) Rename from UnprocessableEntity to UnprocessableContent ([@ashimomura](https://github.com/ashimomura))
12
+
13
+ ### Bugfix
14
+
15
+ - [#1276](https://github.com/ryz310/my_api_client/pull/1276) Stop stringifying the metadata left in the Bugsnag breadcrumb ([@masakiq](https://github.com/masakiq))
16
+
17
+ ### Dependabot
18
+
19
+ - [#1111](https://github.com/ryz310/my_api_client/pull/1111) Bump rexml from 3.4.1 to 3.4.2 ([@ryz310](https://github.com/ryz310))
20
+ - [#1114](https://github.com/ryz310/my_api_client/pull/1114) Bump faraday from 2.13.1 to 2.14.0 ([@ryz310](https://github.com/ryz310))
21
+ - [#1117](https://github.com/ryz310/my_api_client/pull/1117) Bump rubocop-performance from 1.25.0 to 1.26.1 ([@ryz310](https://github.com/ryz310))
22
+ - [#1119](https://github.com/ryz310/my_api_client/pull/1119) Bump rspec from 3.13.1 to 3.13.2 ([@ryz310](https://github.com/ryz310))
23
+ - [#1121](https://github.com/ryz310/my_api_client/pull/1121) Bump sawyer from 0.9.2 to 0.9.3 ([@ryz310](https://github.com/ryz310))
24
+ - [#1128](https://github.com/ryz310/my_api_client/pull/1128) Bump rubocop-rspec_rails from 2.31.0 to 2.32.0 ([@ryz310](https://github.com/ryz310))
25
+ - [#1161](https://github.com/ryz310/my_api_client/pull/1161) Bump pry-byebug from 3.11.0 to 3.12.0 ([@ryz310](https://github.com/ryz310))
26
+ - [#1184](https://github.com/ryz310/my_api_client/pull/1184) Bump actions/upload-artifact from 6 to 7 ([@ryz310](https://github.com/ryz310))
27
+ - [#1183](https://github.com/ryz310/my_api_client/pull/1183) Bump actions/download-artifact from 4 to 8 ([@ryz310](https://github.com/ryz310))
28
+ - [#1214](https://github.com/ryz310/my_api_client/pull/1214) Bump webmock from 3.25.1 to 3.26.2 ([@ryz310](https://github.com/ryz310))
29
+ - [#1216](https://github.com/ryz310/my_api_client/pull/1216) Bump activesupport from 7.2.2.1 to 8.1.3 ([@ryz310](https://github.com/ryz310))
30
+ - [#1236](https://github.com/ryz310/my_api_client/pull/1236) Bump bugsnag from 6.27.1 to 6.30.0 ([@ryz310](https://github.com/ryz310))
31
+ - [#1235](https://github.com/ryz310/my_api_client/pull/1235) Bump rake from 13.3.0 to 13.4.1 ([@ryz310](https://github.com/ryz310))
32
+ - [#1298](https://github.com/ryz310/my_api_client/pull/1298) Bump yard from 0.9.37 to 0.9.45 ([@ryz310](https://github.com/ryz310))
33
+
34
+ ### Misc
35
+
36
+ - [#1133](https://github.com/ryz310/my_api_client/pull/1133) Migrate CI from CircleCI to GitHub Actions ([@ryz310](https://github.com/ryz310))
37
+ - [#1134](https://github.com/ryz310/my_api_client/pull/1134) Set up Docker-based development environment ([@ryz310](https://github.com/ryz310))
38
+ - [#1135](https://github.com/ryz310/my_api_client/pull/1135) Update support matrix (Ruby 3.2-4.0 / Rails 7.2-8.1) ([@ryz310](https://github.com/ryz310))
39
+ - [#1136](https://github.com/ryz310/my_api_client/pull/1136) Migrate CI coverage upload from Code Climate to Qlty ([@ryz310](https://github.com/ryz310))
40
+ - [#1137](https://github.com/ryz310/my_api_client/pull/1137) Add Dependabot auto-merge workflow for dev patch updates ([@ryz310](https://github.com/ryz310))
41
+ - [#1142](https://github.com/ryz310/my_api_client/pull/1142) Adjust CI triggers and SimpleCov spec filtering ([@ryz310](https://github.com/ryz310))
42
+ - [#1143](https://github.com/ryz310/my_api_client/pull/1143) Add KPT retrospective rule and extend Dependabot dev auto-merge ([@ryz310](https://github.com/ryz310))
43
+ - [#1144](https://github.com/ryz310/my_api_client/pull/1144) Migrate my_api from Jets to Rails 8.1 with compose-based CI integration ([@ryz310](https://github.com/ryz310))
44
+ - [#1155](https://github.com/ryz310/my_api_client/pull/1155) Fix my_api compose build to honor Gemfile.lock ([@ryz310](https://github.com/ryz310))
45
+ - [#1156](https://github.com/ryz310/my_api_client/pull/1156) Enable PR CI for external contributors and split release workflow ([@ryz310](https://github.com/ryz310))
46
+ - [#1157](https://github.com/ryz310/my_api_client/pull/1157) Fix Dependabot auto-merge workflow in non-checkout context ([@ryz310](https://github.com/ryz310))
47
+ - [#1158](https://github.com/ryz310/my_api_client/pull/1158) Consolidate Dependabot config and remove redundant rails_app files ([@ryz310](https://github.com/ryz310))
48
+ - [#1175](https://github.com/ryz310/my_api_client/pull/1175) Adjust Dependabot auto-merge conditions for rails_app ([@ryz310](https://github.com/ryz310))
49
+ - [#1177](https://github.com/ryz310/my_api_client/pull/1177) Add runbook for Dependabot PR auto-merge workflow ([@ryz310](https://github.com/ryz310))
50
+ - [#1178](https://github.com/ryz310/my_api_client/pull/1178) Refine dependabot auto-merge runbook procedure ([@ryz310](https://github.com/ryz310))
51
+ - [#1179](https://github.com/ryz310/my_api_client/pull/1179) docs: clarify Dependabot rebase retry procedure ([@ryz310](https://github.com/ryz310))
52
+ - [#1180](https://github.com/ryz310/my_api_client/pull/1180) docs: complete README WIP sections and refine wording ([@ryz310](https://github.com/ryz310))
53
+ - [#1181](https://github.com/ryz310/my_api_client/pull/1181) Consolidate README docs and remove README.jp.md ([@ryz310](https://github.com/ryz310))
54
+ - [#1187](https://github.com/ryz310/my_api_client/pull/1187) Split Dependabot auto-merge logic by ecosystem ([@ryz310](https://github.com/ryz310))
55
+ - [#1308](https://github.com/ryz310/my_api_client/pull/1308) Switch release workflow to RubyGems Trusted Publishing ([@ryz310](https://github.com/ryz310))
56
+
3
57
  ## v1.3.1 (Jun 10, 2025)
4
58
 
5
59
  ### Misc
@@ -411,10 +465,8 @@ See: https://github.com/ryz310/my_api_client/blob/master/lib/my_api_client/defau
411
465
  ### Feature
412
466
 
413
467
  - [#220](https://github.com/ryz310/my_api_client/pull/220) Pageable HTTP request ([@ryz310](https://github.com/ryz310))
414
-
415
468
  - Add `#pageable_get` method (alias: `#pget`)
416
469
  - For example:
417
-
418
470
  - API client definition
419
471
 
420
472
  ```ruby
data/CLAUDE.md ADDED
@@ -0,0 +1,6 @@
1
+ # CLAUDE.md
2
+
3
+ This project shares its agent instructions across tools. Claude Code follows the
4
+ same guidelines documented for Codex in `AGENTS.md`.
5
+
6
+ @AGENTS.md
data/Dockerfile ADDED
@@ -0,0 +1,22 @@
1
+ # syntax=docker/dockerfile:1
2
+
3
+ ARG RUBY_VERSION=3.2.9
4
+ FROM ruby:${RUBY_VERSION}-slim
5
+
6
+ WORKDIR /app
7
+
8
+ RUN apt-get update -qq && \
9
+ apt-get install --no-install-recommends -y build-essential git && \
10
+ rm -rf /var/lib/apt/lists /var/cache/apt/archives
11
+
12
+ ENV BUNDLE_PATH=/usr/local/bundle \
13
+ BUNDLE_JOBS=4 \
14
+ BUNDLE_RETRY=3
15
+
16
+ RUN gem install bundler -v "~> 2.0"
17
+
18
+ COPY . /app
19
+
20
+ RUN bundle install
21
+
22
+ CMD ["bash"]
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ source 'https://rubygems.org'
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
7
  group :integrations, optional: true do
8
- gem 'bugsnag', '>= 6.11.0'
8
+ gem 'bugsnag', '>= 6.19.0'
9
9
  end
10
10
 
11
11
  # Specify your gem's dependencies in my_api_client.gemspec
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- my_api_client (1.3.1)
5
- activesupport (>= 6.1.0)
4
+ my_api_client (2.0.0)
5
+ activesupport (>= 7.2.0)
6
6
  faraday (>= 0.17.1)
7
7
  jsonpath
8
8
  sawyer (>= 0.8.2)
@@ -10,118 +10,126 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activesupport (7.2.2.1)
13
+ activesupport (8.1.3)
14
14
  base64
15
- benchmark (>= 0.3)
16
15
  bigdecimal
17
16
  concurrent-ruby (~> 1.0, >= 1.3.1)
18
17
  connection_pool (>= 2.2.5)
19
18
  drb
20
19
  i18n (>= 1.6, < 2)
20
+ json
21
21
  logger (>= 1.4.2)
22
22
  minitest (>= 5.1)
23
23
  securerandom (>= 0.3)
24
24
  tzinfo (~> 2.0, >= 2.0.5)
25
- addressable (2.8.7)
26
- public_suffix (>= 2.0.2, < 7.0)
25
+ uri (>= 0.13.1)
26
+ addressable (2.9.0)
27
+ public_suffix (>= 2.0.2, < 8.0)
27
28
  ast (2.4.3)
28
29
  base64 (0.3.0)
29
- benchmark (0.4.1)
30
- bigdecimal (3.2.2)
31
- bugsnag (6.27.1)
30
+ bigdecimal (4.1.2)
31
+ bugsnag (6.30.0)
32
32
  concurrent-ruby (~> 1.0)
33
- byebug (12.0.0)
33
+ byebug (13.0.0)
34
+ reline (>= 0.6.0)
34
35
  coderay (1.1.3)
35
- concurrent-ruby (1.3.5)
36
- connection_pool (2.5.3)
37
- crack (1.0.0)
36
+ concurrent-ruby (1.3.8)
37
+ connection_pool (3.0.2)
38
+ crack (1.0.1)
38
39
  bigdecimal
39
40
  rexml
40
41
  diff-lcs (1.6.2)
41
42
  docile (1.4.1)
42
43
  drb (2.2.3)
43
- faraday (2.13.1)
44
+ faraday (2.14.3)
44
45
  faraday-net_http (>= 2.0, < 3.5)
45
46
  json
46
47
  logger
47
- faraday-net_http (3.4.0)
48
- net-http (>= 0.5.0)
49
- hashdiff (1.2.0)
50
- i18n (1.14.7)
48
+ faraday-net_http (3.4.4)
49
+ net-http (~> 0.5)
50
+ hashdiff (1.2.1)
51
+ i18n (1.15.2)
51
52
  concurrent-ruby (~> 1.0)
52
- json (2.12.2)
53
+ io-console (0.8.2)
54
+ json (2.21.1)
53
55
  jsonpath (1.1.5)
54
56
  multi_json
55
- language_server-protocol (3.17.0.5)
57
+ language_server-protocol (3.17.0.6)
56
58
  lint_roller (1.1.0)
57
59
  logger (1.7.0)
58
60
  method_source (1.1.0)
59
- minitest (5.25.5)
60
- multi_json (1.15.0)
61
- net-http (0.6.0)
62
- uri
63
- parallel (1.27.0)
64
- parser (3.3.8.0)
61
+ minitest (6.0.6)
62
+ drb (~> 2.0)
63
+ prism (~> 1.5)
64
+ multi_json (1.21.1)
65
+ net-http (0.9.1)
66
+ uri (>= 0.11.1)
67
+ parallel (1.28.0)
68
+ parser (3.3.12.0)
65
69
  ast (~> 2.4.1)
66
70
  racc
67
- prism (1.4.0)
68
- pry (0.15.2)
71
+ prism (1.9.0)
72
+ pry (0.16.0)
69
73
  coderay (~> 1.1)
70
74
  method_source (~> 1.0)
71
- pry-byebug (3.11.0)
72
- byebug (~> 12.0)
73
- pry (>= 0.13, < 0.16)
74
- public_suffix (6.0.2)
75
+ reline (>= 0.6.0)
76
+ pry-byebug (3.12.0)
77
+ byebug (~> 13.0)
78
+ pry (>= 0.13, < 0.17)
79
+ public_suffix (7.0.5)
75
80
  racc (1.8.1)
76
81
  rainbow (3.1.1)
77
- rake (13.3.0)
78
- regexp_parser (2.10.0)
79
- rexml (3.4.1)
80
- rspec (3.13.1)
82
+ rake (13.4.2)
83
+ regexp_parser (2.12.0)
84
+ reline (0.6.3)
85
+ io-console (~> 0.5)
86
+ rexml (3.4.4)
87
+ rspec (3.13.2)
81
88
  rspec-core (~> 3.13.0)
82
89
  rspec-expectations (~> 3.13.0)
83
90
  rspec-mocks (~> 3.13.0)
84
- rspec-core (3.13.4)
91
+ rspec-core (3.13.6)
85
92
  rspec-support (~> 3.13.0)
86
93
  rspec-expectations (3.13.5)
87
94
  diff-lcs (>= 1.2.0, < 2.0)
88
95
  rspec-support (~> 3.13.0)
89
- rspec-mocks (3.13.5)
96
+ rspec-mocks (3.13.8)
90
97
  diff-lcs (>= 1.2.0, < 2.0)
91
98
  rspec-support (~> 3.13.0)
92
- rspec-support (3.13.4)
99
+ rspec-support (3.13.7)
93
100
  rspec_junit_formatter (0.6.0)
94
101
  rspec-core (>= 2, < 4, != 2.12.0)
95
- rubocop (1.76.1)
102
+ rubocop (1.88.2)
96
103
  json (~> 2.3)
97
104
  language_server-protocol (~> 3.17.0.2)
98
105
  lint_roller (~> 1.1.0)
99
- parallel (~> 1.10)
106
+ parallel (>= 1.10)
100
107
  parser (>= 3.3.0.2)
101
108
  rainbow (>= 2.2.2, < 4.0)
102
109
  regexp_parser (>= 2.9.3, < 3.0)
103
- rubocop-ast (>= 1.45.0, < 2.0)
110
+ rubocop-ast (>= 1.49.0, < 2.0)
104
111
  ruby-progressbar (~> 1.7)
105
112
  unicode-display_width (>= 2.4.0, < 4.0)
106
- rubocop-ast (1.45.1)
113
+ rubocop-ast (1.50.0)
107
114
  parser (>= 3.3.7.2)
108
- prism (~> 1.4)
109
- rubocop-performance (1.25.0)
115
+ prism (~> 1.7)
116
+ rubocop-performance (1.26.1)
110
117
  lint_roller (~> 1.1)
111
118
  rubocop (>= 1.75.0, < 2.0)
112
- rubocop-ast (>= 1.38.0, < 2.0)
119
+ rubocop-ast (>= 1.47.1, < 2.0)
113
120
  rubocop-rake (0.7.1)
114
121
  lint_roller (~> 1.1)
115
122
  rubocop (>= 1.72.1)
116
- rubocop-rspec (3.6.0)
123
+ rubocop-rspec (3.10.2)
117
124
  lint_roller (~> 1.1)
118
- rubocop (~> 1.72, >= 1.72.1)
119
- rubocop-rspec_rails (2.31.0)
125
+ regexp_parser (>= 2.0)
126
+ rubocop (~> 1.86, >= 1.86.2)
127
+ rubocop-rspec_rails (2.32.0)
120
128
  lint_roller (~> 1.1)
121
129
  rubocop (~> 1.72, >= 1.72.1)
122
130
  rubocop-rspec (~> 3.5)
123
131
  ruby-progressbar (1.13.0)
124
- sawyer (0.9.2)
132
+ sawyer (0.9.3)
125
133
  addressable (>= 2.3.5)
126
134
  faraday (>= 0.17.3, < 3)
127
135
  securerandom (0.4.1)
@@ -129,25 +137,25 @@ GEM
129
137
  docile (~> 1.1)
130
138
  simplecov-html (~> 0.11)
131
139
  simplecov_json_formatter (~> 0.1)
132
- simplecov-html (0.13.1)
140
+ simplecov-html (0.13.2)
133
141
  simplecov_json_formatter (0.1.4)
134
142
  tzinfo (2.0.6)
135
143
  concurrent-ruby (~> 1.0)
136
- unicode-display_width (3.1.4)
137
- unicode-emoji (~> 4.0, >= 4.0.4)
138
- unicode-emoji (4.0.4)
139
- uri (1.0.3)
140
- webmock (3.25.1)
144
+ unicode-display_width (3.2.0)
145
+ unicode-emoji (~> 4.1)
146
+ unicode-emoji (4.2.0)
147
+ uri (1.1.1)
148
+ webmock (3.26.2)
141
149
  addressable (>= 2.8.0)
142
150
  crack (>= 0.3.2)
143
151
  hashdiff (>= 0.4.0, < 2.0.0)
144
- yard (0.9.37)
152
+ yard (0.9.45)
145
153
 
146
154
  PLATFORMS
147
155
  ruby
148
156
 
149
157
  DEPENDENCIES
150
- bugsnag (>= 6.11.0)
158
+ bugsnag (>= 6.19.0)
151
159
  bundler (>= 2.0)
152
160
  my_api_client!
153
161
  pry-byebug
@@ -164,4 +172,4 @@ DEPENDENCIES
164
172
  yard
165
173
 
166
174
  BUNDLED WITH
167
- 2.6.9
175
+ 4.0.16