monkrb 0.19.0 → 0.21.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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +166 -0
  3. data/README.md +7 -6
  4. data/exe/monk +3 -181
  5. data/lib/monk/assets.rb +39 -9
  6. data/lib/monk/auth/errors.rb +3 -0
  7. data/lib/monk/auth/helpers.rb +11 -0
  8. data/lib/monk/auth/send_login_link.rb +36 -0
  9. data/lib/monk/auth.rb +34 -5
  10. data/lib/monk/base.rb +20 -0
  11. data/lib/monk/bin.rb +107 -0
  12. data/lib/monk/cli.rb +277 -0
  13. data/lib/monk/context.rb +17 -0
  14. data/lib/monk/errors.rb +0 -6
  15. data/lib/monk/generator/definition.rb +153 -0
  16. data/lib/monk/generator/result.rb +279 -0
  17. data/lib/monk/generator/run.rb +449 -0
  18. data/lib/monk/generator.rb +48 -0
  19. data/lib/monk/generators/auth.rb +29 -0
  20. data/lib/monk/generators/base.rb +19 -0
  21. data/lib/monk/generators/jobs.rb +21 -0
  22. data/lib/monk/generators/live.rb +26 -0
  23. data/lib/monk/generators/mail.rb +24 -0
  24. data/lib/monk/generators/postgres.rb +23 -0
  25. data/lib/monk/generators/redis.rb +20 -0
  26. data/lib/monk/generators/websocket.rb +24 -0
  27. data/lib/monk/generators.rb +7 -0
  28. data/lib/monk/jobs/adapters/pg.rb +3 -1
  29. data/lib/monk/jobs.rb +7 -0
  30. data/lib/monk/live/helpers.rb +13 -0
  31. data/lib/monk/live/policy.rb +39 -4
  32. data/lib/monk/live/session.rb +7 -0
  33. data/lib/monk/live.rb +17 -4
  34. data/lib/monk/log.rb +10 -1
  35. data/lib/monk/mail/deliver_later.rb +54 -0
  36. data/lib/monk/mail/later.rb +3 -51
  37. data/lib/monk/mail.rb +4 -0
  38. data/lib/monk/persistence/errors.rb +32 -0
  39. data/lib/monk/persistence/pg.rb +92 -1
  40. data/lib/monk/persistence/pool.rb +513 -0
  41. data/lib/monk/persistence.rb +196 -7
  42. data/lib/monk/templates/auth/agents.md +29 -0
  43. data/lib/monk/templates/auth/app/mailers/{app_mailer.rb → auth_mailer.rb} +5 -5
  44. data/lib/monk/templates/auth/app/routes/auth.rb +48 -0
  45. data/lib/monk/templates/auth/app/views/auth/login.erb +25 -0
  46. data/lib/monk/templates/auth/config/auth.rb +14 -8
  47. data/lib/monk/templates/auth/setup.md +37 -0
  48. data/lib/monk/templates/auth/test/auth_test.rb +17 -0
  49. data/lib/monk/templates/base/CLAUDE.md +1 -0
  50. data/lib/monk/templates/base/Dockerfile +4 -3
  51. data/lib/monk/templates/base/Gemfile +7 -2
  52. data/lib/monk/templates/base/Rakefile +8 -0
  53. data/lib/monk/templates/base/agents.md +41 -0
  54. data/lib/monk/templates/base/app/app.rb +5 -0
  55. data/lib/monk/templates/base/app/routes/.keep +0 -0
  56. data/lib/monk/templates/base/app/views/index.erb +1 -1
  57. data/lib/monk/templates/base/app/views/layouts/app.erb +2 -0
  58. data/lib/monk/templates/base/config/load.rb +8 -0
  59. data/lib/monk/templates/base/config/settings.rb +4 -5
  60. data/lib/monk/templates/base/setup.md +22 -0
  61. data/lib/monk/templates/base/test/app_test.rb +12 -0
  62. data/lib/monk/templates/base/test/test_helper.rb +18 -0
  63. data/lib/monk/templates/jobs/agents.md +25 -0
  64. data/lib/monk/templates/jobs/app/routes/jobs.rb +9 -0
  65. data/lib/monk/templates/jobs/bin/jobs +19 -13
  66. data/lib/monk/templates/jobs/setup.md +30 -0
  67. data/lib/monk/templates/jobs/test/jobs_test.rb +16 -0
  68. data/lib/monk/templates/live/agents.md +25 -0
  69. data/lib/monk/templates/live/app/broadcasts/greeting.rb +13 -0
  70. data/lib/monk/templates/live/app/routes/demo_live.rb +21 -0
  71. data/lib/monk/templates/live/app/routes/live.rb +10 -0
  72. data/lib/monk/templates/live/app/views/demo/live.erb +18 -0
  73. data/lib/monk/templates/live/app/views/live/_greeting.erb +1 -0
  74. data/lib/monk/templates/live/config/live.rb +30 -32
  75. data/lib/monk/templates/live/config/live_without_demo.rb +38 -0
  76. data/lib/monk/templates/live/setup.md +39 -0
  77. data/lib/monk/templates/live/test/live_test.rb +22 -0
  78. data/lib/monk/templates/mail/agents.md +22 -0
  79. data/lib/monk/templates/mail/app/mailers/app_mailer.rb +14 -0
  80. data/lib/monk/templates/mail/app/routes/mail.rb +12 -0
  81. data/lib/monk/templates/mail/app/views/mail/welcome.erb +1 -0
  82. data/lib/monk/templates/mail/config/mail.rb +4 -4
  83. data/lib/monk/templates/mail/setup.md +32 -0
  84. data/lib/monk/templates/mail/test/mail_test.rb +13 -0
  85. data/lib/monk/templates/postgres/agents.md +25 -0
  86. data/lib/monk/templates/postgres/app/routes/postgres.rb +22 -0
  87. data/lib/monk/templates/postgres/bin/console +3 -1
  88. data/lib/monk/templates/postgres/bin/migrate +23 -17
  89. data/lib/monk/templates/postgres/bin/setup_db +11 -5
  90. data/lib/monk/templates/postgres/config/persistence.rb +1 -0
  91. data/lib/monk/templates/postgres/db/migrate/.keep +0 -0
  92. data/lib/monk/templates/postgres/setup.md +38 -0
  93. data/lib/monk/templates/postgres/test/persistence_test.rb +11 -0
  94. data/lib/monk/templates/redis/agents.md +18 -0
  95. data/lib/monk/templates/redis/app/routes/redis.rb +15 -0
  96. data/lib/monk/templates/redis/config/redis.rb +13 -0
  97. data/lib/monk/templates/redis/setup.md +20 -0
  98. data/lib/monk/templates/redis/test/redis_test.rb +12 -0
  99. data/lib/monk/templates/websocket/agents.md +25 -0
  100. data/lib/monk/templates/websocket/app/sockets/chat.rb +18 -0
  101. data/lib/monk/templates/websocket/bin/websocket_server +58 -0
  102. data/lib/monk/templates/websocket/config/websocket_postgres.rb +24 -0
  103. data/lib/monk/templates/websocket/config/websocket_redis.rb +21 -0
  104. data/lib/monk/templates/websocket/setup.md +51 -0
  105. data/lib/monk/templates/websocket/test/websocket_test.rb +21 -0
  106. data/lib/monk/version.rb +1 -1
  107. data/lib/monk/websocket/connection.rb +25 -6
  108. data/lib/monk/websocket/listeners.rb +24 -0
  109. data/lib/monk/websocket/pg_fanout.rb +143 -20
  110. data/lib/monk/websocket/redis_fanout.rb +78 -29
  111. data/lib/monk/websocket/registry.rb +24 -0
  112. data/lib/monk/websocket/server.rb +57 -16
  113. data/lib/monk/websocket.rb +2 -0
  114. data/lib/monk.rb +10 -0
  115. metadata +83 -14
  116. data/lib/monk/scaffold.rb +0 -1061
  117. data/lib/monk/templates/base/bin/websocket_server +0 -68
  118. data/lib/monk/templates/jobs/app/jobs/send_login_link.rb +0 -28
  119. data/lib/monk/templates/live/app/app.rb +0 -22
  120. data/lib/monk/templates/live/app/views/index.erb +0 -18
  121. data/lib/monk/templates/live/bin/websocket_server +0 -42
  122. data/lib/monk/templates/live/config/live_pg.rb +0 -60
  123. data/lib/monk/templates/mail/Gemfile.extra +0 -1
  124. data/lib/monk/templates/postgres/Dockerfile +0 -32
  125. data/lib/monk/templates/postgres/Gemfile.extra +0 -2
  126. data/lib/monk/templates/redis/Gemfile.extra +0 -1
  127. /data/lib/monk/templates/live/app/views/{live → demo}/_hits.erb +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monkrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Folin
