itsi 0.1.7 → 0.1.9

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 (249) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +21 -0
  3. data/crates/itsi_error/src/from.rs +26 -29
  4. data/crates/itsi_server/Cargo.lock +2956 -0
  5. data/crates/itsi_server/Cargo.toml +1 -1
  6. data/crates/itsi_server/src/lib.rs +5 -0
  7. data/crates/itsi_server/src/request/itsi_request.rs +37 -9
  8. data/crates/itsi_server/src/response/itsi_response.rs +12 -2
  9. data/crates/itsi_server/src/server/bind.rs +4 -3
  10. data/crates/itsi_server/src/server/itsi_server.rs +128 -78
  11. data/crates/itsi_server/src/server/listener.rs +98 -107
  12. data/crates/itsi_server/src/server/serve_strategy/single_mode.rs +40 -24
  13. data/crates/itsi_server/src/server/signal.rs +7 -0
  14. data/crates/itsi_server/src/server/thread_worker.rs +3 -4
  15. data/crates/itsi_server/src/server/tls.rs +20 -13
  16. data/crates/itsi_tracing/src/lib.rs +18 -1
  17. data/gems/scheduler/Cargo.lock +12 -12
  18. data/gems/scheduler/ext/itsi_error/src/from.rs +26 -29
  19. data/gems/scheduler/ext/itsi_server/Cargo.lock +2956 -0
  20. data/gems/scheduler/ext/itsi_server/Cargo.toml +1 -1
  21. data/gems/scheduler/ext/itsi_server/src/lib.rs +5 -0
  22. data/gems/scheduler/ext/itsi_server/src/request/itsi_request.rs +37 -9
  23. data/gems/scheduler/ext/itsi_server/src/response/itsi_response.rs +12 -2
  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 +128 -78
  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 +40 -24
  28. data/gems/scheduler/ext/itsi_server/src/server/signal.rs +7 -0
  29. data/gems/scheduler/ext/itsi_server/src/server/thread_worker.rs +3 -4
  30. data/gems/scheduler/ext/itsi_server/src/server/tls.rs +20 -13
  31. data/gems/scheduler/ext/itsi_tracing/src/lib.rs +18 -1
  32. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  33. data/gems/scheduler/test/test_address_resolve.rb +0 -1
  34. data/gems/scheduler/test/test_file_io.rb +0 -1
  35. data/gems/scheduler/test/test_kernel_sleep.rb +3 -4
  36. data/gems/server/Cargo.lock +2917 -0
  37. data/gems/server/Cargo.toml +7 -0
  38. data/gems/server/Rakefile +8 -1
  39. data/gems/server/ext/itsi_error/src/from.rs +26 -29
  40. data/gems/server/ext/itsi_server/Cargo.lock +2956 -0
  41. data/gems/server/ext/itsi_server/Cargo.toml +1 -1
  42. data/gems/server/ext/itsi_server/src/lib.rs +5 -0
  43. data/gems/server/ext/itsi_server/src/request/itsi_request.rs +37 -9
  44. data/gems/server/ext/itsi_server/src/response/itsi_response.rs +12 -2
  45. data/gems/server/ext/itsi_server/src/server/bind.rs +4 -3
  46. data/gems/server/ext/itsi_server/src/server/itsi_server.rs +128 -78
  47. data/gems/server/ext/itsi_server/src/server/listener.rs +98 -107
  48. data/gems/server/ext/itsi_server/src/server/serve_strategy/single_mode.rs +40 -24
  49. data/gems/server/ext/itsi_server/src/server/signal.rs +7 -0
  50. data/gems/server/ext/itsi_server/src/server/thread_worker.rs +3 -4
  51. data/gems/server/ext/itsi_server/src/server/tls.rs +20 -13
  52. data/gems/server/ext/itsi_tracing/src/lib.rs +18 -1
  53. data/gems/server/lib/itsi/index.html +91 -0
  54. data/gems/server/lib/itsi/request.rb +29 -21
  55. data/gems/server/lib/itsi/server/rack/handler/itsi.rb +3 -4
  56. data/gems/server/lib/itsi/server/rack_interface.rb +79 -0
  57. data/gems/server/lib/itsi/server/scheduler_interface.rb +21 -0
  58. data/gems/server/lib/itsi/server/scheduler_mode.rb +1 -1
  59. data/gems/server/lib/itsi/server/signal_trap.rb +24 -0
  60. data/gems/server/lib/itsi/server/version.rb +1 -1
  61. data/gems/server/lib/itsi/server.rb +68 -82
  62. data/gems/server/test/helpers/test_helper.rb +28 -0
  63. data/gems/server/test/test_itsi_server.rb +275 -3
  64. data/lib/itsi/version.rb +1 -1
  65. data/sandbox/deploy/main.tf +238 -0
  66. data/sandbox/deploy/outputs.tf +4 -0
  67. data/sandbox/deploy/vars.tf +11 -0
  68. data/sandbox/falcon_benchmark/Gemfile +10 -0
  69. data/sandbox/falcon_benchmark/Gemfile.lock +140 -0
  70. data/sandbox/falcon_benchmark/config.ru +54 -0
  71. data/sandbox/itsi_sandbox_async/Gemfile +10 -0
  72. data/sandbox/itsi_sandbox_async/Gemfile.lock +69 -0
  73. data/sandbox/itsi_sandbox_async/config.ru +10 -0
  74. data/sandbox/itsi_sandbox_hanami/.env +2 -0
  75. data/sandbox/itsi_sandbox_hanami/.gitignore +6 -0
  76. data/sandbox/itsi_sandbox_hanami/.rspec +1 -0
  77. data/sandbox/itsi_sandbox_hanami/Gemfile +49 -0
  78. data/sandbox/itsi_sandbox_hanami/Gemfile.lock +440 -0
  79. data/sandbox/itsi_sandbox_hanami/Guardfile +9 -0
  80. data/sandbox/itsi_sandbox_hanami/Procfile.dev +2 -0
  81. data/sandbox/itsi_sandbox_hanami/README.md +1 -0
  82. data/sandbox/itsi_sandbox_hanami/Rakefile +3 -0
  83. data/sandbox/itsi_sandbox_hanami/app/action.rb +12 -0
  84. data/sandbox/itsi_sandbox_hanami/app/actions/.keep +0 -0
  85. data/sandbox/itsi_sandbox_hanami/app/assets/css/app.css +5 -0
  86. data/sandbox/itsi_sandbox_hanami/app/assets/images/favicon.ico +0 -0
  87. data/sandbox/itsi_sandbox_hanami/app/assets/js/app.js +1 -0
  88. data/sandbox/itsi_sandbox_hanami/app/db/relation.rb +10 -0
  89. data/sandbox/itsi_sandbox_hanami/app/db/repo.rb +10 -0
  90. data/sandbox/itsi_sandbox_hanami/app/db/struct.rb +10 -0
  91. data/sandbox/itsi_sandbox_hanami/app/operation.rb +9 -0
  92. data/sandbox/itsi_sandbox_hanami/app/relations/.keep +0 -0
  93. data/sandbox/itsi_sandbox_hanami/app/repos/.keep +0 -0
  94. data/sandbox/itsi_sandbox_hanami/app/structs/.keep +0 -0
  95. data/sandbox/itsi_sandbox_hanami/app/templates/layouts/app.html.erb +14 -0
  96. data/sandbox/itsi_sandbox_hanami/app/view.rb +9 -0
  97. data/sandbox/itsi_sandbox_hanami/app/views/helpers.rb +10 -0
  98. data/sandbox/itsi_sandbox_hanami/bin/dev +8 -0
  99. data/sandbox/itsi_sandbox_hanami/config/app.rb +8 -0
  100. data/sandbox/itsi_sandbox_hanami/config/assets.js +16 -0
  101. data/sandbox/itsi_sandbox_hanami/config/db/migrate/.keep +0 -0
  102. data/sandbox/itsi_sandbox_hanami/config/db/seeds.rb +15 -0
  103. data/sandbox/itsi_sandbox_hanami/config/puma.rb +47 -0
  104. data/sandbox/itsi_sandbox_hanami/config/routes.rb +7 -0
  105. data/sandbox/itsi_sandbox_hanami/config/settings.rb +9 -0
  106. data/sandbox/itsi_sandbox_hanami/config.ru +5 -0
  107. data/sandbox/itsi_sandbox_hanami/db/.keep +0 -0
  108. data/sandbox/itsi_sandbox_hanami/lib/itsi_hanami/types.rb +11 -0
  109. data/sandbox/itsi_sandbox_hanami/lib/tasks/.keep +0 -0
  110. data/sandbox/itsi_sandbox_hanami/package-lock.json +946 -0
  111. data/sandbox/itsi_sandbox_hanami/package.json +8 -0
  112. data/sandbox/itsi_sandbox_hanami/spec/requests/root_spec.rb +11 -0
  113. data/sandbox/itsi_sandbox_hanami/spec/spec_helper.rb +9 -0
  114. data/sandbox/itsi_sandbox_hanami/spec/support/db/cleaning.rb +42 -0
  115. data/sandbox/itsi_sandbox_hanami/spec/support/db.rb +10 -0
  116. data/sandbox/itsi_sandbox_hanami/spec/support/features.rb +5 -0
  117. data/sandbox/itsi_sandbox_hanami/spec/support/operations.rb +8 -0
  118. data/sandbox/itsi_sandbox_hanami/spec/support/requests.rb +13 -0
  119. data/sandbox/itsi_sandbox_hanami/spec/support/rspec.rb +61 -0
  120. data/sandbox/itsi_sandbox_rack/Gemfile +17 -0
  121. data/sandbox/itsi_sandbox_rack/Gemfile.lock +153 -0
  122. data/sandbox/itsi_sandbox_rack/config.ru +18 -0
  123. data/sandbox/itsi_sandbox_rack_lint/Gemfile +7 -0
  124. data/sandbox/itsi_sandbox_rack_lint/Gemfile.lock +27 -0
  125. data/sandbox/itsi_sandbox_rack_lint/config.ru +3 -0
  126. data/sandbox/itsi_sandbox_rails/.dockerignore +51 -0
  127. data/sandbox/itsi_sandbox_rails/.gitattributes +9 -0
  128. data/sandbox/itsi_sandbox_rails/.github/dependabot.yml +12 -0
  129. data/sandbox/itsi_sandbox_rails/.github/workflows/ci.yml +90 -0
  130. data/sandbox/itsi_sandbox_rails/.gitignore +34 -0
  131. data/sandbox/itsi_sandbox_rails/.kamal/hooks/docker-setup.sample +3 -0
  132. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-app-boot.sample +3 -0
  133. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-deploy.sample +14 -0
  134. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-proxy-reboot.sample +3 -0
  135. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-app-boot.sample +3 -0
  136. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-build.sample +51 -0
  137. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-connect.sample +47 -0
  138. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-deploy.sample +109 -0
  139. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-proxy-reboot.sample +3 -0
  140. data/sandbox/itsi_sandbox_rails/.kamal/secrets +17 -0
  141. data/sandbox/itsi_sandbox_rails/.rubocop.yml +8 -0
  142. data/sandbox/itsi_sandbox_rails/.ruby-version +1 -0
  143. data/sandbox/itsi_sandbox_rails/Dockerfile +72 -0
  144. data/sandbox/itsi_sandbox_rails/Gemfile +72 -0
  145. data/sandbox/itsi_sandbox_rails/Gemfile.lock +480 -0
  146. data/sandbox/itsi_sandbox_rails/README.md +24 -0
  147. data/sandbox/itsi_sandbox_rails/Rakefile +6 -0
  148. data/sandbox/itsi_sandbox_rails/app/assets/images/.keep +0 -0
  149. data/sandbox/itsi_sandbox_rails/app/assets/stylesheets/application.css +10 -0
  150. data/sandbox/itsi_sandbox_rails/app/controllers/application_controller.rb +4 -0
  151. data/sandbox/itsi_sandbox_rails/app/controllers/concerns/.keep +0 -0
  152. data/sandbox/itsi_sandbox_rails/app/controllers/home_controller.rb +51 -0
  153. data/sandbox/itsi_sandbox_rails/app/controllers/live_controller.rb +41 -0
  154. data/sandbox/itsi_sandbox_rails/app/controllers/uploads_controller.rb +32 -0
  155. data/sandbox/itsi_sandbox_rails/app/helpers/application_helper.rb +2 -0
  156. data/sandbox/itsi_sandbox_rails/app/javascript/application.js +3 -0
  157. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/application.js +9 -0
  158. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/hello_controller.js +7 -0
  159. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/index.js +4 -0
  160. data/sandbox/itsi_sandbox_rails/app/jobs/application_job.rb +7 -0
  161. data/sandbox/itsi_sandbox_rails/app/mailers/application_mailer.rb +4 -0
  162. data/sandbox/itsi_sandbox_rails/app/models/application_record.rb +3 -0
  163. data/sandbox/itsi_sandbox_rails/app/models/concerns/.keep +0 -0
  164. data/sandbox/itsi_sandbox_rails/app/models/post.rb +2 -0
  165. data/sandbox/itsi_sandbox_rails/app/views/layouts/application.html.erb +28 -0
  166. data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.html.erb +13 -0
  167. data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.text.erb +1 -0
  168. data/sandbox/itsi_sandbox_rails/app/views/pwa/manifest.json.erb +22 -0
  169. data/sandbox/itsi_sandbox_rails/app/views/pwa/service-worker.js +26 -0
  170. data/sandbox/itsi_sandbox_rails/bin/brakeman +7 -0
  171. data/sandbox/itsi_sandbox_rails/bin/bundle +109 -0
  172. data/sandbox/itsi_sandbox_rails/bin/dev +2 -0
  173. data/sandbox/itsi_sandbox_rails/bin/docker-entrypoint +14 -0
  174. data/sandbox/itsi_sandbox_rails/bin/importmap +4 -0
  175. data/sandbox/itsi_sandbox_rails/bin/jobs +6 -0
  176. data/sandbox/itsi_sandbox_rails/bin/kamal +27 -0
  177. data/sandbox/itsi_sandbox_rails/bin/rails +4 -0
  178. data/sandbox/itsi_sandbox_rails/bin/rake +4 -0
  179. data/sandbox/itsi_sandbox_rails/bin/rubocop +8 -0
  180. data/sandbox/itsi_sandbox_rails/bin/setup +34 -0
  181. data/sandbox/itsi_sandbox_rails/bin/thrust +5 -0
  182. data/sandbox/itsi_sandbox_rails/config/application.rb +61 -0
  183. data/sandbox/itsi_sandbox_rails/config/boot.rb +4 -0
  184. data/sandbox/itsi_sandbox_rails/config/cable.yml +17 -0
  185. data/sandbox/itsi_sandbox_rails/config/cache.yml +16 -0
  186. data/sandbox/itsi_sandbox_rails/config/credentials.yml.enc +1 -0
  187. data/sandbox/itsi_sandbox_rails/config/database.yml +40 -0
  188. data/sandbox/itsi_sandbox_rails/config/deploy.yml +116 -0
  189. data/sandbox/itsi_sandbox_rails/config/environment.rb +5 -0
  190. data/sandbox/itsi_sandbox_rails/config/environments/development.rb +72 -0
  191. data/sandbox/itsi_sandbox_rails/config/environments/production.rb +90 -0
  192. data/sandbox/itsi_sandbox_rails/config/environments/test.rb +53 -0
  193. data/sandbox/itsi_sandbox_rails/config/importmap.rb +7 -0
  194. data/sandbox/itsi_sandbox_rails/config/initializers/assets.rb +7 -0
  195. data/sandbox/itsi_sandbox_rails/config/initializers/content_security_policy.rb +25 -0
  196. data/sandbox/itsi_sandbox_rails/config/initializers/filter_parameter_logging.rb +8 -0
  197. data/sandbox/itsi_sandbox_rails/config/initializers/inflections.rb +16 -0
  198. data/sandbox/itsi_sandbox_rails/config/locales/en.yml +31 -0
  199. data/sandbox/itsi_sandbox_rails/config/puma.rb +41 -0
  200. data/sandbox/itsi_sandbox_rails/config/queue.yml +18 -0
  201. data/sandbox/itsi_sandbox_rails/config/recurring.yml +10 -0
  202. data/sandbox/itsi_sandbox_rails/config/routes.rb +21 -0
  203. data/sandbox/itsi_sandbox_rails/config/storage.yml +34 -0
  204. data/sandbox/itsi_sandbox_rails/config.ru +7 -0
  205. data/sandbox/itsi_sandbox_rails/db/cable_schema.rb +11 -0
  206. data/sandbox/itsi_sandbox_rails/db/cache_schema.rb +14 -0
  207. data/sandbox/itsi_sandbox_rails/db/migrate/20250301041554_create_posts.rb +10 -0
  208. data/sandbox/itsi_sandbox_rails/db/queue_schema.rb +129 -0
  209. data/sandbox/itsi_sandbox_rails/db/schema.rb +23 -0
  210. data/sandbox/itsi_sandbox_rails/db/seeds.rb +9 -0
  211. data/sandbox/itsi_sandbox_rails/lib/tasks/.keep +0 -0
  212. data/sandbox/itsi_sandbox_rails/log/.keep +0 -0
  213. data/sandbox/itsi_sandbox_rails/public/400.html +114 -0
  214. data/sandbox/itsi_sandbox_rails/public/404.html +114 -0
  215. data/sandbox/itsi_sandbox_rails/public/406-unsupported-browser.html +114 -0
  216. data/sandbox/itsi_sandbox_rails/public/422.html +114 -0
  217. data/sandbox/itsi_sandbox_rails/public/500.html +114 -0
  218. data/sandbox/itsi_sandbox_rails/public/icon.png +0 -0
  219. data/sandbox/itsi_sandbox_rails/public/icon.svg +3 -0
  220. data/sandbox/itsi_sandbox_rails/public/robots.txt +1 -0
  221. data/sandbox/itsi_sandbox_rails/script/.keep +0 -0
  222. data/sandbox/itsi_sandbox_rails/storage/.keep +0 -0
  223. data/sandbox/itsi_sandbox_rails/test/application_system_test_case.rb +5 -0
  224. data/sandbox/itsi_sandbox_rails/test/controllers/.keep +0 -0
  225. data/sandbox/itsi_sandbox_rails/test/fixtures/files/.keep +0 -0
  226. data/sandbox/itsi_sandbox_rails/test/fixtures/posts.yml +9 -0
  227. data/sandbox/itsi_sandbox_rails/test/helpers/.keep +0 -0
  228. data/sandbox/itsi_sandbox_rails/test/integration/.keep +0 -0
  229. data/sandbox/itsi_sandbox_rails/test/mailers/.keep +0 -0
  230. data/sandbox/itsi_sandbox_rails/test/models/.keep +0 -0
  231. data/sandbox/itsi_sandbox_rails/test/models/post_test.rb +7 -0
  232. data/sandbox/itsi_sandbox_rails/test/system/.keep +0 -0
  233. data/sandbox/itsi_sandbox_rails/test/test_helper.rb +15 -0
  234. data/sandbox/itsi_sandbox_rails/tmp/.keep +0 -0
  235. data/sandbox/itsi_sandbox_rails/tmp/pids/.keep +0 -0
  236. data/sandbox/itsi_sandbox_rails/tmp/storage/.keep +0 -0
  237. data/sandbox/itsi_sandbox_rails/vendor/.keep +0 -0
  238. data/sandbox/itsi_sandbox_rails/vendor/javascript/.keep +0 -0
  239. data/sandbox/itsi_sandbox_roda/Gemfile +5 -0
  240. data/sandbox/itsi_sandbox_roda/Gemfile.lock +44 -0
  241. data/sandbox/itsi_sandbox_roda/config.ru +39 -0
  242. data/sandbox/itsi_sinatra/Gemfile +9 -0
  243. data/sandbox/itsi_sinatra/Gemfile.lock +81 -0
  244. data/sandbox/itsi_sinatra/app.rb +9 -0
  245. data/sandbox/pebble/docker-compose.yml +11 -0
  246. data/tasks.txt +4 -4
  247. metadata +199 -10
  248. data/gems/server/lib/itsi/signals.rb +0 -23
  249. data/gems/server/test/test_helper.rb +0 -7
