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
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- my_api_client (1.1.0)
5
- activesupport (>= 6.1.0)
4
+ my_api_client (1.3.1)
5
+ activesupport (>= 7.2.0)
6
6
  faraday (>= 0.17.1)
7
7
  jsonpath
8
8
  sawyer (>= 0.8.2)
@@ -10,108 +10,118 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actioncable (7.2.1)
14
- actionpack (= 7.2.1)
15
- activesupport (= 7.2.1)
13
+ actioncable (7.2.3.1)
14
+ actionpack (= 7.2.3.1)
15
+ activesupport (= 7.2.3.1)
16
16
  nio4r (~> 2.0)
17
17
  websocket-driver (>= 0.6.1)
18
18
  zeitwerk (~> 2.6)
19
- actionmailbox (7.2.1)
20
- actionpack (= 7.2.1)
21
- activejob (= 7.2.1)
22
- activerecord (= 7.2.1)
23
- activestorage (= 7.2.1)
24
- activesupport (= 7.2.1)
19
+ actionmailbox (7.2.3.1)
20
+ actionpack (= 7.2.3.1)
21
+ activejob (= 7.2.3.1)
22
+ activerecord (= 7.2.3.1)
23
+ activestorage (= 7.2.3.1)
24
+ activesupport (= 7.2.3.1)
25
25
  mail (>= 2.8.0)
26
- actionmailer (7.2.1)
27
- actionpack (= 7.2.1)
28
- actionview (= 7.2.1)
29
- activejob (= 7.2.1)
30
- activesupport (= 7.2.1)
26
+ actionmailer (7.2.3.1)
27
+ actionpack (= 7.2.3.1)
28
+ actionview (= 7.2.3.1)
29
+ activejob (= 7.2.3.1)
30
+ activesupport (= 7.2.3.1)
31
31
  mail (>= 2.8.0)
32
32
  rails-dom-testing (~> 2.2)
33
- actionpack (7.2.1)
34
- actionview (= 7.2.1)
35
- activesupport (= 7.2.1)
33
+ actionpack (7.2.3.1)
34
+ actionview (= 7.2.3.1)
35
+ activesupport (= 7.2.3.1)
36
+ cgi
36
37
  nokogiri (>= 1.8.5)
37
38
  racc
38
- rack (>= 2.2.4, < 3.2)
39
+ rack (>= 2.2.4, < 3.3)
39
40
  rack-session (>= 1.0.1)
40
41
  rack-test (>= 0.6.3)
41
42
  rails-dom-testing (~> 2.2)
42
43
  rails-html-sanitizer (~> 1.6)
43
44
  useragent (~> 0.16)
44
- actiontext (7.2.1)
45
- actionpack (= 7.2.1)
46
- activerecord (= 7.2.1)
47
- activestorage (= 7.2.1)
48
- activesupport (= 7.2.1)
45
+ actiontext (7.2.3.1)
46
+ actionpack (= 7.2.3.1)
47
+ activerecord (= 7.2.3.1)
48
+ activestorage (= 7.2.3.1)
49
+ activesupport (= 7.2.3.1)
49
50
  globalid (>= 0.6.0)
50
51
  nokogiri (>= 1.8.5)
51
- actionview (7.2.1)
52
- activesupport (= 7.2.1)
52
+ actionview (7.2.3.1)
53
+ activesupport (= 7.2.3.1)
53
54
  builder (~> 3.1)
55
+ cgi
54
56
  erubi (~> 1.11)
55
57
  rails-dom-testing (~> 2.2)
56
58
  rails-html-sanitizer (~> 1.6)
57
- activejob (7.2.1)
58
- activesupport (= 7.2.1)
59
+ activejob (7.2.3.1)
60
+ activesupport (= 7.2.3.1)
59
61
  globalid (>= 0.3.6)
