itsi 0.1.6 → 0.1.8

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 (239) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +49 -0
  3. data/Rakefile +20 -0
  4. data/crates/itsi_error/src/from.rs +26 -29
  5. data/crates/itsi_error/src/lib.rs +1 -1
  6. data/crates/itsi_server/Cargo.lock +2956 -0
  7. data/crates/itsi_server/Cargo.toml +2 -1
  8. data/crates/itsi_server/src/env.rs +43 -0
  9. data/crates/itsi_server/src/lib.rs +1 -0
  10. data/crates/itsi_server/src/request/itsi_request.rs +7 -7
  11. data/crates/itsi_server/src/server/bind.rs +4 -3
  12. data/crates/itsi_server/src/server/itsi_server.rs +1 -8
  13. data/crates/itsi_server/src/server/listener.rs +98 -107
  14. data/crates/itsi_server/src/server/serve_strategy/single_mode.rs +22 -12
  15. data/crates/itsi_server/src/server/tls/locked_dir_cache.rs +3 -3
  16. data/crates/itsi_server/src/server/tls.rs +83 -44
  17. data/gems/scheduler/ext/itsi_error/src/from.rs +26 -29
  18. data/gems/scheduler/ext/itsi_error/src/lib.rs +1 -1
  19. data/gems/scheduler/ext/itsi_server/Cargo.lock +2956 -0
  20. data/gems/scheduler/ext/itsi_server/Cargo.toml +2 -1
  21. data/gems/scheduler/ext/itsi_server/src/env.rs +43 -0
  22. data/gems/scheduler/ext/itsi_server/src/lib.rs +1 -0
  23. data/gems/scheduler/ext/itsi_server/src/request/itsi_request.rs +7 -7
  24. data/gems/scheduler/ext/itsi_server/src/server/bind.rs +4 -3
  25. data/gems/scheduler/ext/itsi_server/src/server/itsi_server.rs +1 -8
  26. data/gems/scheduler/ext/itsi_server/src/server/listener.rs +98 -107
  27. data/gems/scheduler/ext/itsi_server/src/server/serve_strategy/single_mode.rs +22 -12
  28. data/gems/scheduler/ext/itsi_server/src/server/tls/locked_dir_cache.rs +3 -3
  29. data/gems/scheduler/ext/itsi_server/src/server/tls.rs +83 -44
  30. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  31. data/gems/server/Cargo.lock +2917 -0
  32. data/gems/server/Cargo.toml +7 -0
  33. data/gems/server/ext/itsi_error/src/from.rs +26 -29
  34. data/gems/server/ext/itsi_error/src/lib.rs +1 -1
  35. data/gems/server/ext/itsi_server/Cargo.lock +2956 -0
  36. data/gems/server/ext/itsi_server/Cargo.toml +2 -1
  37. data/gems/server/ext/itsi_server/src/env.rs +43 -0
  38. data/gems/server/ext/itsi_server/src/lib.rs +1 -0
  39. data/gems/server/ext/itsi_server/src/request/itsi_request.rs +7 -7
  40. data/gems/server/ext/itsi_server/src/server/bind.rs +4 -3
  41. data/gems/server/ext/itsi_server/src/server/itsi_server.rs +1 -8
  42. data/gems/server/ext/itsi_server/src/server/listener.rs +98 -107
  43. data/gems/server/ext/itsi_server/src/server/serve_strategy/single_mode.rs +22 -12
  44. data/gems/server/ext/itsi_server/src/server/tls/locked_dir_cache.rs +3 -3
  45. data/gems/server/ext/itsi_server/src/server/tls.rs +83 -44
  46. data/gems/server/lib/itsi/index.html.erb +91 -0
  47. data/gems/server/lib/itsi/server/scheduler_mode.rb +1 -1
  48. data/gems/server/lib/itsi/server/version.rb +1 -1
  49. data/gems/server/lib/itsi/server.rb +22 -2
  50. data/lib/itsi/version.rb +1 -1
  51. data/sandbox/deploy/main.tf +237 -0
  52. data/sandbox/deploy/outputs.tf +4 -0
  53. data/sandbox/deploy/vars.tf +11 -0
  54. data/sandbox/falcon_benchmark/Gemfile +10 -0
  55. data/sandbox/falcon_benchmark/Gemfile.lock +140 -0
  56. data/sandbox/falcon_benchmark/config.ru +54 -0
  57. data/sandbox/itsi_sandbox_async/Gemfile +10 -0
  58. data/sandbox/itsi_sandbox_async/Gemfile.lock +69 -0
  59. data/sandbox/itsi_sandbox_async/config.ru +10 -0
  60. data/sandbox/itsi_sandbox_hanami/.env +2 -0
  61. data/sandbox/itsi_sandbox_hanami/.gitignore +6 -0
  62. data/sandbox/itsi_sandbox_hanami/.rspec +1 -0
  63. data/sandbox/itsi_sandbox_hanami/Gemfile +49 -0
  64. data/sandbox/itsi_sandbox_hanami/Gemfile.lock +440 -0
  65. data/sandbox/itsi_sandbox_hanami/Guardfile +9 -0
  66. data/sandbox/itsi_sandbox_hanami/Procfile.dev +2 -0
  67. data/sandbox/itsi_sandbox_hanami/README.md +1 -0
  68. data/sandbox/itsi_sandbox_hanami/Rakefile +3 -0
  69. data/sandbox/itsi_sandbox_hanami/app/action.rb +12 -0
  70. data/sandbox/itsi_sandbox_hanami/app/actions/.keep +0 -0
  71. data/sandbox/itsi_sandbox_hanami/app/assets/css/app.css +5 -0
  72. data/sandbox/itsi_sandbox_hanami/app/assets/images/favicon.ico +0 -0
  73. data/sandbox/itsi_sandbox_hanami/app/assets/js/app.js +1 -0
  74. data/sandbox/itsi_sandbox_hanami/app/db/relation.rb +10 -0
  75. data/sandbox/itsi_sandbox_hanami/app/db/repo.rb +10 -0
  76. data/sandbox/itsi_sandbox_hanami/app/db/struct.rb +10 -0
  77. data/sandbox/itsi_sandbox_hanami/app/operation.rb +9 -0
  78. data/sandbox/itsi_sandbox_hanami/app/relations/.keep +0 -0
  79. data/sandbox/itsi_sandbox_hanami/app/repos/.keep +0 -0
  80. data/sandbox/itsi_sandbox_hanami/app/structs/.keep +0 -0
  81. data/sandbox/itsi_sandbox_hanami/app/templates/layouts/app.html.erb +14 -0
  82. data/sandbox/itsi_sandbox_hanami/app/view.rb +9 -0
  83. data/sandbox/itsi_sandbox_hanami/app/views/helpers.rb +10 -0
  84. data/sandbox/itsi_sandbox_hanami/bin/dev +8 -0
  85. data/sandbox/itsi_sandbox_hanami/config/app.rb +8 -0
  86. data/sandbox/itsi_sandbox_hanami/config/assets.js +16 -0
  87. data/sandbox/itsi_sandbox_hanami/config/db/migrate/.keep +0 -0
  88. data/sandbox/itsi_sandbox_hanami/config/db/seeds.rb +15 -0
  89. data/sandbox/itsi_sandbox_hanami/config/puma.rb +47 -0
  90. data/sandbox/itsi_sandbox_hanami/config/routes.rb +7 -0
  91. data/sandbox/itsi_sandbox_hanami/config/settings.rb +9 -0
  92. data/sandbox/itsi_sandbox_hanami/config.ru +5 -0
  93. data/sandbox/itsi_sandbox_hanami/db/.keep +0 -0
  94. data/sandbox/itsi_sandbox_hanami/lib/itsi_hanami/types.rb +11 -0
  95. data/sandbox/itsi_sandbox_hanami/lib/tasks/.keep +0 -0
  96. data/sandbox/itsi_sandbox_hanami/package-lock.json +946 -0
  97. data/sandbox/itsi_sandbox_hanami/package.json +8 -0
  98. data/sandbox/itsi_sandbox_hanami/spec/requests/root_spec.rb +11 -0
  99. data/sandbox/itsi_sandbox_hanami/spec/spec_helper.rb +9 -0
  100. data/sandbox/itsi_sandbox_hanami/spec/support/db/cleaning.rb +42 -0
  101. data/sandbox/itsi_sandbox_hanami/spec/support/db.rb +10 -0
  102. data/sandbox/itsi_sandbox_hanami/spec/support/features.rb +5 -0
  103. data/sandbox/itsi_sandbox_hanami/spec/support/operations.rb +8 -0
  104. data/sandbox/itsi_sandbox_hanami/spec/support/requests.rb +13 -0
  105. data/sandbox/itsi_sandbox_hanami/spec/support/rspec.rb +61 -0
  106. data/sandbox/itsi_sandbox_rack/Gemfile +17 -0
  107. data/sandbox/itsi_sandbox_rack/Gemfile.lock +153 -0
  108. data/sandbox/itsi_sandbox_rack/config.ru +18 -0
  109. data/sandbox/itsi_sandbox_rack_lint/Gemfile +7 -0
  110. data/sandbox/itsi_sandbox_rack_lint/Gemfile.lock +27 -0
  111. data/sandbox/itsi_sandbox_rack_lint/config.ru +3 -0
  112. data/sandbox/itsi_sandbox_rails/.dockerignore +51 -0
  113. data/sandbox/itsi_sandbox_rails/.gitattributes +9 -0
  114. data/sandbox/itsi_sandbox_rails/.github/dependabot.yml +12 -0
  115. data/sandbox/itsi_sandbox_rails/.github/workflows/ci.yml +90 -0
  116. data/sandbox/itsi_sandbox_rails/.gitignore +34 -0
  117. data/sandbox/itsi_sandbox_rails/.kamal/hooks/docker-setup.sample +3 -0
  118. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-app-boot.sample +3 -0
  119. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-deploy.sample +14 -0
  120. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-proxy-reboot.sample +3 -0
  121. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-app-boot.sample +3 -0
  122. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-build.sample +51 -0
  123. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-connect.sample +47 -0
  124. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-deploy.sample +109 -0
  125. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-proxy-reboot.sample +3 -0
  126. data/sandbox/itsi_sandbox_rails/.kamal/secrets +17 -0
  127. data/sandbox/itsi_sandbox_rails/.rubocop.yml +8 -0
  128. data/sandbox/itsi_sandbox_rails/.ruby-version +1 -0
  129. data/sandbox/itsi_sandbox_rails/Dockerfile +72 -0
  130. data/sandbox/itsi_sandbox_rails/Gemfile +72 -0
  131. data/sandbox/itsi_sandbox_rails/Gemfile.lock +480 -0
  132. data/sandbox/itsi_sandbox_rails/README.md +24 -0
  133. data/sandbox/itsi_sandbox_rails/Rakefile +6 -0
  134. data/sandbox/itsi_sandbox_rails/app/assets/images/.keep +0 -0
  135. data/sandbox/itsi_sandbox_rails/app/assets/stylesheets/application.css +10 -0
  136. data/sandbox/itsi_sandbox_rails/app/controllers/application_controller.rb +4 -0
  137. data/sandbox/itsi_sandbox_rails/app/controllers/concerns/.keep +0 -0
  138. data/sandbox/itsi_sandbox_rails/app/controllers/home_controller.rb +51 -0
  139. data/sandbox/itsi_sandbox_rails/app/controllers/live_controller.rb +41 -0
  140. data/sandbox/itsi_sandbox_rails/app/controllers/uploads_controller.rb +32 -0
  141. data/sandbox/itsi_sandbox_rails/app/helpers/application_helper.rb +2 -0
  142. data/sandbox/itsi_sandbox_rails/app/javascript/application.js +3 -0
  143. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/application.js +9 -0
  144. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/hello_controller.js +7 -0
  145. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/index.js +4 -0
  146. data/sandbox/itsi_sandbox_rails/app/jobs/application_job.rb +7 -0
  147. data/sandbox/itsi_sandbox_rails/app/mailers/application_mailer.rb +4 -0
  148. data/sandbox/itsi_sandbox_rails/app/models/application_record.rb +3 -0
  149. data/sandbox/itsi_sandbox_rails/app/models/concerns/.keep +0 -0
  150. data/sandbox/itsi_sandbox_rails/app/models/post.rb +2 -0
  151. data/sandbox/itsi_sandbox_rails/app/views/layouts/application.html.erb +28 -0
  152. data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.html.erb +13 -0
  153. data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.text.erb +1 -0
  154. data/sandbox/itsi_sandbox_rails/app/views/pwa/manifest.json.erb +22 -0
  155. data/sandbox/itsi_sandbox_rails/app/views/pwa/service-worker.js +26 -0
  156. data/sandbox/itsi_sandbox_rails/bin/brakeman +7 -0
  157. data/sandbox/itsi_sandbox_rails/bin/bundle +109 -0
  158. data/sandbox/itsi_sandbox_rails/bin/dev +2 -0
  159. data/sandbox/itsi_sandbox_rails/bin/docker-entrypoint +14 -0
  160. data/sandbox/itsi_sandbox_rails/bin/importmap +4 -0
  161. data/sandbox/itsi_sandbox_rails/bin/jobs +6 -0
  162. data/sandbox/itsi_sandbox_rails/bin/kamal +27 -0
  163. data/sandbox/itsi_sandbox_rails/bin/rails +4 -0
  164. data/sandbox/itsi_sandbox_rails/bin/rake +4 -0
  165. data/sandbox/itsi_sandbox_rails/bin/rubocop +8 -0
  166. data/sandbox/itsi_sandbox_rails/bin/setup +34 -0
  167. data/sandbox/itsi_sandbox_rails/bin/thrust +5 -0
  168. data/sandbox/itsi_sandbox_rails/config/application.rb +61 -0
  169. data/sandbox/itsi_sandbox_rails/config/boot.rb +4 -0
  170. data/sandbox/itsi_sandbox_rails/config/cable.yml +17 -0
  171. data/sandbox/itsi_sandbox_rails/config/cache.yml +16 -0
  172. data/sandbox/itsi_sandbox_rails/config/credentials.yml.enc +1 -0
  173. data/sandbox/itsi_sandbox_rails/config/database.yml +40 -0
  174. data/sandbox/itsi_sandbox_rails/config/deploy.yml +116 -0
  175. data/sandbox/itsi_sandbox_rails/config/environment.rb +5 -0
  176. data/sandbox/itsi_sandbox_rails/config/environments/development.rb +72 -0
  177. data/sandbox/itsi_sandbox_rails/config/environments/production.rb +90 -0
  178. data/sandbox/itsi_sandbox_rails/config/environments/test.rb +53 -0
  179. data/sandbox/itsi_sandbox_rails/config/importmap.rb +7 -0
  180. data/sandbox/itsi_sandbox_rails/config/initializers/assets.rb +7 -0
  181. data/sandbox/itsi_sandbox_rails/config/initializers/content_security_policy.rb +25 -0
  182. data/sandbox/itsi_sandbox_rails/config/initializers/filter_parameter_logging.rb +8 -0
  183. data/sandbox/itsi_sandbox_rails/config/initializers/inflections.rb +16 -0
  184. data/sandbox/itsi_sandbox_rails/config/locales/en.yml +31 -0
  185. data/sandbox/itsi_sandbox_rails/config/puma.rb +41 -0
  186. data/sandbox/itsi_sandbox_rails/config/queue.yml +18 -0
  187. data/sandbox/itsi_sandbox_rails/config/recurring.yml +10 -0
  188. data/sandbox/itsi_sandbox_rails/config/routes.rb +21 -0
  189. data/sandbox/itsi_sandbox_rails/config/storage.yml +34 -0
  190. data/sandbox/itsi_sandbox_rails/config.ru +7 -0
  191. data/sandbox/itsi_sandbox_rails/db/cable_schema.rb +11 -0
  192. data/sandbox/itsi_sandbox_rails/db/cache_schema.rb +14 -0
  193. data/sandbox/itsi_sandbox_rails/db/migrate/20250301041554_create_posts.rb +10 -0
  194. data/sandbox/itsi_sandbox_rails/db/queue_schema.rb +129 -0
  195. data/sandbox/itsi_sandbox_rails/db/schema.rb +23 -0
  196. data/sandbox/itsi_sandbox_rails/db/seeds.rb +9 -0
  197. data/sandbox/itsi_sandbox_rails/lib/tasks/.keep +0 -0
  198. data/sandbox/itsi_sandbox_rails/log/.keep +0 -0
  199. data/sandbox/itsi_sandbox_rails/public/400.html +114 -0
  200. data/sandbox/itsi_sandbox_rails/public/404.html +114 -0
  201. data/sandbox/itsi_sandbox_rails/public/406-unsupported-browser.html +114 -0
  202. data/sandbox/itsi_sandbox_rails/public/422.html +114 -0
  203. data/sandbox/itsi_sandbox_rails/public/500.html +114 -0
  204. data/sandbox/itsi_sandbox_rails/public/icon.png +0 -0
  205. data/sandbox/itsi_sandbox_rails/public/icon.svg +3 -0
  206. data/sandbox/itsi_sandbox_rails/public/robots.txt +1 -0
  207. data/sandbox/itsi_sandbox_rails/script/.keep +0 -0
  208. data/sandbox/itsi_sandbox_rails/storage/.keep +0 -0
  209. data/sandbox/itsi_sandbox_rails/test/application_system_test_case.rb +5 -0
  210. data/sandbox/itsi_sandbox_rails/test/controllers/.keep +0 -0
  211. data/sandbox/itsi_sandbox_rails/test/fixtures/files/.keep +0 -0
  212. data/sandbox/itsi_sandbox_rails/test/fixtures/posts.yml +9 -0
  213. data/sandbox/itsi_sandbox_rails/test/helpers/.keep +0 -0
  214. data/sandbox/itsi_sandbox_rails/test/integration/.keep +0 -0
  215. data/sandbox/itsi_sandbox_rails/test/mailers/.keep +0 -0
  216. data/sandbox/itsi_sandbox_rails/test/models/.keep +0 -0
  217. data/sandbox/itsi_sandbox_rails/test/models/post_test.rb +7 -0
  218. data/sandbox/itsi_sandbox_rails/test/system/.keep +0 -0
  219. data/sandbox/itsi_sandbox_rails/test/test_helper.rb +15 -0
  220. data/sandbox/itsi_sandbox_rails/tmp/.keep +0 -0
  221. data/sandbox/itsi_sandbox_rails/tmp/pids/.keep +0 -0
  222. data/sandbox/itsi_sandbox_rails/tmp/storage/.keep +0 -0
  223. data/sandbox/itsi_sandbox_rails/vendor/.keep +0 -0
  224. data/sandbox/itsi_sandbox_rails/vendor/javascript/.keep +0 -0
  225. data/sandbox/itsi_sandbox_roda/Gemfile +5 -0
  226. data/sandbox/itsi_sandbox_roda/Gemfile.lock +44 -0
  227. data/sandbox/itsi_sandbox_roda/config.ru +39 -0
  228. data/sandbox/itsi_sinatra/Gemfile +9 -0
  229. data/sandbox/itsi_sinatra/Gemfile.lock +81 -0
  230. data/sandbox/itsi_sinatra/app.rb +9 -0
  231. data/sandbox/pebble/docker-compose.yml +11 -0
  232. data/tasks.txt +10 -4
  233. metadata +196 -12
  234. data/crates/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -13
  235. data/crates/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -5
  236. data/gems/scheduler/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -13
  237. data/gems/scheduler/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -5
  238. data/gems/server/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -13
  239. data/gems/server/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -5