@@ -93,6 +93,20 @@ dependencies:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0.5'
96
+ - !ruby/object:Gem::Dependency
97
+ name: dotenv
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.0'
96
110
  - !ruby/object:Gem::Dependency
97
111
  name: minitest
98
112
  requirement: !ruby/object:Gem::Requirement
@@ -170,12 +184,28 @@ files:
170
184
  - lib/monk/auth/helpers.rb
171
185
  - lib/monk/auth/login_token.rb
172
186
  - lib/monk/auth/rate_limiter.rb
187
+ - lib/monk/auth/send_login_link.rb
173
188
  - lib/monk/auth/session.rb
174
189
  - lib/monk/base.rb
190
+ - lib/monk/bin.rb
191
+ - lib/monk/cli.rb
175
192
  - lib/monk/context.rb
176
193
  - lib/monk/environment.rb
177
194
  - lib/monk/errors.rb
178
195
  - lib/monk/freeze_hooks.rb
196
+ - lib/monk/generator.rb
197
+ - lib/monk/generator/definition.rb
198
+ - lib/monk/generator/result.rb
199
+ - lib/monk/generator/run.rb
200
+ - lib/monk/generators.rb
201
+ - lib/monk/generators/auth.rb
202
+ - lib/monk/generators/base.rb
203
+ - lib/monk/generators/jobs.rb
204
+ - lib/monk/generators/live.rb
205
+ - lib/monk/generators/mail.rb
206
+ - lib/monk/generators/postgres.rb
207
+ - lib/monk/generators/redis.rb
208
+ - lib/monk/generators/websocket.rb
179
209
  - lib/monk/jobs.rb