60
- activemodel (7.2.1)
61
- activesupport (= 7.2.1)
62
- activerecord (7.2.1)
63
- activemodel (= 7.2.1)
64
- activesupport (= 7.2.1)
62
+ activemodel (7.2.3.1)
63
+ activesupport (= 7.2.3.1)
64
+ activerecord (7.2.3.1)
65
+ activemodel (= 7.2.3.1)
66
+ activesupport (= 7.2.3.1)
65
67
  timeout (>= 0.4.0)
66
- activestorage (7.2.1)
67
- actionpack (= 7.2.1)
68
- activejob (= 7.2.1)
69
- activerecord (= 7.2.1)
70
- activesupport (= 7.2.1)
68
+ activestorage (7.2.3.1)
69
+ actionpack (= 7.2.3.1)
70
+ activejob (= 7.2.3.1)
71
+ activerecord (= 7.2.3.1)
72
+ activesupport (= 7.2.3.1)
71
73
  marcel (~> 1.0)
72
- activesupport (7.2.1)
74
+ activesupport (7.2.3.1)
73
75
  base64
76
+ benchmark (>= 0.3)
74
77
  bigdecimal
75
78
  concurrent-ruby (~> 1.0, >= 1.3.1)
76
79
  connection_pool (>= 2.2.5)
77
80
  drb
78
81
  i18n (>= 1.6, < 2)
79
82
  logger (>= 1.4.2)
80
- minitest (>= 5.1)
83
+ minitest (>= 5.1, < 6)
81
84
  securerandom (>= 0.3)
82
85
  tzinfo (~> 2.0, >= 2.0.5)
83
- addressable (2.8.7)
84
- public_suffix (>= 2.0.2, < 7.0)
85
- base64 (0.2.0)
86
- bigdecimal (3.1.8)
86
+ addressable (2.8.8)
87
+ public_suffix (>= 2.0.2, < 8.0)
88
+ base64 (0.3.0)
89
+ benchmark (0.5.0)
90
+ bigdecimal (4.0.1)
87
91
  builder (3.3.0)
88
- concurrent-ruby (1.3.4)
89
- connection_pool (2.4.1)
92
+ cgi (0.5.2)
93
+ concurrent-ruby (1.3.6)
94
+ connection_pool (3.0.2)
90
95
  crass (1.0.6)
91
- date (3.3.4)
92
- debug (1.9.2)
96
+ date (3.5.1)
97
+ debug (1.11.1)
93
98
  irb (~> 1.10)
94
99
  reline (>= 0.3.8)
95
- diff-lcs (1.5.1)
96
- drb (2.2.1)
97
- erubi (1.13.0)
98
- faraday (2.11.0)
99
- faraday-net_http (>= 2.0, < 3.4)
100
+ diff-lcs (1.6.2)
101
+ drb (2.2.3)
102
+ erb (6.0.2)
103
+ erubi (1.13.1)
104
+ faraday (2.14.3)
105
+ faraday-net_http (>= 2.0, < 3.5)
106
+ json
100
107
  logger
101
- faraday-net_http (3.3.0)
102
- net-http
108
+ faraday-net_http (3.4.4)
109
+ net-http (~> 0.5)
103
110
  globalid (1.2.1)
104
111
  activesupport (>= 6.1)
105
- i18n (1.14.5)
112
+ i18n (1.14.8)
106
113
  concurrent-ruby (~> 1.0)
107
- io-console (0.7.2)
108
- irb (1.14.0)
114
+ io-console (0.8.2)
115
+ irb (1.17.0)
116
+ pp (>= 0.6.0)
117
+ prism (>= 1.3.0)
109
118
  rdoc (>= 4.0.0)
110
119
  reline (>= 0.4.2)
120
+ json (2.20.0)
111
121
  jsonpath (1.1.5)
112
122
  multi_json
113
- logger (1.6.1)
114
- loofah (2.22.0)
123
+ logger (1.7.0)
124
+ loofah (2.25.1)
115
125
  crass (~> 1.0.2)
116
126
  nokogiri (>= 1.12.0)
117
127
  mail (2.8.1)