@@ -0,0 +1,480 @@
1
+ PATH
2
+ remote: ../../../osprey_scheduler
3
+ specs:
4
+ osprey_scheduler (0.1.0)
5
+ async (= 2.21.1)
6
+ rb_sys (~> 0.9.91)
7
+
8
+ PATH
9
+ remote: ../../gems/scheduler
10
+ specs:
11
+ itsi-scheduler (0.1.7)
12
+ rb_sys (~> 0.9.91)
13
+
14
+ PATH
15
+ remote: ../../gems/server
16
+ specs:
17
+ itsi-server (0.1.7)
18
+ rack (>= 1.6)
19
+ rb_sys (~> 0.9.91)
20
+
21
+ GEM
22
+ remote: https://rubygems.org/
23
+ specs:
24
+ actioncable (8.0.1)
25
+ actionpack (= 8.0.1)
26
+ activesupport (= 8.0.1)
27
+ nio4r (~> 2.0)
28
+ websocket-driver (>= 0.6.1)
29
+ zeitwerk (~> 2.6)
30
+ actionmailbox (8.0.1)
31
+ actionpack (= 8.0.1)
32
+ activejob (= 8.0.1)
33
+ activerecord (= 8.0.1)
34
+ activestorage (= 8.0.1)
35
+ activesupport (= 8.0.1)
36
+ mail (>= 2.8.0)
37
+ actionmailer (8.0.1)
38
+ actionpack (= 8.0.1)
39
+ actionview (= 8.0.1)
40
+ activejob (= 8.0.1)
41
+ activesupport (= 8.0.1)
42
+ mail (>= 2.8.0)
43
+ rails-dom-testing (~> 2.2)
44
+ actionpack (8.0.1)
45
+ actionview (= 8.0.1)
46
+ activesupport (= 8.0.1)
47
+ nokogiri (>= 1.8.5)
48
+ rack (>= 2.2.4)
49
+ rack-session (>= 1.0.1)
50
+ rack-test (>= 0.6.3)
51
+ rails-dom-testing (~> 2.2)
52
+ rails-html-sanitizer (~> 1.6)
53
+ useragent (~> 0.16)
54
+ actiontext (8.0.1)
55
+ actionpack (= 8.0.1)
56
+ activerecord (= 8.0.1)
57
+ activestorage (= 8.0.1)
58
+ activesupport (= 8.0.1)
59
+ globalid (>= 0.6.0)
60
+ nokogiri (>= 1.8.5)
61
+ actionview (8.0.1)
62
+ activesupport (= 8.0.1)
63
+ builder (~> 3.1)
64
+ erubi (~> 1.11)
65
+ rails-dom-testing (~> 2.2)
66
+ rails-html-sanitizer (~> 1.6)
67
+ activejob (8.0.1)
68
+ activesupport (= 8.0.1)
69
+ globalid (>= 0.3.6)
70
+ activemodel (8.0.1)
71
+ activesupport (= 8.0.1)
72
+ activerecord (8.0.1)
73
+ activemodel (= 8.0.1)
74
+ activesupport (= 8.0.1)
75
+ timeout (>= 0.4.0)
76
+ activestorage (8.0.1)
77
+ actionpack (= 8.0.1)
78
+ activejob (= 8.0.1)
79
+ activerecord (= 8.0.1)
80
+ activesupport (= 8.0.1)
81
+ marcel (~> 1.0)
82
+ activesupport (8.0.1)
83
+ base64
84
+ benchmark (>= 0.3)
85
+ bigdecimal
86
+ concurrent-ruby (~> 1.0, >= 1.3.1)
87
+ connection_pool (>= 2.2.5)
88
+ drb
89
+ i18n (>= 1.6, < 2)
90
+ logger (>= 1.4.2)
91
+ minitest (>= 5.1)
92
+ securerandom (>= 0.3)
93
+ tzinfo (~> 2.0, >= 2.0.5)
94
+ uri (>= 0.13.1)
95
+ addressable (2.8.7)
96
+ public_suffix (>= 2.0.2, < 7.0)
97
+ ast (2.4.2)
98
+ async (2.21.1)
99
+ console (~> 1.29)
100
+ fiber-annotation
101
+ io-event (~> 1.6, >= 1.6.5)
102
+ async-container (0.19.0)
103
+ async (~> 2.10)
104
+ async-http (0.87.0)
105
+ async (>= 2.10.2)
106
+ async-pool (~> 0.9)
107
+ io-endpoint (~> 0.14)
108
+ io-stream (~> 0.6)
109
+ metrics (~> 0.12)
110
+ protocol-http (~> 0.49)
111
+ protocol-http1 (~> 0.30)
112
+ protocol-http2 (~> 0.22)
113
+ traces (~> 0.10)
114
+ async-http-cache (0.4.5)
115
+ async-http (~> 0.56)
116
+ async-pool (0.10.3)
117
+ async (>= 1.25)
118
+ async-service (0.12.0)
119
+ async
120
+ async-container (~> 0.16)
121
+ base64 (0.2.0)
122
+ bcrypt_pbkdf (1.1.1)
123
+ benchmark (0.4.0)
124
+ bigdecimal (3.1.9)
125
+ bindex (0.8.1)
126
+ bootsnap (1.18.4)
127
+ msgpack (~> 1.2)
128
+ brakeman (7.0.0)
129
+ racc
130
+ builder (3.3.0)
131
+ capybara (3.40.0)
132
+ addressable
133
+ matrix
134
+ mini_mime (>= 0.1.3)
135
+ nokogiri (~> 1.11)
136
+ rack (>= 1.6.0)
137
+ rack-test (>= 0.6.3)
138
+ regexp_parser (>= 1.5, < 3.0)
139
+ xpath (~> 3.2)
140
+ concurrent-ruby (1.3.5)
141
+ connection_pool (2.5.0)
142
+ console (1.29.3)
143
+ fiber-annotation
144
+ fiber-local (~> 1.1)
145
+ json
146
+ crass (1.0.6)
147
+ date (3.4.1)
148
+ debug (1.10.0)
149
+ irb (~> 1.10)
150
+ reline (>= 0.3.8)
151
+ dotenv (3.1.7)
152
+ drb (2.2.1)
153
+ ed25519 (1.3.0)
154
+ erubi (1.13.1)
155
+ et-orbi (1.2.11)
156
+ tzinfo
157
+ falcon (0.48.6)
158
+ async
159
+ async-container (~> 0.18)
160
+ async-http (~> 0.75)
161
+ async-http-cache (~> 0.4)
162
+ async-service (~> 0.10)
163
+ bundler
164
+ localhost (~> 1.1)
165
+ openssl (~> 3.0)
166
+ process-metrics (~> 0.2)
167
+ protocol-http (~> 0.31)
168
+ protocol-rack (~> 0.7)
169
+ samovar (~> 2.3)
170
+ fiber-annotation (0.2.0)
171
+ fiber-local (1.1.0)
172
+ fiber-storage
173
+ fiber-storage (1.0.0)
174
+ fugit (1.11.1)
175
+ et-orbi (~> 1, >= 1.2.11)
176
+ raabro (~> 1.4)
177
+ globalid (1.2.1)
178
+ activesupport (>= 6.1)
179
+ i18n (1.14.7)
180
+ concurrent-ruby (~> 1.0)
181
+ importmap-rails (2.1.0)
182
+ actionpack (>= 6.0.0)
183
+ activesupport (>= 6.0.0)
184
+ railties (>= 6.0.0)
185
+ io-console (0.8.0)
186
+ io-endpoint (0.15.2)
187
+ io-event (1.9.0)
188
+ io-stream (0.6.1)
189
+ iodine (0.7.58)
190
+ irb (1.15.1)
191
+ pp (>= 0.6.0)
192
+ rdoc (>= 4.0.0)
193
+ reline (>= 0.4.2)
194
+ jbuilder (2.13.0)
195
+ actionview (>= 5.0.0)
196
+ activesupport (>= 5.0.0)
197
+ json (2.10.1)
198
+ kamal (2.5.3)
199
+ activesupport (>= 7.0)
200
+ base64 (~> 0.2)
201
+ bcrypt_pbkdf (~> 1.0)
202
+ concurrent-ruby (~> 1.2)
203
+ dotenv (~> 3.1)
204
+ ed25519 (~> 1.2)
205
+ net-ssh (~> 7.3)
206
+ sshkit (>= 1.23.0, < 2.0)
207
+ thor (~> 1.3)
208
+ zeitwerk (>= 2.6.18, < 3.0)
209
+ language_server-protocol (3.17.0.4)
210
+ lint_roller (1.1.0)
211
+ localhost (1.3.1)
212
+ logger (1.6.6)
213
+ loofah (2.24.0)
214
+ crass (~> 1.0.2)
215
+ nokogiri (>= 1.12.0)
216
+ mail (2.8.1)
217
+ mini_mime (>= 0.1.1)
218
+ net-imap
219
+ net-pop
220
+ net-smtp
221
+ mapping (1.1.1)
222
+ marcel (1.0.4)
223
+ matrix (0.4.2)
224
+ metrics (0.12.2)
225
+ mini_mime (1.1.5)
226
+ minitest (5.25.4)
227
+ msgpack (1.8.0)
228
+ net-imap (0.5.6)
229
+ date
230
+ net-protocol
231
+ net-pop (0.1.2)
232
+ net-protocol
233
+ net-protocol (0.2.2)
234
+ timeout
235
+ net-scp (4.1.0)
236
+ net-ssh (>= 2.6.5, < 8.0.0)
237
+ net-sftp (4.0.0)
238
+ net-ssh (>= 5.0.0, < 8.0.0)
239
+ net-smtp (0.5.1)
240
+ net-protocol
241
+ net-ssh (7.3.0)
242
+ nio4r (2.7.4)
243
+ nokogiri (1.18.3-aarch64-linux-gnu)
244
+ racc (~> 1.4)
245
+ nokogiri (1.18.3-aarch64-linux-musl)
246
+ racc (~> 1.4)
247
+ nokogiri (1.18.3-arm64-darwin)
248
+ racc (~> 1.4)
249
+ nokogiri (1.18.3-x86_64-linux-gnu)
250
+ racc (~> 1.4)
251
+ nokogiri (1.18.3-x86_64-linux-musl)
252
+ racc (~> 1.4)
253
+ openssl (3.3.0)
254
+ ostruct (0.6.1)
255
+ parallel (1.26.3)
256
+ parser (3.3.7.1)
257
+ ast (~> 2.4.1)
258
+ racc
259
+ pg (1.5.9)
260
+ pp (0.6.2)
261
+ prettyprint
262
+ prettyprint (0.2.0)
263
+ process-metrics (0.5.1)
264
+ console (~> 1.8)
265
+ json (~> 2)
266
+ samovar (~> 2.1)
267
+ propshaft (1.1.0)
268
+ actionpack (>= 7.0.0)
269
+ activesupport (>= 7.0.0)
270
+ rack
271
+ railties (>= 7.0.0)
272
+ protocol-hpack (1.5.1)
273
+ protocol-http (0.49.0)
274
+ protocol-http1 (0.30.0)
275
+ protocol-http (~> 0.22)
276
+ protocol-http2 (0.22.1)
277
+ protocol-hpack (~> 1.4)
278
+ protocol-http (~> 0.47)
279
+ protocol-rack (0.11.2)
280
+ protocol-http (~> 0.43)
281
+ rack (>= 1.0)
282
+ psych (5.2.3)
283
+ date
284
+ stringio
285
+ public_suffix (6.0.1)
286
+ puma (6.6.0)
287
+ nio4r (~> 2.0)
288
+ raabro (1.4.0)
289
+ racc (1.8.1)
290
+ rack (2.2.12)
291
+ rack-session (1.0.2)
292
+ rack (< 3)
293
+ rack-test (2.2.0)
294
+ rack (>= 1.3)
295
+ rackup (1.0.1)
296
+ rack (< 3)
297
+ webrick
298
+ rails (8.0.1)
299
+ actioncable (= 8.0.1)
300
+ actionmailbox (= 8.0.1)
301
+ actionmailer (= 8.0.1)
302
+ actionpack (= 8.0.1)
303
+ actiontext (= 8.0.1)
304
+ actionview (= 8.0.1)
305
+ activejob (= 8.0.1)
306
+ activemodel (= 8.0.1)
307
+ activerecord (= 8.0.1)
308
+ activestorage (= 8.0.1)
309
+ activesupport (= 8.0.1)
310
+ bundler (>= 1.15.0)
311
+ railties (= 8.0.1)
312
+ rails-dom-testing (2.2.0)
313
+ activesupport (>= 5.0.0)
314
+ minitest
315
+ nokogiri (>= 1.6)
316
+ rails-html-sanitizer (1.6.2)
317
+ loofah (~> 2.21)
318
+ 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)
319
+ railties (8.0.1)
320
+ actionpack (= 8.0.1)
321
+ activesupport (= 8.0.1)
322
+ irb (~> 1.13)
323
+ rackup (>= 1.0.0)
324
+ rake (>= 12.2)
325
+ thor (~> 1.0, >= 1.2.2)
326
+ zeitwerk (~> 2.6)
327
+ rainbow (3.1.1)
328
+ rake (13.2.1)
329
+ rake-compiler-dock (1.9.1)
330
+ rb_sys (0.9.110)
331
+ rake-compiler-dock (= 1.9.1)
332
+ rdoc (6.12.0)
333
+ psych (>= 4.0.0)
334
+ regexp_parser (2.10.0)
335
+ reline (0.6.0)
336
+ io-console (~> 0.5)
337
+ rexml (3.4.1)
338
+ rubocop (1.73.1)
339
+ json (~> 2.3)
340
+ language_server-protocol (~> 3.17.0.2)
341
+ lint_roller (~> 1.1.0)
342
+ parallel (~> 1.10)
343
+ parser (>= 3.3.0.2)
344
+ rainbow (>= 2.2.2, < 4.0)
345
+ regexp_parser (>= 2.9.3, < 3.0)
346
+ rubocop-ast (>= 1.38.0, < 2.0)
347
+ ruby-progressbar (~> 1.7)
348
+ unicode-display_width (>= 2.4.0, < 4.0)
349
+ rubocop-ast (1.38.1)
350
+ parser (>= 3.3.1.0)
351
+ rubocop-performance (1.24.0)
352
+ lint_roller (~> 1.1)
353
+ rubocop (>= 1.72.1, < 2.0)
354
+ rubocop-ast (>= 1.38.0, < 2.0)
355
+ rubocop-rails (2.30.2)
356
+ activesupport (>= 4.2.0)
357
+ lint_roller (~> 1.1)
358
+ rack (>= 1.1)
359
+ rubocop (>= 1.72.1, < 2.0)
360
+ rubocop-ast (>= 1.38.0, < 2.0)
361
+ rubocop-rails-omakase (1.1.0)
362
+ rubocop (>= 1.72)
363
+ rubocop-performance (>= 1.24)
364
+ rubocop-rails (>= 2.30)
365
+ ruby-progressbar (1.13.0)
366
+ rubyzip (2.4.1)
367
+ samovar (2.3.0)
368
+ console (~> 1.0)
369
+ mapping (~> 1.0)
370
+ securerandom (0.4.1)
371
+ selenium-webdriver (4.29.1)
372
+ base64 (~> 0.2)
373
+ logger (~> 1.4)
374
+ rexml (~> 3.2, >= 3.2.5)
375
+ rubyzip (>= 1.2.2, < 3.0)
376
+ websocket (~> 1.0)
377
+ solid_cable (3.0.7)
378
+ actioncable (>= 7.2)
379
+ activejob (>= 7.2)
380
+ activerecord (>= 7.2)
381
+ railties (>= 7.2)
382
+ solid_cache (1.0.7)
383
+ activejob (>= 7.2)
384
+ activerecord (>= 7.2)
385
+ railties (>= 7.2)
386
+ solid_queue (1.1.3)
387
+ activejob (>= 7.1)
388
+ activerecord (>= 7.1)
389
+ concurrent-ruby (>= 1.3.1)
390
+ fugit (~> 1.11.0)
391
+ railties (>= 7.1)
392
+ thor (~> 1.3.1)
393
+ sqlite3 (2.6.0-aarch64-linux-gnu)
394
+ sqlite3 (2.6.0-aarch64-linux-musl)
395
+ sqlite3 (2.6.0-arm64-darwin)
396
+ sqlite3 (2.6.0-x86_64-linux-gnu)
397
+ sqlite3 (2.6.0-x86_64-linux-musl)
398
+ sshkit (1.24.0)
399
+ base64
400
+ logger
401
+ net-scp (>= 1.1.2)
402
+ net-sftp (>= 2.1.2)
403
+ net-ssh (>= 2.8.0)
404
+ ostruct
405
+ stimulus-rails (1.3.4)
406
+ railties (>= 6.0.0)
407
+ stringio (3.1.5)
408
+ thor (1.3.2)
409
+ thruster (0.1.11)
410
+ thruster (0.1.11-aarch64-linux)
411
+ thruster (0.1.11-arm64-darwin)
412
+ thruster (0.1.11-x86_64-linux)
413
+ timeout (0.4.3)
414
+ traces (0.15.2)
415
+ turbo-rails (2.0.11)
416
+ actionpack (>= 6.0.0)
417
+ railties (>= 6.0.0)
418
+ tzinfo (2.0.6)
419
+ concurrent-ruby (~> 1.0)
420
+ unicode-display_width (3.1.4)
421
+ unicode-emoji (~> 4.0, >= 4.0.4)
422
+ unicode-emoji (4.0.4)
423
+ uri (1.0.3)
424
+ useragent (0.16.11)
425
+ web-console (4.2.1)
426
+ actionview (>= 6.0.0)
427
+ activemodel (>= 6.0.0)
428
+ bindex (>= 0.4.0)
429
+ railties (>= 6.0.0)
430
+ webrick (1.9.1)
431
+ websocket (1.2.11)
432
+ websocket-driver (0.7.7)
433
+ base64
434
+ websocket-extensions (>= 0.1.0)
435
+ websocket-extensions (0.1.5)
436
+ xpath (3.2.0)
437
+ nokogiri (~> 1.8)
438
+ zeitwerk (2.7.2)
439
+
440
+ PLATFORMS
441
+ aarch64-linux
442
+ aarch64-linux-gnu
443
+ aarch64-linux-musl
444
+ arm64-darwin-23
445
+ x86_64-linux
446
+ x86_64-linux-gnu
447
+ x86_64-linux-musl
448
+
449
+ DEPENDENCIES
450
+ async
451
+ bootsnap
452
+ brakeman
453
+ capybara
454
+ debug
455
+ falcon
456
+ importmap-rails
457
+ iodine
458
+ itsi-scheduler!
459
+ itsi-server!
460
+ jbuilder
461
+ kamal
462
+ osprey_scheduler!
463
+ pg
464
+ propshaft
465
+ puma (>= 5.0)
466
+ rails (~> 8.0.1)
467
+ rubocop-rails-omakase
468
+ selenium-webdriver
469
+ solid_cable
470
+ solid_cache
471
+ solid_queue
472
+ sqlite3 (>= 2.1)
473
+ stimulus-rails
474
+ thruster
475
+ turbo-rails
476
+ tzinfo-data
477
+ web-console
478
+
479
+ BUNDLED WITH
480
+ 2.6.3
@@ -0,0 +1,24 @@
1
+ # README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative "config/application"
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,10 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css.
3
+ *
4
+ * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
5
+ * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
6
+ * cascading order, meaning styles declared later in the document or manifest will override earlier ones,
7
+ * depending on specificity.
8
+ *
9
+ * Consider organizing styles into separate files for maintainability.
10
+ */
@@ -0,0 +1,4 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has.
3
+ allow_browser versions: :modern
4
+ end
@@ -0,0 +1,51 @@
1
+ require "net/http"
2
+
3
+ class HomeController < ApplicationController
4
+ def index
5
+ render json: { message: "Hello, World!" }
6
+ end
7
+
8
+ def full_hijack
9
+ io = request.env['rack.hijack'].call
10
+ io.write("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n")
11
+ 10.times do |i|
12
+ sleep 0.25
13
+ io.write("Hello World\r\n")
14
+ end
15
+ io.close
16
+ end
17
+
18
+ def chunked_encoding
19
+ io = request.env['rack.hijack'].call
20
+ io.write("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nTransfer-Encoding: chunked\r\n\r\n")
21
+ 10.times do |i|
22
+ chunk = "Hello World\r\n" * Random.rand(3..10)
23
+ io.write("#{chunk.length.to_s(16)}\r\n#{chunk}\r\n")
24
+ sleep 0.5
25
+ end
26
+ io.write("0\r\n\r\n")
27
+ io.close
28
+ end
29
+
30
+ def io_party
31
+ post = Post.find_or_create_by(name: "Hello World", body: "I made a change. This is a test post")
32
+ ActiveRecord::Base.connection.execute("SELECT * FROM posts;")
33
+ sleep 0.0001
34
+ ActiveRecord::Base.connection.execute("SELECT pg_sleep(0.0001);")
35
+
36
+ queue = Queue.new
37
+ Thread.new do
38
+ sleep 0.0001
39
+ queue.push("done")
40
+ end
41
+ queue.pop
42
+
43
+ Thread.new do
44
+ sleep 0.0001
45
+ end.join
46
+
47
+ result = Net::HTTP.get(URI("https://www.cloudflare.com/cdn-cgi/trace"))
48
+ post.update(name: "I made a change. Hello World", body: "Wow... I think it might be working")
49
+ render json: post.to_json
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ require "net/http"
2
+ require 'debug'
3
+ class LiveController < ApplicationController
4
+ include ActionController::Live
5
+
6
+ def stream
7
+ response.headers['Content-Type'] = 'text/event-stream'
8
+ response.headers["Last-Modified"] = Time.now.httpdate
9
+ i = 0
10
+ loop {
11
+ i += 1
12
+ response.stream.write "hello world #{i}\r\n"
13
+ sleep 0.00005
14
+ }
15
+
16
+ rescue ActionController::Live::ClientDisconnected => e
17
+ puts "Client disconnected"
18
+
19
+ ensure
20
+ puts "Closing stream"
21
+ response.stream.close
22
+ end
23
+
24
+ def sse
25
+ response.headers['Content-Type'] = 'text/event-stream'
26
+ response.headers["Last-Modified"] = Time.now.httpdate
27
+ sse = SSE.new(response.stream, retry: 300, event: "event-name")
28
+ loop do
29
+ sse.write({ name: 'John'})
30
+ sse.write({ name: 'John'}, id: 10)
31
+ sse.write({ name: 'John'}, id: 10, event: "other-event")
32
+ sse.write({ name: 'John'}, id: 10, event: "other-event", retry: 500)
33
+ sleep 0.00005
34
+ end
35
+ rescue ActionController::Live::ClientDisconnected => e
36
+ puts "Client disconnected"
37
+ ensure
38
+ puts "Closing stream"
39
+ sse.close
40
+ end
41
+ end
@@ -0,0 +1,32 @@
1
+ # app/controllers/uploads_controller.rb
2
+ require 'debug'
3
+ class UploadsController < ApplicationController
4
+ # Disable CSRF for this endpoint (for testing only)
5
+ skip_before_action :verify_authenticity_token
6
+
7
+ def body
8
+ puts params
9
+ render plain: params
10
+ end
11
+
12
+ def create
13
+ bb
14
+ uploaded_file = params[:file]
15
+
16
+ if uploaded_file
17
+ metadata = {
18
+ filename: uploaded_file.original_filename,
19
+ content_type: uploaded_file.content_type,
20
+ size: uploaded_file.size,
21
+ # If you want to read the first few bytes (as it comes in)
22
+ head: uploaded_file.read(100)
23
+ }
24
+ # Reset the file pointer if needed:
25
+ uploaded_file.rewind
26
+
27
+ render plain: metadata.to_s
28
+ else
29
+ render plain: "No file uploaded", status: 400
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,3 @@
1
+ // Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
2
+ import "@hotwired/turbo-rails"
3
+ import "controllers"
@@ -0,0 +1,9 @@
1
+ import { Application } from "@hotwired/stimulus"
2
+
3
+ const application = Application.start()
4
+
5
+ // Configure Stimulus development experience
6
+ application.debug = false
7
+ window.Stimulus = application
8
+
9
+ export { application }
@@ -0,0 +1,7 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ export default class extends Controller {
4
+ connect() {
5
+ this.element.textContent = "Hello World!"
6
+ }
7
+ }
@@ -0,0 +1,4 @@
1
+ // Import and register all your controllers from the importmap via controllers/**/*_controller
2
+ import { application } from "controllers/application"
3
+ import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading"
4
+ eagerLoadControllersFrom("controllers", application)
@@ -0,0 +1,7 @@
1
+ class ApplicationJob < ActiveJob::Base
2
+ # Automatically retry jobs that encountered a deadlock
3
+ # retry_on ActiveRecord::Deadlocked
4
+
5
+ # Most jobs are safe to ignore if the underlying records are no longer available
6
+ # discard_on ActiveJob::DeserializationError
7
+ end
@@ -0,0 +1,4 @@
1
+ class ApplicationMailer < ActionMailer::Base
2
+ default from: "from@example.com"
3
+ layout "mailer"
4
+ end