180
210
  - lib/monk/jobs/adapters/pg.rb
181
211
  - lib/monk/jobs/args.rb
@@ -199,6 +229,7 @@ files:
199
229
  - lib/monk/log.rb
200
230
  - lib/monk/mail.rb
201
231
  - lib/monk/mail/address.rb
232
+ - lib/monk/mail/deliver_later.rb
202
233
  - lib/monk/mail/errors.rb
203
234
  - lib/monk/mail/later.rb
204
235
  - lib/monk/mail/message.rb
@@ -212,19 +243,27 @@ files:
212
243
  - lib/monk/persistence/pg/errors.rb
213
244
  - lib/monk/persistence/pg/migrator.rb
214
245
  - lib/monk/persistence/pg/model.rb
215
- - lib/monk/scaffold.rb
246
+ - lib/monk/persistence/pool.rb
216
247
  - lib/monk/settings.rb
217
248
  - lib/monk/state_ractor.rb
218
- - lib/monk/templates/auth/app/mailers/app_mailer.rb
249
+ - lib/monk/templates/auth/agents.md
250
+ - lib/monk/templates/auth/app/mailers/auth_mailer.rb
251
+ - lib/monk/templates/auth/app/routes/auth.rb
252
+ - lib/monk/templates/auth/app/views/auth/login.erb
219
253
  - lib/monk/templates/auth/app/views/mail/magic_link.erb
220
254
  - lib/monk/templates/auth/config/auth.rb
221
255
  - lib/monk/templates/auth/db/migrate/00000000000001_create_auth_tables.down.sql
222
256
  - lib/monk/templates/auth/db/migrate/00000000000001_create_auth_tables.up.sql
257
+ - lib/monk/templates/auth/setup.md
258
+ - lib/monk/templates/auth/test/auth_test.rb
223
259
  - lib/monk/templates/base/.dockerignore
224
260
  - lib/monk/templates/base/.gitignore
225
261
  - lib/monk/templates/base/.ruby-version
262
+ - lib/monk/templates/base/CLAUDE.md
226
263
  - lib/monk/templates/base/Dockerfile
227
264
  - lib/monk/templates/base/Gemfile
265
+ - lib/monk/templates/base/Rakefile
266
+ - lib/monk/templates/base/agents.md
228
267
  - lib/monk/templates/base/app/app.rb
229
268
  - lib/monk/templates/base/app/broadcasts/.keep
230
269
  - lib/monk/templates/base/app/helpers/.keep
@@ -232,36 +271,66 @@ files:
232
271
  - lib/monk/templates/base/app/mailers/.keep
233
272
  - lib/monk/templates/base/app/models/.keep
234
273
  - lib/monk/templates/base/app/presenters/.keep
274
+ - lib/monk/templates/base/app/routes/.keep
235
275
  - lib/monk/templates/base/app/views/index.erb
236
276
  - lib/monk/templates/base/app/views/layouts/app.erb
237
277
  - lib/monk/templates/base/bin/server
238
- - lib/monk/templates/base/bin/websocket_server
239
278
  - lib/monk/templates/base/config.ru