@@ -121,11 +131,11 @@ GEM
121
131
  net-smtp
122
132
  marcel (1.0.4)
123
133
  mini_mime (1.1.5)
124
- minitest (5.25.1)
134
+ minitest (5.27.0)
125
135
  multi_json (1.15.0)
126
- net-http (0.4.1)
127
- uri
128
- net-imap (0.4.16)
136
+ net-http (0.9.1)
137
+ uri (>= 0.11.1)
138
+ net-imap (0.4.20)
129
139
  date
130
140
  net-protocol
131
141
  net-pop (0.1.2)
@@ -134,100 +144,111 @@ GEM
134
144
  timeout
135
145
  net-smtp (0.5.0)
136
146
  net-protocol
137
- nio4r (2.7.3)
138
- nokogiri (1.16.7-x86_64-darwin)
147
+ nio4r (2.7.5)
148
+ nokogiri (1.19.2-x86_64-darwin)
139
149
  racc (~> 1.4)
140
- nokogiri (1.16.7-x86_64-linux)
150
+ nokogiri (1.19.2-x86_64-linux-gnu)
141
151
  racc (~> 1.4)
142
- psych (5.1.2)
152
+ pp (0.6.3)
153
+ prettyprint
154
+ prettyprint (0.2.0)
155
+ prism (1.9.0)
156
+ psych (5.3.1)
157
+ date
143
158
  stringio
144
- public_suffix (6.0.1)
145
- puma (6.4.2)
159
+ public_suffix (7.0.2)
160
+ puma (7.2.0)
146
161
  nio4r (~> 2.0)
147
162
  racc (1.8.1)
148
- rack (3.1.7)
149
- rack-session (2.0.0)
163
+ rack (3.2.5)
164
+ rack-session (2.1.1)
165
+ base64 (>= 0.1.0)
150
166
  rack (>= 3.0.0)
151
- rack-test (2.1.0)
167
+ rack-test (2.2.0)
152
168
  rack (>= 1.3)
153
- rackup (2.1.0)
169
+ rackup (2.3.1)
154
170
  rack (>= 3)
155
- webrick (~> 1.8)
156
- rails (7.2.1)
157
- actioncable (= 7.2.1)
158
- actionmailbox (= 7.2.1)
159
- actionmailer (= 7.2.1)
160
- actionpack (= 7.2.1)
161
- actiontext (= 7.2.1)
162
- actionview (= 7.2.1)
163
- activejob (= 7.2.1)
164
- activemodel (= 7.2.1)
165
- activerecord (= 7.2.1)
166
- activestorage (= 7.2.1)
167
- activesupport (= 7.2.1)
171
+ rails (7.2.3.1)
172
+ actioncable (= 7.2.3.1)
173
+ actionmailbox (= 7.2.3.1)
174
+ actionmailer (= 7.2.3.1)
175
+ actionpack (= 7.2.3.1)
176
+ actiontext (= 7.2.3.1)
177
+ actionview (= 7.2.3.1)
178
+ activejob (= 7.2.3.1)
179
+ activemodel (= 7.2.3.1)
180
+ activerecord (= 7.2.3.1)
181
+ activestorage (= 7.2.3.1)
182
+ activesupport (= 7.2.3.1)
168
183
  bundler (>= 1.15.0)
169
- railties (= 7.2.1)
170
- rails-dom-testing (2.2.0)
184
+ railties (= 7.2.3.1)
185
+ rails-dom-testing (2.3.0)
171
186
  activesupport (>= 5.0.0)
172
187
  minitest
173
188
  nokogiri (>= 1.6)
174
- rails-html-sanitizer (1.6.0)
175
- loofah (~> 2.21)
176
- nokogiri (~> 1.14)
177
- railties (7.2.1)
178
- actionpack (= 7.2.1)
179
- activesupport (= 7.2.1)
189
+ rails-html-sanitizer (1.7.0)
190
+ loofah (~> 2.25)
191
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
192
+ railties (7.2.3.1)
193
+ actionpack (= 7.2.3.1)
194
+ activesupport (= 7.2.3.1)
195
+ cgi
180
196
  irb (~> 1.13)