@@ -0,0 +1,54 @@
1
+ require 'itsi/scheduler'
2
+ require 'itsi/server'
3
+
4
+ class Benchmark
5
+ def initialize(app)
6
+ @app = app
7
+ end
8
+
9
+ PATH_INFO = 'PATH_INFO'.freeze
10
+
11
+ SMALL = [200, {}, ["Hello World\n" * 10] * 10].freeze
12
+
13
+ def blocking(env)
14
+ Kernel::sleep(0.01)
15
+
16
+ SMALL
17
+ end
18
+
19
+ def nonblocking(env)
20
+ if defined? Async
21
+ Async::Task.current.sleep(0.01)
22
+ else
23
+ Kernel::sleep(0.01)
24
+ end
25
+
26
+ SMALL
27
+ end
28
+
29
+ def small(env)
30
+ SMALL
31
+ end
32
+
33
+ LARGE = [200, {}, ["Hello World\n" * 100] * 100].freeze
34
+
35
+ def large(env)
36
+ LARGE
37
+ end
38
+
39
+ def call(env)
40
+ _, name, *path = env[PATH_INFO].split("/")
41
+
42
+ method = name&.to_sym
43
+
44
+ if method and self.respond_to?(method)
45
+ self.send(method, env)
46
+ else
47
+ @app.call(env)
48
+ end
49
+ end
50
+ end
51
+
52
+ use Benchmark
53
+
54
+ run lambda {|env| [404, {}, ["Not Found"]]}
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # gem "rails"
6
+
7
+ # gem "async"
8
+ gem "debug"
9
+ gem "itsi-server", path: "../../gems/server"
10
+ gem "osprey_scheduler", path: "../../../osprey_scheduler"
@@ -0,0 +1,69 @@
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/server
10
+ specs:
11
+ itsi-server (0.1.1)
12
+ libclang (~> 14.0)
13
+ rack (~> 2.2)
14
+ rb_sys (~> 0.9.91)
15
+
16
+ GEM
17
+ remote: https://rubygems.org/
18
+ specs:
19
+ async (2.21.1)
20
+ console (~> 1.29)
21
+ fiber-annotation
22
+ io-event (~> 1.6, >= 1.6.5)
23
+ console (1.29.3)
24
+ fiber-annotation
25
+ fiber-local (~> 1.1)
26
+ json
27
+ date (3.4.1)
28
+ debug (1.10.0)
29
+ irb (~> 1.10)
30
+ reline (>= 0.3.8)
31
+ fiber-annotation (0.2.0)
32
+ fiber-local (1.1.0)
33
+ fiber-storage
34
+ fiber-storage (1.0.0)
35
+ io-console (0.8.0)
36
+ io-event (1.9.0)
37
+ irb (1.15.1)
38
+ pp (>= 0.6.0)
39
+ rdoc (>= 4.0.0)
40
+ reline (>= 0.4.2)
41
+ json (2.10.1)
42
+ libclang (14.0.6-arm64-darwin)
43
+ pp (0.6.2)
44
+ prettyprint
45
+ prettyprint (0.2.0)
46
+ psych (5.2.3)
47
+ date
48
+ stringio
49
+ rack (2.2.12)
50
+ rake-compiler-dock (1.9.1)
51
+ rb_sys (0.9.111)
52
+ rake-compiler-dock (= 1.9.1)
53
+ rdoc (6.12.0)
54
+ psych (>= 4.0.0)
55
+ reline (0.6.0)
56
+ io-console (~> 0.5)
57
+ stringio (3.1.5)
58
+
59
+ PLATFORMS
60
+ arm64-darwin-23
61
+ ruby
62
+
63
+ DEPENDENCIES
64
+ debug
65
+ itsi-server!
66
+ osprey_scheduler!
67
+
68
+ BUNDLED WITH
69
+ 2.6.3
@@ -0,0 +1,10 @@
1
+ require 'debug'
2
+ require "osprey/scheduler"
3
+
4
+ run lambda { |env|
5
+ # 5.times do |i|
6
+ # puts "#{i}"
7
+ # sleep 0.3
8
+ # end
9
+ [200, { 'Content-Type' => 'text/plain' }, ['foo']]
10
+ }
@@ -0,0 +1,2 @@
1
+ # This is checked into source control, so put sensitive values into `.env.local`
2
+ DATABASE_URL=sqlite://db/itsi_hanami.sqlite
@@ -0,0 +1,6 @@
1
+ .env*.local
2
+ log/*
3
+ public/
4
+ node_modules/
5
+ db/*.sqlite
6
+ spec/examples.txt
@@ -0,0 +1 @@
1
+ --require spec_helper
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "hanami", "~> 2.2"
6
+ gem "hanami-assets", "~> 2.2"
7
+ gem "hanami-controller", "~> 2.2"
8
+ gem "hanami-db", "~> 2.2"
9
+ gem "hanami-router", "~> 2.2"
10
+ gem "hanami-validations", "~> 2.2"
11
+ gem "hanami-view", "~> 2.2"
12
+
13
+ gem "dry-types", "~> 1.7"
14
+ gem "dry-operation"
15
+
16
+ gem "itsi-server", path: "../../gems/server"
17
+ gem "itsi-scheduler", path: "../../gems/scheduler"
18
+ gem 'falcon'
19
+ gem 'iodine'
20
+ gem 'puma'
21
+ gem 'unicorn'
22
+
23
+ gem "rake"
24
+ gem "sqlite3"
25
+
26
+ group :development do
27
+ gem "hanami-webconsole", "~> 2.2"
28
+ end
29
+
30
+ group :development, :test do
31
+ gem "dotenv"
32
+ end
33
+
34
+ group :cli, :development do
35
+ gem "hanami-reloader", "~> 2.2"
36
+ end
37
+
38
+ group :cli, :development, :test do
39
+ gem "hanami-rspec", "~> 2.2"
40
+ end
41
+
42
+ group :test do
43
+ # Database
44
+ gem "database_cleaner-sequel"
45
+
46
+ # Web integration
47
+ gem "capybara"
48
+ gem "rack-test"
49
+ end
@@ -0,0 +1,440 @@
1
+ PATH
2
+ remote: ../../gems/scheduler
3
+ specs:
4
+ itsi-scheduler (0.1.7)
5
+ rb_sys (~> 0.9.91)
6
+
7
+ PATH
8
+ remote: ../../gems/server
9
+ specs:
10
+ itsi-server (0.1.7)
11
+ rack (>= 1.6)
12
+ rb_sys (~> 0.9.91)
13
+
14
+ GEM
15
+ remote: https://rubygems.org/
16
+ specs:
17
+ addressable (2.8.7)
18
+ public_suffix (>= 2.0.2, < 7.0)
19
+ async (2.23.1)
20
+ console (~> 1.29)
21
+ fiber-annotation
22
+ io-event (~> 1.9)
23
+ metrics (~> 0.12)
24
+ traces (~> 0.15)
25
+ async-container (0.24.0)
26
+ async (~> 2.22)
27
+ async-container-supervisor (0.5.1)
28
+ async-container (~> 0.22)
29
+ async-service
30
+ io-endpoint
31
+ memory-leak (~> 0.5)
32
+ async-http (0.87.0)
33
+ async (>= 2.10.2)
34
+ async-pool (~> 0.9)
35
+ io-endpoint (~> 0.14)
36
+ io-stream (~> 0.6)
37
+ metrics (~> 0.12)
38
+ protocol-http (~> 0.49)
39
+ protocol-http1 (~> 0.30)
40
+ protocol-http2 (~> 0.22)
41
+ traces (~> 0.10)
42
+ async-http-cache (0.4.5)
43
+ async-http (~> 0.56)
44
+ async-pool (0.10.3)
45
+ async (>= 1.25)
46
+ async-service (0.13.0)
47
+ async
48
+ async-container (~> 0.16)
49
+ better_errors (2.10.1)
50
+ erubi (>= 1.0.0)
51
+ rack (>= 0.9.0)
52
+ rouge (>= 1.0.0)
53
+ bigdecimal (3.1.9)
54
+ binding_of_caller (1.0.1)
55
+ debug_inspector (>= 1.2.0)
56
+ capybara (3.40.0)
57
+ addressable
58
+ matrix
59
+ mini_mime (>= 0.1.3)
60
+ nokogiri (~> 1.11)
61
+ rack (>= 1.6.0)
62
+ rack-test (>= 0.6.3)
63
+ regexp_parser (>= 1.5, < 3.0)
64
+ xpath (~> 3.2)
65
+ coderay (1.1.3)
66
+ concurrent-ruby (1.3.5)
67
+ console (1.30.2)
68
+ fiber-annotation
69
+ fiber-local (~> 1.1)
70
+ json
71
+ database_cleaner-core (2.0.1)
72
+ database_cleaner-sequel (2.0.2)
73
+ database_cleaner-core (~> 2.0.0)
74
+ sequel
75
+ debug_inspector (1.2.0)
76
+ diff-lcs (1.6.0)
77
+ dotenv (3.1.7)
78
+ dry-auto_inject (1.1.0)
79
+ dry-core (~> 1.1)
80
+ zeitwerk (~> 2.6)
81
+ dry-cli (1.2.0)
82
+ dry-configurable (1.3.0)
83
+ dry-core (~> 1.1)
84
+ zeitwerk (~> 2.6)
85
+ dry-core (1.1.0)
86
+ concurrent-ruby (~> 1.0)
87
+ logger
88
+ zeitwerk (~> 2.6)
89
+ dry-events (1.1.0)
90
+ concurrent-ruby (~> 1.0)
91
+ dry-core (~> 1.1)
92
+ dry-files (1.1.0)
93
+ dry-inflector (1.2.0)
94
+ dry-initializer (3.2.0)
95
+ dry-logger (1.0.4)
96
+ dry-logic (1.6.0)
97
+ bigdecimal
98
+ concurrent-ruby (~> 1.0)
99
+ dry-core (~> 1.1)
100
+ zeitwerk (~> 2.6)
101
+ dry-monads (1.8.1)
102
+ concurrent-ruby (~> 1.0)
103
+ dry-core (~> 1.1)
104
+ zeitwerk (~> 2.6)
105
+ dry-monitor (1.0.1)
106
+ dry-configurable (~> 1.0, < 2)
107
+ dry-core (~> 1.0, < 2)
108
+ dry-events (~> 1.0, < 2)
109
+ dry-operation (1.0.0)
110
+ dry-monads (~> 1.6)
111
+ zeitwerk (~> 2.6)
112
+ dry-schema (1.14.1)
113
+ concurrent-ruby (~> 1.0)
114
+ dry-configurable (~> 1.0, >= 1.0.1)
115
+ dry-core (~> 1.1)
116
+ dry-initializer (~> 3.2)
117
+ dry-logic (~> 1.5)
118
+ dry-types (~> 1.8)
119
+ zeitwerk (~> 2.6)
120
+ dry-struct (1.8.0)
121
+ dry-core (~> 1.1)
122
+ dry-types (~> 1.8, >= 1.8.2)
123
+ ice_nine (~> 0.11)
124
+ zeitwerk (~> 2.6)
125
+ dry-system (1.2.2)
126
+ dry-auto_inject (~> 1.1)
127
+ dry-configurable (~> 1.3)
128
+ dry-core (~> 1.1)
129
+ dry-inflector (~> 1.1)
130
+ dry-transformer (1.0.1)
131
+ zeitwerk (~> 2.6)
132
+ dry-types (1.8.2)
133
+ bigdecimal (~> 3.0)
134
+ concurrent-ruby (~> 1.0)
135
+ dry-core (~> 1.0)
136
+ dry-inflector (~> 1.0)
137
+ dry-logic (~> 1.4)
138
+ zeitwerk (~> 2.6)
139
+ dry-validation (1.11.1)
140
+ concurrent-ruby (~> 1.0)
141
+ dry-core (~> 1.1)
142
+ dry-initializer (~> 3.2)
143
+ dry-schema (~> 1.14)
144
+ zeitwerk (~> 2.6)
145
+ erubi (1.13.1)
146
+ falcon (0.51.1)
147
+ async
148
+ async-container (~> 0.20)
149
+ async-container-supervisor (~> 0.5.0)
150
+ async-http (~> 0.75)
151
+ async-http-cache (~> 0.4)
152
+ async-service (~> 0.10)
153
+ bundler
154
+ localhost (~> 1.1)
155
+ openssl (~> 3.0)
156
+ protocol-http (~> 0.31)
157
+ protocol-rack (~> 0.7)
158
+ samovar (~> 2.3)
159
+ ffi (1.17.1-aarch64-linux-gnu)
160
+ ffi (1.17.1-aarch64-linux-musl)
161
+ ffi (1.17.1-arm-linux-gnu)
162
+ ffi (1.17.1-arm-linux-musl)
163
+ ffi (1.17.1-arm64-darwin)
164
+ ffi (1.17.1-x86-linux-gnu)
165
+ ffi (1.17.1-x86-linux-musl)
166
+ ffi (1.17.1-x86_64-darwin)
167
+ ffi (1.17.1-x86_64-linux-gnu)
168
+ ffi (1.17.1-x86_64-linux-musl)
169
+ fiber-annotation (0.2.0)
170
+ fiber-local (1.1.0)
171
+ fiber-storage
172
+ fiber-storage (1.0.0)
173
+ formatador (1.1.0)
174
+ guard (2.19.1)
175
+ formatador (>= 0.2.4)
176
+ listen (>= 2.7, < 4.0)
177
+ logger (~> 1.6)
178
+ lumberjack (>= 1.0.12, < 2.0)
179
+ nenv (~> 0.1)
180
+ notiffany (~> 0.0)
181
+ ostruct (~> 0.6)
182
+ pry (>= 0.13.0)
183
+ shellany (~> 0.0)
184
+ thor (>= 0.18.1)
185
+ guard-compat (1.2.1)
186
+ guard-puma (0.8.1)
187
+ guard (~> 2.14)
188
+ guard-compat (~> 1.2)
189
+ puma (>= 4.0, < 7)
190
+ hanami (2.2.1)
191
+ bundler (>= 1.16, < 3)
192
+ dry-configurable (~> 1.0, >= 1.2.0, < 2)
193
+ dry-core (~> 1.0, < 2)
194
+ dry-inflector (~> 1.0, >= 1.1.0, < 2)
195
+ dry-logger (~> 1.0, < 2)
196
+ dry-monitor (~> 1.0, >= 1.0.1, < 2)
197
+ dry-system (~> 1.1)
198
+ hanami-cli (~> 2.2.1)
199
+ hanami-utils (~> 2.2)
200
+ json (>= 2.7.2)
201
+ zeitwerk (~> 2.6)
202
+ hanami-assets (2.2.0)
203
+ zeitwerk (~> 2.6)
204
+ hanami-cli (2.2.1)
205
+ bundler (~> 2.1)
206
+ dry-cli (~> 1.0, >= 1.1.0)
207
+ dry-files (~> 1.0, >= 1.0.2, < 2)
208
+ dry-inflector (~> 1.0, < 2)
209
+ rake (~> 13.0)
210
+ zeitwerk (~> 2.6)
211
+ hanami-controller (2.2.0)
212
+ dry-configurable (~> 1.0, < 2)
213
+ dry-core (~> 1.0)
214
+ hanami-utils (~> 2.2)
215
+ rack (~> 2.0)
216
+ zeitwerk (~> 2.6)
217
+ hanami-db (2.2.1)
218
+ rom (~> 5.4, >= 5.4.1)
219
+ rom-sql (~> 3.7)
220
+ zeitwerk (~> 2.6)
221
+ hanami-reloader (2.2.0)
222
+ guard (~> 2.19)
223
+ guard-puma (~> 0.8)
224
+ hanami-cli (~> 2.2)
225
+ zeitwerk (~> 2.6)
226
+ hanami-router (2.2.0)
227
+ mustermann (~> 3.0)
228
+ mustermann-contrib (~> 3.0)
229
+ rack (~> 2.0)
230
+ hanami-rspec (2.2.1)
231
+ hanami-cli (~> 2.2)
232
+ rake (~> 13.0)
233
+ rspec (~> 3.12)
234
+ zeitwerk (~> 2.6)
235
+ hanami-utils (2.2.0)
236
+ concurrent-ruby (~> 1.0)
237
+ dry-core (~> 1.0, < 2)
238
+ dry-transformer (~> 1.0, < 2)
239
+ hanami-validations (2.2.0)
240
+ dry-validation (>= 1.10, < 2)
241
+ hanami-view (2.2.0)
242
+ dry-configurable (~> 1.0)
243
+ dry-core (~> 1.0)
244
+ dry-inflector (~> 1.0, < 2)
245
+ temple (~> 0.10.0, >= 0.10.2)
246
+ tilt (~> 2.3)
247
+ zeitwerk (~> 2.6)
248
+ hanami-webconsole (2.2.0)
249
+ better_errors (~> 2.10, >= 2.10.1)
250
+ binding_of_caller (~> 1.0)
251
+ hansi (0.2.1)
252
+ ice_nine (0.11.2)
253
+ io-endpoint (0.15.2)
254
+ io-event (1.10.0)
255
+ io-stream (0.6.1)
256
+ iodine (0.7.58)
257
+ json (2.10.2)
258
+ kgio (2.11.4)
259
+ listen (3.9.0)
260
+ rb-fsevent (~> 0.10, >= 0.10.3)
261
+ rb-inotify (~> 0.9, >= 0.9.10)
262
+ localhost (1.3.1)
263
+ logger (1.6.6)
264
+ lumberjack (1.2.10)
265
+ mapping (1.1.1)
266
+ matrix (0.4.2)
267
+ memory-leak (0.5.2)
268
+ method_source (1.1.0)
269
+ metrics (0.12.2)
270
+ mini_mime (1.1.5)
271
+ mini_portile2 (2.8.8)
272
+ mustermann (3.0.3)
273
+ ruby2_keywords (~> 0.0.1)
274
+ mustermann-contrib (3.0.3)
275
+ hansi (~> 0.2.0)
276
+ mustermann (= 3.0.3)
277
+ nenv (0.3.0)
278
+ nio4r (2.7.4)
279
+ nokogiri (1.18.3)
280
+ mini_portile2 (~> 2.8.2)
281
+ racc (~> 1.4)
282
+ nokogiri (1.18.3-aarch64-linux-gnu)
283
+ racc (~> 1.4)
284
+ nokogiri (1.18.3-aarch64-linux-musl)
285
+ racc (~> 1.4)
286
+ nokogiri (1.18.3-arm-linux-gnu)
287
+ racc (~> 1.4)
288
+ nokogiri (1.18.3-arm-linux-musl)
289
+ racc (~> 1.4)
290
+ nokogiri (1.18.3-arm64-darwin)
291
+ racc (~> 1.4)
292
+ nokogiri (1.18.3-x86_64-darwin)
293
+ racc (~> 1.4)
294
+ nokogiri (1.18.3-x86_64-linux-gnu)
295
+ racc (~> 1.4)
296
+ nokogiri (1.18.3-x86_64-linux-musl)
297
+ racc (~> 1.4)
298
+ notiffany (0.1.3)
299
+ nenv (~> 0.1)
300
+ shellany (~> 0.0)
301
+ openssl (3.3.0)
302
+ ostruct (0.6.1)
303
+ protocol-hpack (1.5.1)
304
+ protocol-http (0.49.0)
305
+ protocol-http1 (0.30.0)
306
+ protocol-http (~> 0.22)
307
+ protocol-http2 (0.22.1)
308
+ protocol-hpack (~> 1.4)
309
+ protocol-http (~> 0.47)
310
+ protocol-rack (0.11.2)
311
+ protocol-http (~> 0.43)
312
+ rack (>= 1.0)
313
+ pry (0.15.2)
314
+ coderay (~> 1.1)
315
+ method_source (~> 1.0)
316
+ public_suffix (6.0.1)
317
+ puma (6.6.0)
318
+ nio4r (~> 2.0)
319
+ racc (1.8.1)
320
+ rack (2.2.13)
321
+ rack-test (2.2.0)
322
+ rack (>= 1.3)
323
+ raindrops (0.20.1)
324
+ rake (13.2.1)
325
+ rake-compiler-dock (1.9.1)
326
+ rb-fsevent (0.11.2)
327
+ rb-inotify (0.11.1)
328
+ ffi (~> 1.0)
329
+ rb_sys (0.9.111)
330
+ rake-compiler-dock (= 1.9.1)
331
+ regexp_parser (2.10.0)
332
+ rom (5.4.2)
333
+ rom-changeset (~> 5.4)
334
+ rom-core (~> 5.4)
335
+ rom-repository (~> 5.4, >= 5.4.2)
336
+ rom-changeset (5.4.0)
337
+ dry-core (~> 1.0)
338
+ rom-core (~> 5.4)
339
+ transproc (~> 1.1)
340
+ rom-core (5.4.0)
341
+ concurrent-ruby (~> 1.1)
342
+ dry-configurable (~> 1.0)
343
+ dry-core (~> 1.0)
344
+ dry-inflector (~> 1.0)
345
+ dry-initializer (~> 3.2)
346
+ dry-struct (~> 1.0)
347
+ dry-types (~> 1.6)
348
+ transproc (~> 1.1)
349
+ rom-repository (5.4.2)
350
+ dry-core (~> 1.0)
351
+ dry-initializer (~> 3.2)
352
+ rom-core (~> 5.4)
353
+ rom-sql (3.7.0)
354
+ dry-core (~> 1.1)
355
+ dry-types (~> 1.8)
356
+ rom (~> 5.4)
357
+ sequel (>= 4.49)
358
+ rouge (4.5.1)
359
+ rspec (3.13.0)
360
+ rspec-core (~> 3.13.0)
361
+ rspec-expectations (~> 3.13.0)
362
+ rspec-mocks (~> 3.13.0)
363
+ rspec-core (3.13.3)
364
+ rspec-support (~> 3.13.0)
365
+ rspec-expectations (3.13.3)
366
+ diff-lcs (>= 1.2.0, < 2.0)
367
+ rspec-support (~> 3.13.0)
368
+ rspec-mocks (3.13.2)
369
+ diff-lcs (>= 1.2.0, < 2.0)
370
+ rspec-support (~> 3.13.0)
371
+ rspec-support (3.13.2)
372
+ ruby2_keywords (0.0.5)
373
+ samovar (2.3.0)
374
+ console (~> 1.0)
375
+ mapping (~> 1.0)
376
+ sequel (5.90.0)
377
+ bigdecimal
378
+ shellany (0.0.1)
379
+ sqlite3 (2.6.0-aarch64-linux-gnu)
380
+ sqlite3 (2.6.0-aarch64-linux-musl)
381
+ sqlite3 (2.6.0-arm-linux-gnu)
382
+ sqlite3 (2.6.0-arm-linux-musl)
383
+ sqlite3 (2.6.0-arm64-darwin)
384
+ sqlite3 (2.6.0-x86-linux-gnu)
385
+ sqlite3 (2.6.0-x86-linux-musl)
386
+ sqlite3 (2.6.0-x86_64-darwin)
387
+ sqlite3 (2.6.0-x86_64-linux-gnu)
388
+ sqlite3 (2.6.0-x86_64-linux-musl)
389
+ temple (0.10.3)
390
+ thor (1.3.2)
391
+ tilt (2.6.0)
392
+ traces (0.15.2)
393
+ transproc (1.1.1)
394
+ unicorn (6.1.0)
395
+ kgio (~> 2.6)
396
+ raindrops (~> 0.7)
397
+ xpath (3.2.0)
398
+ nokogiri (~> 1.8)
399
+ zeitwerk (2.7.2)
400
+
401
+ PLATFORMS
402
+ aarch64-linux-gnu
403
+ aarch64-linux-musl
404
+ arm-linux-gnu
405
+ arm-linux-musl
406
+ arm64-darwin
407
+ x86-linux-gnu
408
+ x86-linux-musl
409
+ x86_64-darwin
410
+ x86_64-linux-gnu
411
+ x86_64-linux-musl
412
+
413
+ DEPENDENCIES
414
+ capybara
415
+ database_cleaner-sequel
416
+ dotenv
417
+ dry-operation
418
+ dry-types (~> 1.7)
419
+ falcon
420
+ hanami (~> 2.2)
421
+ hanami-assets (~> 2.2)
422
+ hanami-controller (~> 2.2)
423
+ hanami-db (~> 2.2)
424
+ hanami-reloader (~> 2.2)
425
+ hanami-router (~> 2.2)
426
+ hanami-rspec (~> 2.2)
427
+ hanami-validations (~> 2.2)
428
+ hanami-view (~> 2.2)
429
+ hanami-webconsole (~> 2.2)
430
+ iodine
431
+ itsi-scheduler!
432
+ itsi-server!
433
+ puma
434
+ rack-test
435
+ rake
436
+ sqlite3
437
+ unicorn
438
+
439
+ BUNDLED WITH
440
+ 2.6.3
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ group :server do
4
+ guard "puma", port: ENV.fetch("HANAMI_PORT", 2300) do
5
+ # Edit the following regular expression for your needs.
6
+ # See: https://guides.hanamirb.org/app/code-reloading/
7
+ watch(%r{^(app|config|lib|slices)([\/][^\/]+)*.(rb|erb|haml|slim)$}i)
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ web: bundle exec hanami server
2
+ assets: bundle exec hanami assets watch
@@ -0,0 +1 @@
1
+ # ItsiHanami
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami/rake_tasks"
@@ -0,0 +1,12 @@
1
+ # auto_register: false
2
+ # frozen_string_literal: true
3
+
4
+ require "hanami/action"
5
+ require "dry/monads"
6
+
7
+ module ItsiHanami
8
+ class Action < Hanami::Action
9
+ # Provide `Success` and `Failure` for pattern matching on operation results
10
+ include Dry::Monads[:result]
11
+ end
12
+ end
File without changes
@@ -0,0 +1,5 @@
1
+ body {
2
+ background-color: #fff;
3
+ color: #000;
4
+ font-family: sans-serif;
5
+ }
@@ -0,0 +1 @@
1
+ import "../css/app.css";