240
279
  - lib/monk/templates/base/config/load.rb
241
280
  - lib/monk/templates/base/config/settings.rb
242
281
  - lib/monk/templates/base/public/css/app.css
243
282
  - lib/monk/templates/base/public/js/app.js
283
+ - lib/monk/templates/base/setup.md
284
+ - lib/monk/templates/base/test/app_test.rb
285
+ - lib/monk/templates/base/test/test_helper.rb
286
+ - lib/monk/templates/jobs/agents.md
244
287
  - lib/monk/templates/jobs/app/jobs/hello_job.rb
245
- - lib/monk/templates/jobs/app/jobs/send_login_link.rb
288
+ - lib/monk/templates/jobs/app/routes/jobs.rb
246
289
  - lib/monk/templates/jobs/bin/jobs
247
290
  - lib/monk/templates/jobs/config/jobs.rb
248
291
  - lib/monk/templates/jobs/db/migrate/00000000000002_create_jobs_tables.down.sql
249
292
  - lib/monk/templates/jobs/db/migrate/00000000000002_create_jobs_tables.up.sql
250
- - lib/monk/templates/live/app/app.rb
251
- - lib/monk/templates/live/app/views/index.erb
252
- - lib/monk/templates/live/app/views/live/_hits.erb
253
- - lib/monk/templates/live/bin/websocket_server
293
+ - lib/monk/templates/jobs/setup.md
294
+ - lib/monk/templates/jobs/test/jobs_test.rb
295
+ - lib/monk/templates/live/agents.md
296
+ - lib/monk/templates/live/app/broadcasts/greeting.rb
297
+ - lib/monk/templates/live/app/routes/demo_live.rb
298
+ - lib/monk/templates/live/app/routes/live.rb
299
+ - lib/monk/templates/live/app/views/demo/_hits.erb
300
+ - lib/monk/templates/live/app/views/demo/live.erb
301
+ - lib/monk/templates/live/app/views/live/_greeting.erb
254
302
  - lib/monk/templates/live/config/live.rb
255
- - lib/monk/templates/live/config/live_pg.rb
256
- - lib/monk/templates/mail/Gemfile.extra
303
+ - lib/monk/templates/live/config/live_without_demo.rb
304
+ - lib/monk/templates/live/setup.md
305
+ - lib/monk/templates/live/test/live_test.rb
306
+ - lib/monk/templates/mail/agents.md
307
+ - lib/monk/templates/mail/app/mailers/app_mailer.rb
308
+ - lib/monk/templates/mail/app/routes/mail.rb
309
+ - lib/monk/templates/mail/app/views/mail/welcome.erb
257
310
  - lib/monk/templates/mail/config/mail.rb
258
- - lib/monk/templates/postgres/Dockerfile
259
- - lib/monk/templates/postgres/Gemfile.extra
311
+ - lib/monk/templates/mail/setup.md
312
+ - lib/monk/templates/mail/test/mail_test.rb
313
+ - lib/monk/templates/postgres/agents.md
314
+ - lib/monk/templates/postgres/app/routes/postgres.rb
260
315
  - lib/monk/templates/postgres/bin/console
261
316
  - lib/monk/templates/postgres/bin/migrate
262
317
  - lib/monk/templates/postgres/bin/setup_db
263
318
  - lib/monk/templates/postgres/config/persistence.rb
264
- - lib/monk/templates/redis/Gemfile.extra
319
+ - lib/monk/templates/postgres/db/migrate/.keep
320
+ - lib/monk/templates/postgres/setup.md
321
+ - lib/monk/templates/postgres/test/persistence_test.rb
322
+ - lib/monk/templates/redis/agents.md
323
+ - lib/monk/templates/redis/app/routes/redis.rb
324
+ - lib/monk/templates/redis/config/redis.rb
325
+ - lib/monk/templates/redis/setup.md
326
+ - lib/monk/templates/redis/test/redis_test.rb
327
+ - lib/monk/templates/websocket/agents.md
328
+ - lib/monk/templates/websocket/app/sockets/chat.rb
329
+ - lib/monk/templates/websocket/bin/websocket_server
330
+ - lib/monk/templates/websocket/config/websocket_postgres.rb
331
+ - lib/monk/templates/websocket/config/websocket_redis.rb
332
+ - lib/monk/templates/websocket/setup.md
333
+ - lib/monk/templates/websocket/test/websocket_test.rb
265
334
  - lib/monk/version.rb
266
335
  - lib/monk/views.rb
267
336
  - lib/monk/websocket.rb