181
197
  rackup (>= 1.0.0)
182
198
  rake (>= 12.2)
183
199
  thor (~> 1.0, >= 1.2.2)
200
+ tsort (>= 0.2)
184
201
  zeitwerk (~> 2.6)
185
- rake (13.2.1)
186
- rdoc (6.7.0)
202
+ rake (13.4.2)
203
+ rdoc (7.2.0)
204
+ erb
187
205
  psych (>= 4.0.0)
188
- reline (0.5.10)
206
+ tsort
207
+ reline (0.6.3)
189
208
  io-console (~> 0.5)
190
- rspec-core (3.13.1)
209
+ rspec-core (3.13.6)
191
210
  rspec-support (~> 3.13.0)
192
- rspec-expectations (3.13.2)
211
+ rspec-expectations (3.13.5)
193
212
  diff-lcs (>= 1.2.0, < 2.0)
194
213
  rspec-support (~> 3.13.0)
195
- rspec-mocks (3.13.1)
214
+ rspec-mocks (3.13.8)
196
215
  diff-lcs (>= 1.2.0, < 2.0)
197
216
  rspec-support (~> 3.13.0)
198
- rspec-rails (7.0.1)
199
- actionpack (>= 7.0)
200
- activesupport (>= 7.0)
201
- railties (>= 7.0)
202
- rspec-core (~> 3.13)
203
- rspec-expectations (~> 3.13)
204
- rspec-mocks (~> 3.13)
205
- rspec-support (~> 3.13)
206
- rspec-support (3.13.1)
207
- sawyer (0.9.2)
217
+ rspec-rails (8.0.4)
218
+ actionpack (>= 7.2)
219
+ activesupport (>= 7.2)
220
+ railties (>= 7.2)
221
+ rspec-core (>= 3.13.0, < 5.0.0)
222
+ rspec-expectations (>= 3.13.0, < 5.0.0)
223
+ rspec-mocks (>= 3.13.0, < 5.0.0)
224
+ rspec-support (>= 3.13.0, < 5.0.0)
225
+ rspec-support (3.13.7)
226
+ sawyer (0.9.3)
208
227
  addressable (>= 2.3.5)
209
228
  faraday (>= 0.17.3, < 3)
210
- securerandom (0.3.1)
211
- sqlite3 (2.0.4-x86_64-darwin)
212
- sqlite3 (2.0.4-x86_64-linux-gnu)
213
- stringio (3.1.1)
214
- thor (1.3.2)
215
- timeout (0.4.1)
229
+ securerandom (0.4.1)
230
+ sqlite3 (2.9.5-x86_64-darwin)
231
+ sqlite3 (2.9.5-x86_64-linux-gnu)
232
+ stringio (3.2.0)
233
+ thor (1.5.0)
234
+ timeout (0.6.0)
235
+ tsort (0.2.0)
216
236
  tzinfo (2.0.6)
217
237
  concurrent-ruby (~> 1.0)
218
- uri (0.13.1)
219
- useragent (0.16.10)
220
- webrick (1.8.1)
238
+ uri (1.1.1)
239
+ useragent (0.16.11)
221
240
  websocket-driver (0.7.6)
222
241
  websocket-extensions (>= 0.1.0)
223
242
  websocket-extensions (0.1.5)
224
- zeitwerk (2.6.18)
243
+ zeitwerk (2.7.5)
225
244
 
226
245
  PLATFORMS
227
246
  x86_64-darwin-23
228
247
  x86_64-linux
229
248
 
230
249
  DEPENDENCIES
250
+ benchmark
251
+ cgi
231
252
  debug
232
253
  my_api_client!
233
254
  puma (>= 5.0)
@@ -2,13 +2,13 @@
2
2
 
3
3
  # Ignore git directory.
4
4
  /.git/
5
+ /.gitignore
5
6
 
6
7
  # Ignore bundler config.
7
8
  /.bundle
8
9
 
9
- # Ignore all environment files (except templates).
10
+ # Ignore all environment files.
10
11
  /.env*
11
- !/.env*.erb
12
12
 
13
13
  # Ignore all default key files.
14
14
  /config/master.key
@@ -29,3 +29,17 @@
29
29
  !/storage/.keep
30
30
  /tmp/storage/*
31
31
  !/tmp/storage/.keep
32
+
33
+ # Ignore CI service files.
34
+ /.github
35
+
36
+ # Ignore Kamal files.
37
+ /config/deploy*.yml
38
+ /.kamal
39
+
40
+ # Ignore development files
41
+ /.devcontainer
42
+
43
+ # Ignore Docker-related files
44
+ /.dockerignore
45
+ /Dockerfile*
@@ -3,6 +3,7 @@
3
3
  # Mark the database schema as having been generated.
4
4
  db/schema.rb linguist-generated
5
5
 
6
-
7
6
  # Mark any vendored files as having been vendored.
8
7
  vendor/* linguist-vendored
8
+ config/credentials/*.yml.enc diff=rails_credentials
9
+ config/credentials.yml.enc diff=rails_credentials
@@ -0,0 +1,39 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [ main ]
7
+
8
+ jobs:
9
+ scan_ruby:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v4
15
+
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: .ruby-version
20
+ bundler-cache: true
21
+
22
+ - name: Scan for common Rails security vulnerabilities using static analysis
23
+ run: bin/brakeman --no-pager
24
+
25
+ lint:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - name: Checkout code
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Set up Ruby
32
+ uses: ruby/setup-ruby@v1
33
+ with:
34
+ ruby-version: .ruby-version
35
+ bundler-cache: true
36
+
37
+ - name: Lint code for consistent style
38
+ run: bin/rubocop -f github
39
+
@@ -1,15 +1,14 @@
1
1
  # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
2
  #
3
- # If you find yourself ignoring temporary files generated by your text editor
4
- # or operating system, you probably want to add a global ignore instead:
5
- # git config --global core.excludesfile '~/.gitignore_global'
3
+ # Temporary files generated by your text editor or operating system
4
+ # belong in git's global ignore instead:
5
+ # `$XDG_CONFIG_HOME/git/ignore` or `~/.config/git/ignore`
6
6
 
7
7
  # Ignore bundler config.
8
8
  /.bundle
9
9
 
10
- # Ignore the default SQLite database.
11
- /db/*.sqlite3
12
- /db/*.sqlite3-*
10
+ # Ignore all environment files.
11
+ /.env*
13
12
 
14
13
  # Ignore all logfiles and tempfiles.
15
14
  /log/*
@@ -22,7 +21,12 @@
22
21
  !/tmp/pids/
23
22
  !/tmp/pids/.keep
24
23
 
25
- .byebug_history
24
+ # Ignore storage (uploaded files in development and any SQLite databases).
25
+ /storage/*
26
+ !/storage/.keep
27
+ /tmp/storage/*
28
+ !/tmp/storage/
29
+ !/tmp/storage/.keep
26
30
 
27
31
  # Ignore master key for decrypting credentials and more.
28
32
  /config/master.key
@@ -0,0 +1,8 @@
1
+ # Omakase Ruby styling for Rails
2
+ inherit_gem: { rubocop-rails-omakase: rubocop.yml }
3
+
4
+ # Overwrite or add rules to create your own house style
5
+ #
6
+ # # Use `[a, [b, c]]` not `[ a, [ b, c ] ]`
7
+ # Layout/SpaceInsideArrayLiteralBrackets:
8
+ # Enabled: false
@@ -0,0 +1 @@
1
+ ruby-3.2.9
@@ -1,25 +1,37 @@
1
- # syntax = docker/dockerfile:1
1
+ # syntax=docker/dockerfile:1
2
+ # check=error=true
2
3
 
3
- # Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
4
- ARG RUBY_VERSION=3.1.6
5
- FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim as base
4
+ # This Dockerfile is designed for production, not development. Use with Kamal or build'n'run by hand:
5
+ # docker build -t rails80 .
6
+ # docker run -d -p 80:80 -e RAILS_MASTER_KEY=<value from config/master.key> --name rails80 rails80
7
+
8
+ # For a containerized dev environment, see Dev Containers: https://guides.rubyonrails.org/getting_started_with_devcontainer.html
9
+
10
+ # Make sure RUBY_VERSION matches the Ruby version in .ruby-version
11
+ ARG RUBY_VERSION=3.2.9
12
+ FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base
6
13
 
7
14
  # Rails app lives here
8
15
  WORKDIR /rails
9
16
 
17
+ # Install base packages
18
+ RUN apt-get update -qq && \
19
+ apt-get install --no-install-recommends -y curl libjemalloc2 libvips sqlite3 && \
20
+ rm -rf /var/lib/apt/lists /var/cache/apt/archives
21
+
10
22
  # Set production environment
11
23
  ENV RAILS_ENV="production" \
12
24
  BUNDLE_DEPLOYMENT="1" \
13
25
  BUNDLE_PATH="/usr/local/bundle" \
14
26
  BUNDLE_WITHOUT="development"
15
27
 
16
-
17
28
  # Throw-away build stage to reduce size of final image
18
- FROM base as build
29
+ FROM base AS build
19
30
 
20
31
  # Install packages needed to build gems
21
32
  RUN apt-get update -qq && \
22
- apt-get install --no-install-recommends -y build-essential git pkg-config
33
+ apt-get install --no-install-recommends -y build-essential git libyaml-dev pkg-config && \
34
+ rm -rf /var/lib/apt/lists /var/cache/apt/archives
23
35
 
24
36
  # Install application gems
25
37
  COPY Gemfile Gemfile.lock ./
@@ -30,26 +42,24 @@ RUN bundle install && \
30
42
  COPY . .
31
43
 
32
44
 
45
+
46
+
33
47
  # Final stage for app image
34
48
  FROM base
35
49
 
36
- # Install packages needed for deployment
37
- RUN apt-get update -qq && \
38
- apt-get install --no-install-recommends -y curl libsqlite3-0 && \
39
- rm -rf /var/lib/apt/lists /var/cache/apt/archives
40
-
41
50
  # Copy built artifacts: gems, application
42
- COPY --from=build /usr/local/bundle /usr/local/bundle
51
+ COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}"
43
52
  COPY --from=build /rails /rails
44
53
 
45
54
  # Run and own only the runtime files as a non-root user for security
46
- RUN useradd rails --create-home --shell /bin/bash && \
55
+ RUN groupadd --system --gid 1000 rails && \
56
+ useradd rails --uid 1000 --gid 1000 --create-home --shell /bin/bash && \
47
57
  chown -R rails:rails db log storage tmp
48
- USER rails:rails
58
+ USER 1000:1000
49
59
 
50
60
  # Entrypoint prepares the database.
51
61
  ENTRYPOINT ["/rails/bin/docker-entrypoint"]
52
62
 
53
- # Start the server by default, this can be overwritten at runtime
54
- EXPOSE 3000
55
- CMD ["./bin/rails", "server"]
63
+ # Start server via Thruster by default, this can be overwritten at runtime
64
+ EXPOSE 80
65
+ CMD ["./bin/thrust", "./bin/rails", "server"]
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 8.0.4'
4
+ gem 'sqlite3', '>= 2.1'
5
+ gem 'puma', '>= 5.0'
6
+ gem 'tzinfo-data', platforms: %i[windows jruby]
7
+
8
+ gem 'my_api_client', path: '../..'
9
+ gem 'benchmark'
10
+ gem 'cgi'
11
+
12
+ group :development, :test do
13
+ gem 'debug', platforms: %i[mri windows], require: 'debug/prelude'
14
+ gem 'rspec-rails'
15
+ end