jets 4.0.17 → 5.0.0.beta1

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 (616) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -1
  3. data/CHANGELOG.md +52 -23
  4. data/Gemfile +1 -5
  5. data/LICENSE.txt +1 -1
  6. data/Rakefile +3 -3
  7. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  8. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  9. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  10. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  11. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  12. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  13. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  14. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  15. data/{lib/jets → engines}/internal/app/functions/jets/base_path.rb +2 -1
  16. data/{lib/jets → engines}/internal/app/functions/jets/base_path_mapping.rb +26 -6
  17. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  18. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  19. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  20. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  21. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  22. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  23. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  24. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  25. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  26. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  27. data/engines/internal/lib/internal/actionview.rb +152 -0
  28. data/engines/internal/lib/internal/activerecord.rb +37 -0
  29. data/engines/internal/lib/internal/activesupport.rb +47 -0
  30. data/engines/internal/lib/internal/engine.rb +13 -0
  31. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  32. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  33. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  34. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  35. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  36. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  37. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  38. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  39. data/exe/jets +1 -10
  40. data/jets.gemspec +29 -27
  41. data/lib/jets/app_loader.rb +77 -0
  42. data/lib/jets/application/bootstrap.rb +100 -0
  43. data/lib/jets/application/configuration/defaults.rb +256 -0
  44. data/lib/jets/application/configuration.rb +494 -0
  45. data/lib/jets/application/default_middleware_stack.rb +140 -0
  46. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  47. data/lib/jets/application/finisher.rb +266 -0
  48. data/lib/jets/application/routes_reloader.rb +80 -0
  49. data/lib/jets/application.rb +515 -198
  50. data/lib/jets/authorizer/base.rb +1 -0
  51. data/lib/jets/authorizer/dsl.rb +15 -11
  52. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  53. data/lib/jets/autoloaders/gem.rb +70 -0
  54. data/lib/jets/autoloaders/inflector.rb +21 -0
  55. data/lib/jets/autoloaders.rb +38 -101
  56. data/lib/jets/aws_services/stack_status.rb +1 -1
  57. data/lib/jets/backtrace_cleaner.rb +27 -0
  58. data/lib/jets/booter.rb +29 -176
  59. data/lib/jets/builders/code_builder.rb +45 -117
  60. data/lib/jets/builders/code_size.rb +1 -0
  61. data/lib/jets/builders/gem_replacer.rb +5 -6
  62. data/lib/jets/builders/handler_generator.rb +34 -14
  63. data/lib/jets/builders/lambda_layer.rb +2 -7
  64. data/lib/jets/builders/purger.rb +1 -1
  65. data/lib/jets/builders/rack_packager.rb +1 -1
  66. data/lib/jets/builders/ruby_packager.rb +32 -21
  67. data/lib/jets/builders/shim_vars/app.rb +10 -6
  68. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  69. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  70. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  71. data/lib/jets/bundle.rb +2 -9
  72. data/lib/jets/cfn/base.rb +82 -0
  73. data/lib/jets/cfn/builder/api/base.rb +12 -0
  74. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +10 -20
  75. data/lib/jets/cfn/{builders/api_gateway_builder.rb → builder/api/gateway.rb} +14 -37
  76. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  77. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  78. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  79. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  80. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  81. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  82. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  83. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  84. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  85. data/lib/jets/cfn/builder/controller.rb +28 -0
  86. data/lib/jets/cfn/builder/function.rb +9 -0
  87. data/lib/jets/cfn/{builders → builder}/interface.rb +45 -51
  88. data/lib/jets/cfn/builder/job.rb +10 -0
  89. data/lib/jets/cfn/builder/nested.rb +130 -0
  90. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  91. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  92. data/lib/jets/cfn/{builders/parent_builder.rb → builder/parent.rb} +54 -54
  93. data/lib/jets/cfn/builder/post_process.rb +25 -0
  94. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  95. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +4 -3
  96. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  97. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  98. data/lib/jets/cfn/deployment.rb +45 -0
  99. data/lib/jets/cfn/download.rb +39 -0
  100. data/lib/jets/cfn/params/api/base.rb +39 -0
  101. data/lib/jets/cfn/params/api/cors.rb +10 -0
  102. data/lib/jets/cfn/params/api/methods.rb +69 -0
  103. data/lib/jets/cfn/params/api/resources.rb +28 -0
  104. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  105. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  106. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  107. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  108. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  109. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  111. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  112. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  113. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  114. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +1 -1
  117. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +1 -1
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +4 -3
  119. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +2 -2
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +5 -5
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  123. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +21 -0
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +12 -12
  128. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  129. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  130. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  131. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  132. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  133. data/lib/jets/{resource → cfn/resource}/iam/base_role_definition.rb +15 -15
  134. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  135. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  136. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  137. data/lib/jets/{resource → cfn/resource}/iam/policy.rb +8 -8
  138. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  139. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  140. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  141. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  142. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +4 -5
  143. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  144. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  145. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  146. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  147. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  148. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  149. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  150. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  151. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  152. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  153. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  154. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  155. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  156. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  157. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  158. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  159. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  160. data/lib/jets/cfn/resource/one/function.rb +66 -0
  161. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  162. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  163. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  164. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  165. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  166. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  167. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  168. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  169. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  170. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  171. data/lib/jets/cfn/resource.rb +8 -0
  172. data/lib/jets/cfn/ship.rb +20 -19
  173. data/lib/jets/cfn/template.rb +89 -0
  174. data/lib/jets/cfn/upload.rb +40 -37
  175. data/lib/jets/cli.rb +28 -210
  176. data/lib/jets/command/actions.rb +49 -0
  177. data/lib/jets/command/api_helpers.rb +41 -0
  178. data/lib/jets/command/aws_helpers.rb +26 -0
  179. data/lib/jets/command/base.rb +204 -0
  180. data/lib/jets/command/behavior.rb +83 -0
  181. data/lib/jets/command/environment_argument.rb +42 -0
  182. data/lib/jets/command/help/call.md +48 -0
  183. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  184. data/lib/jets/command/help/logs.md +21 -0
  185. data/lib/jets/{commands → command}/help/new.md +3 -4
  186. data/lib/jets/command/help/projects.md +6 -0
  187. data/lib/jets/command/help/releases.md +37 -0
  188. data/lib/jets/command/help/rollback.md +5 -0
  189. data/lib/jets/command/help/routes.md +15 -0
  190. data/lib/jets/command/help/stacks.md +6 -0
  191. data/lib/jets/command/help.rb +17 -0
  192. data/lib/jets/command/helpers/editor.rb +35 -0
  193. data/lib/jets/command.rb +133 -0
  194. data/lib/jets/commands/application/application_command.rb +40 -0
  195. data/lib/jets/commands/build/build_command.rb +33 -0
  196. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  197. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  198. data/lib/jets/commands/call/base_guesser.rb +4 -4
  199. data/lib/jets/commands/call/call_command.rb +27 -0
  200. data/lib/jets/commands/call/caller.rb +184 -0
  201. data/lib/jets/commands/call/guesser.rb +1 -1
  202. data/lib/jets/commands/clean/base.rb +1 -1
  203. data/lib/jets/commands/clean/build.rb +1 -1
  204. data/lib/jets/commands/clean/clean_command.rb +15 -0
  205. data/lib/jets/commands/clean/log.rb +1 -1
  206. data/lib/jets/commands/configure/configure_command.rb +9 -0
  207. data/lib/jets/commands/console/console_command.rb +38 -0
  208. data/lib/jets/commands/credentials/USAGE +103 -0
  209. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  210. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  211. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  212. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  213. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  214. data/lib/jets/commands/delete/delete_command.rb +155 -0
  215. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +28 -47
  216. data/lib/jets/commands/dev/dev_command.rb +19 -0
  217. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  218. data/lib/jets/commands/encrypted/USAGE +46 -0
  219. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  220. data/lib/jets/commands/gems/gems_command.rb +14 -0
  221. data/lib/jets/commands/generate/generate_command.rb +95 -0
  222. data/lib/jets/commands/help/USAGE +20 -0
  223. data/lib/jets/commands/help/help_command.rb +15 -0
  224. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  225. data/lib/jets/commands/logs/logs_command.rb +45 -0
  226. data/lib/jets/commands/new/new_command.rb +19 -0
  227. data/lib/jets/commands/notes/notes_command.rb +30 -0
  228. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  229. data/lib/jets/commands/projects/projects_command.rb +30 -0
  230. data/lib/jets/commands/rake/rake_command.rb +59 -0
  231. data/lib/jets/commands/releases/releases_command.rb +72 -0
  232. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  233. data/lib/jets/commands/routes/routes_command.rb +19 -0
  234. data/lib/jets/commands/runner/runner_command.rb +60 -0
  235. data/lib/jets/commands/server/server_command.rb +291 -0
  236. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  237. data/lib/jets/commands/status/status_command.rb +9 -0
  238. data/lib/jets/commands/{url.rb → url/url_command.rb} +37 -14
  239. data/lib/jets/commands/version/version_command.rb +11 -0
  240. data/lib/jets/commands.rb +17 -0
  241. data/lib/jets/configuration.rb +166 -0
  242. data/lib/jets/controller/base.rb +105 -183
  243. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  244. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  245. data/lib/jets/controller/compat/caching.rb +13 -0
  246. data/lib/jets/controller/compat/future.rb +13 -0
  247. data/lib/jets/controller/compat/route_set.rb +47 -0
  248. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  249. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  250. data/lib/jets/controller/decorate/logging.rb +90 -0
  251. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  252. data/lib/jets/controller/decorate/url_for.rb +10 -0
  253. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  254. data/lib/jets/controller/handler.rb +41 -0
  255. data/lib/jets/controller/middleware/main.rb +16 -8
  256. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +40 -15
  257. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  258. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  259. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  260. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -24
  261. data/lib/jets/controller/request/compat/params.rb +144 -0
  262. data/lib/jets/controller/request/compat/request.rb +125 -0
  263. data/lib/jets/controller/request.rb +35 -18
  264. data/lib/jets/controller/response/compat/response.rb +67 -0
  265. data/lib/jets/controller/response.rb +91 -8
  266. data/lib/jets/core.rb +136 -51
  267. data/lib/jets/core_ext/kernel.rb +2 -2
  268. data/lib/jets/core_ext/symbol.rb +5 -0
  269. data/lib/jets/core_ext.rb +4 -0
  270. data/lib/jets/dev_caching.rb +44 -0
  271. data/lib/jets/dotenv/ssm.rb +2 -2
  272. data/lib/jets/dotenv.rb +2 -1
  273. data/lib/jets/engine/configuration.rb +96 -0
  274. data/lib/jets/engine/turbines.rb +23 -0
  275. data/lib/jets/engine.rb +380 -0
  276. data/lib/jets/exception_reporting.rb +43 -0
  277. data/lib/jets/generators/job/job_generator.rb +41 -0
  278. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  279. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  280. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  281. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  282. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  283. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  284. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  285. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  286. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  287. data/lib/jets/generators/overrides/app/USAGE +38 -0
  288. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  289. data/lib/jets/generators/overrides/app/helpers.rb +143 -0
  290. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.gitignore +2 -1
  291. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  292. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  293. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  294. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  295. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  296. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  297. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  298. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  299. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  300. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  301. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  302. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  303. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  304. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  305. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  306. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  307. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  308. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  309. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  311. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  312. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  313. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  314. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  315. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  316. data/lib/jets/generators.rb +112 -0
  317. data/lib/jets/info.rb +116 -0
  318. data/lib/jets/initializable.rb +95 -0
  319. data/lib/jets/job/base.rb +3 -2
  320. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  321. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  322. data/lib/jets/job/dsl/iot_event.rb +6 -6
  323. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  324. data/lib/jets/job/dsl/log_event.rb +2 -2
  325. data/lib/jets/job/dsl/rule_event.rb +7 -4
  326. data/lib/jets/job/dsl/s3_event.rb +1 -1
  327. data/lib/jets/job/dsl/sns_event.rb +6 -6
  328. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  329. data/lib/jets/klass.rb +5 -6
  330. data/lib/jets/lambda/definition.rb +118 -0
  331. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  332. data/lib/jets/lambda/dsl.rb +64 -53
  333. data/lib/jets/lambda/function.rb +3 -3
  334. data/lib/jets/lambda/function_constructor.rb +6 -6
  335. data/lib/jets/lambda/functions.rb +36 -1
  336. data/lib/jets/mega/request/source.rb +1 -2
  337. data/lib/jets/mega/request.rb +4 -4
  338. data/lib/jets/names.rb +31 -15
  339. data/lib/jets/overrides/dummy/rails.rb +11 -0
  340. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  341. data/lib/jets/overrides/puma.rb +10 -0
  342. data/lib/jets/paths.rb +243 -0
  343. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  344. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  345. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  346. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  347. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  348. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  349. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  350. data/lib/jets/preheat.rb +12 -25
  351. data/lib/jets/processors/deducer.rb +2 -2
  352. data/lib/jets/processors/main_processor.rb +6 -13
  353. data/lib/jets/rack/logger.rb +77 -0
  354. data/lib/jets/router/compat/route_set.rb +177 -0
  355. data/lib/jets/router/dsl/mount.rb +40 -6
  356. data/lib/jets/router/dsl.rb +125 -105
  357. data/lib/jets/router/engine_mount.rb +36 -0
  358. data/lib/jets/router/help.rb +130 -0
  359. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  360. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  361. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  362. data/lib/jets/router/matcher.rb +135 -16
  363. data/lib/jets/router/resources/options.rb +6 -4
  364. data/lib/jets/router/route/after_initialize.rb +64 -0
  365. data/lib/jets/router/route/as.rb +93 -0
  366. data/lib/jets/router/route/authorizer.rb +1 -0
  367. data/lib/jets/router/route/compat.rb +45 -0
  368. data/lib/jets/router/route/info.rb +74 -0
  369. data/lib/jets/router/route/node.rb +137 -0
  370. data/lib/jets/router/route/path.rb +93 -0
  371. data/lib/jets/router/route.rb +109 -106
  372. data/lib/jets/router/route_set.rb +214 -0
  373. data/lib/jets/router/scope.rb +204 -69
  374. data/lib/jets/router/state.rb +36 -16
  375. data/lib/jets/router/util.rb +1 -31
  376. data/lib/jets/router.rb +64 -162
  377. data/lib/jets/ruby_version_check.rb +15 -0
  378. data/lib/jets/rule/base.rb +1 -0
  379. data/lib/jets/rule/dsl.rb +7 -7
  380. data/lib/jets/secrets.rb +110 -0
  381. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  382. data/lib/jets/spec_helpers/controllers.rb +32 -24
  383. data/lib/jets/spec_helpers.rb +0 -6
  384. data/lib/jets/stack/builder.rb +3 -2
  385. data/lib/jets/stack/definition.rb +1 -4
  386. data/lib/jets/stack/function.rb +2 -2
  387. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  388. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  389. data/lib/jets/stack/main/dsl/lambda.rb +26 -20
  390. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  391. data/lib/jets/stack/output/lookup.rb +1 -1
  392. data/lib/jets/stack/output.rb +2 -2
  393. data/lib/jets/stack/parameter.rb +2 -2
  394. data/lib/jets/stack/resource.rb +3 -3
  395. data/lib/jets/stack/s3_event.rb +51 -37
  396. data/lib/jets/stack.rb +1 -1
  397. data/lib/jets/tasks/engine.rake +85 -0
  398. data/lib/jets/tasks/framework.rake +66 -0
  399. data/lib/jets/tasks/log.rake +41 -0
  400. data/lib/jets/tasks/middleware.rake +9 -0
  401. data/lib/jets/tasks/misc.rake +81 -0
  402. data/lib/jets/tasks/statistics.rake +37 -0
  403. data/lib/jets/tasks/tmp.rake +51 -0
  404. data/lib/jets/tasks/yarn.rake +29 -0
  405. data/lib/jets/tasks/zeitwerk.rake +61 -0
  406. data/lib/jets/tasks.rb +18 -0
  407. data/lib/jets/turbine/configurable.rb +36 -0
  408. data/lib/jets/turbine/configuration.rb +101 -0
  409. data/lib/jets/turbine.rb +164 -20
  410. data/lib/jets/util/camelize.rb +24 -0
  411. data/lib/jets/version.rb +1 -1
  412. data/lib/jets.rb +7 -16
  413. metadata +410 -362
  414. data/bin/release +0 -9
  415. data/lib/jets/application/defaults.rb +0 -230
  416. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  417. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  418. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  419. data/lib/jets/cfn/builders/base_child_builder.rb +0 -88
  420. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  421. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  422. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  423. data/lib/jets/cfn/builders/page_builder.rb +0 -80
  424. data/lib/jets/cfn/built_template.rb +0 -15
  425. data/lib/jets/cfn/template_source.rb +0 -64
  426. data/lib/jets/commands/base.rb +0 -145
  427. data/lib/jets/commands/call.rb +0 -185
  428. data/lib/jets/commands/clean.rb +0 -19
  429. data/lib/jets/commands/configure.rb +0 -51
  430. data/lib/jets/commands/console.rb +0 -18
  431. data/lib/jets/commands/db/environment-task.rake +0 -3
  432. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  433. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  434. data/lib/jets/commands/db/tasks.rb +0 -34
  435. data/lib/jets/commands/db.rb +0 -13
  436. data/lib/jets/commands/dbconsole.rb +0 -134
  437. data/lib/jets/commands/delete.rb +0 -136
  438. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  439. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  440. data/lib/jets/commands/dynamodb.rb +0 -19
  441. data/lib/jets/commands/gems.rb +0 -13
  442. data/lib/jets/commands/help/call.md +0 -69
  443. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  444. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  445. data/lib/jets/commands/help/routes.md +0 -16
  446. data/lib/jets/commands/help.rb +0 -9
  447. data/lib/jets/commands/import/base.rb +0 -49
  448. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  449. data/lib/jets/commands/import/rack.rb +0 -16
  450. data/lib/jets/commands/import/rails.rb +0 -74
  451. data/lib/jets/commands/import/sequence.rb +0 -90
  452. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  453. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  454. data/lib/jets/commands/import.rb +0 -12
  455. data/lib/jets/commands/main.rb +0 -169
  456. data/lib/jets/commands/markdown/creator.rb +0 -58
  457. data/lib/jets/commands/markdown/index.rb +0 -27
  458. data/lib/jets/commands/markdown/page.rb +0 -125
  459. data/lib/jets/commands/markdown/shell.rb +0 -11
  460. data/lib/jets/commands/new.rb +0 -173
  461. data/lib/jets/commands/rake_command.rb +0 -61
  462. data/lib/jets/commands/rake_tasks.rb +0 -50
  463. data/lib/jets/commands/runner.rb +0 -16
  464. data/lib/jets/commands/sequence.rb +0 -104
  465. data/lib/jets/commands/stack_info.rb +0 -30
  466. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  467. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  468. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  469. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  470. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  471. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  472. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  473. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  474. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  475. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -72
  476. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  477. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  478. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  479. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  480. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  481. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  482. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -20
  483. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  484. data/lib/jets/commands/upgrade/version1.rb +0 -136
  485. data/lib/jets/commands/upgrade.rb +0 -105
  486. data/lib/jets/commands/webpacker_template.rb +0 -18
  487. data/lib/jets/controller/callbacks.rb +0 -73
  488. data/lib/jets/controller/cookies/jar.rb +0 -269
  489. data/lib/jets/controller/cookies.rb +0 -38
  490. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  491. data/lib/jets/controller/error.rb +0 -4
  492. data/lib/jets/controller/forgery_protection.rb +0 -43
  493. data/lib/jets/controller/layout.rb +0 -17
  494. data/lib/jets/controller/middleware/cors.rb +0 -60
  495. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  496. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  497. data/lib/jets/controller/middleware/reloader.rb +0 -15
  498. data/lib/jets/controller/parameters_filter.rb +0 -29
  499. data/lib/jets/controller/params.rb +0 -117
  500. data/lib/jets/controller/redirection.rb +0 -61
  501. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  502. data/lib/jets/controller/rendering.rb +0 -96
  503. data/lib/jets/controller/stage.rb +0 -34
  504. data/lib/jets/controller.rb +0 -3
  505. data/lib/jets/db.rb +0 -15
  506. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  507. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  508. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  509. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  510. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  511. data/lib/jets/generator.rb +0 -112
  512. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  513. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  514. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  515. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -52
  516. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  517. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  518. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  519. data/lib/jets/lambda/task.rb +0 -111
  520. data/lib/jets/logger.rb +0 -21
  521. data/lib/jets/middleware/configurator.rb +0 -84
  522. data/lib/jets/middleware/default_stack.rb +0 -53
  523. data/lib/jets/middleware/layer.rb +0 -34
  524. data/lib/jets/middleware/stack.rb +0 -77
  525. data/lib/jets/middleware.rb +0 -33
  526. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  527. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  528. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  529. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  530. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  531. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  532. data/lib/jets/overrides/rails.rb +0 -6
  533. data/lib/jets/rack_server.rb +0 -86
  534. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  535. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  536. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  537. data/lib/jets/resource/api_gateway/method.rb +0 -102
  538. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  539. data/lib/jets/resource/base.rb +0 -28
  540. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  541. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  542. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  543. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  544. data/lib/jets/resource/child_stack/base.rb +0 -24
  545. data/lib/jets/resource/lambda/function.rb +0 -221
  546. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  547. data/lib/jets/resource/permission.rb +0 -45
  548. data/lib/jets/resource.rb +0 -71
  549. data/lib/jets/router/error.rb +0 -4
  550. data/lib/jets/router/finder.rb +0 -47
  551. data/lib/jets/router/helpers/core_helper.rb +0 -27
  552. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  553. data/lib/jets/router/helpers.rb +0 -4
  554. data/lib/jets/router/method_creator/code.rb +0 -99
  555. data/lib/jets/router/method_creator/edit.rb +0 -12
  556. data/lib/jets/router/method_creator/generic.rb +0 -11
  557. data/lib/jets/router/method_creator/index.rb +0 -48
  558. data/lib/jets/router/method_creator/new.rb +0 -12
  559. data/lib/jets/router/method_creator/root.rb +0 -15
  560. data/lib/jets/router/method_creator/show.rb +0 -12
  561. data/lib/jets/router/method_creator.rb +0 -50
  562. data/lib/jets/turbo/database_yaml.rb +0 -41
  563. data/lib/jets/turbo/project/.gitignore +0 -12
  564. data/lib/jets/turbo/project/.jetskeep +0 -1
  565. data/lib/jets/turbo/project/Gemfile +0 -16
  566. data/lib/jets/turbo/project/Rakefile +0 -2
  567. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  568. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  569. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  570. data/lib/jets/turbo/project/config/application.rb +0 -5
  571. data/lib/jets/turbo/project/config/routes.rb +0 -4
  572. data/lib/jets/turbo/project/config.ru +0 -5
  573. data/lib/jets/turbo/rails.rb +0 -127
  574. data/lib/jets/turbo/templates/config/database.yml +0 -30
  575. data/lib/jets/turbo.rb +0 -56
  576. data/readme/prerelease.md +0 -6
  577. data/readme/testing.md +0 -60
  578. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  579. /data/lib/jets/{commands → command}/help/build.md +0 -0
  580. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  581. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  582. /data/lib/jets/{commands → command}/help/console.md +0 -0
  583. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  584. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  585. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  586. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  587. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  588. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  589. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  590. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  591. /data/lib/jets/{commands → command}/help/runner.md +0 -0
  592. /data/lib/jets/{commands → command}/help/server.md +0 -0
  593. /data/lib/jets/{commands → command}/help/status.md +0 -0
  594. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  595. /data/lib/jets/{commands → command}/help/url.md +0 -0
  596. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  597. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  598. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  599. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  600. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  601. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  602. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  603. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  604. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  605. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  606. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  607. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  608. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  609. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  610. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  611. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  612. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  613. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  614. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  615. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  616. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -1,52 +0,0 @@
1
- class Jets::PreheatJob < ApplicationJob
2
- ENABLED = Jets.config.prewarm.enable
3
- CONCURRENCY = Jets.config.prewarm.concurrency
4
- PREWARM_RATE = Jets.config.prewarm.rate
5
- torching = ENABLED && CONCURRENCY > 1
6
- warming = ENABLED && CONCURRENCY == 1
7
-
8
- class_timeout 30
9
- class_memory 1024
10
- class_iam_policy(Jets::Application.preheat_job_iam_policy)
11
-
12
- rate(PREWARM_RATE) if torching
13
- def torch
14
- threads = []
15
- CONCURRENCY.times do
16
- threads << Thread.new do
17
- # intentionally calling remote lambda for concurrency
18
- # avoid passing the _prewarm=1 flag because we want the PreheatJob#warm
19
- # to run it's normal workload.
20
- # Do not use Jets::Preheat.warm(function_name) here as that passes the _prewarm=1.
21
- function_name = "jets-preheat_job-warm"
22
- event_json = JSON.dump(event)
23
- options = call_options(event[:quiet])
24
- Jets::Commands::Call.new(function_name, event_json, options).run unless Jets.env.test?
25
- end
26
- end
27
- threads.each { |t| t.join }
28
- "Finished prewarming your application with a concurrency of #{CONCURRENCY}."
29
- end
30
-
31
- rate(PREWARM_RATE) if warming
32
- def warm
33
- options = call_options(event[:quiet])
34
- Jets::Preheat.warm_all(options)
35
- "Finished prewarming your application."
36
- end
37
-
38
- class << self
39
- # Can use this to prewarm post deploy
40
- def prewarm!
41
- meth = CONCURRENCY > 1 ? :torch : :warm
42
- perform_now(meth, quiet: true)
43
- end
44
- end
45
-
46
- private
47
- def call_options(quiet)
48
- options = {}
49
- options.merge!(mute: true, mute_output: true) if quiet
50
- options
51
- end
52
- end
@@ -1,8 +0,0 @@
1
- <% @previews.each do |preview| %>
2
- <h3><%= link_to(preview.preview_name.titleize, "/jets/mailers/#{preview.preview_name}") %></h3>
3
- <ul>
4
- <% preview.emails.each do |email| %>
5
- <li><%= link_to(email, "/jets/mailers/#{preview.preview_name}/#{email}") %></li>
6
- <% end %>
7
- </ul>
8
- <% end %>
@@ -1,6 +0,0 @@
1
- <h3><%= @preview.preview_name.titleize %></h3>
2
- <ul>
3
- <% @preview.emails.each do |email| %>
4
- <li><%= link_to(email, "/jets/mailers/#{@preview.preview_name}/#{email}") %></li>
5
- <% end %>
6
- </ul>
@@ -1,52 +0,0 @@
1
- module Jets
2
- # Reference: https://github.com/rails/rails/blob/master/actionmailer/lib/action_mailer/railtie.rb
3
- class Mailer < ::Jets::Turbine
4
- config.action_mailer = ActiveSupport::OrderedOptions.new
5
-
6
- initializer "action_mailer.logger" do
7
- ActiveSupport.on_load(:action_mailer) { self.logger ||= Jets.logger }
8
- end
9
-
10
- initializer "action_mailer.set_configs" do |app|
11
- app.config.action_mailer ||= ActiveSupport::OrderedOptions.new # TODO: temp fix. only happens sometimes?
12
- options = app.config.action_mailer
13
- options.default_url_options ||= {}
14
- options.default_url_options[:protocol] ||= "https"
15
- options.show_previews = false if options.show_previews.nil?
16
- options.preview_path ||= "#{Jets.root}/app/previews" if options.show_previews
17
- options.view_paths ||= "#{Jets.root}/app/views"
18
-
19
- # TODO: Dont think Jets sets asset_host the same way
20
- # make sure readers methods get compiled
21
- # options.asset_host ||= app.config.asset_host
22
- # options.relative_url_root ||= app.config.relative_url_root
23
-
24
- ActiveSupport.on_load(:action_mailer) do
25
- include AbstractController::UrlFor
26
- # TODO: figure out rest of the helpers
27
- # extend ::AbstractController::Railties::RoutesHelpers.with(app.routes, false)
28
- # include app.routes.mounted_helpers
29
-
30
- register_interceptors(options.delete(:interceptors))
31
- register_preview_interceptors(options.delete(:preview_interceptors))
32
- register_observers(options.delete(:observers))
33
-
34
- options.each { |k, v| send("#{k}=", v) }
35
- end
36
- end
37
-
38
- after_initializer "action_mailer.routes" do |app|
39
- if app.config.action_mailer.show_previews
40
- app.routes.draw do
41
- get "jets/mailers", to: "jets/mailers#index"
42
- get "jets/mailers/*path", to: "jets/mailers#preview"
43
- end
44
-
45
- ActiveSupport.on_load :action_controller do
46
- internal_views = File.expand_path("internal/app/views", File.dirname(__FILE__))
47
- ActionController::Base.append_view_path(internal_views)
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,111 +0,0 @@
1
- class Jets::Lambda::Task
2
- attr_accessor :class_name, :type
3
- attr_reader :meth, :properties, :iam_policy, :managed_iam_policy, :lang, :associated_resources
4
- def initialize(class_name, meth, options={})
5
- @class_name = class_name.to_s
6
- @meth = meth
7
- @options = options
8
- @type = options[:type] || get_type # controller, job, or function
9
- @properties = options[:properties] || {}
10
- @iam_policy = options[:iam_policy]
11
- @managed_iam_policy = options[:managed_iam_policy]
12
- @lang = options[:lang] || :ruby
13
- @associated_resources = options[:associated_resources] || {}
14
- @replacements = options[:replacements] || {} # added to baseline replacements
15
- end
16
-
17
- def name
18
- @meth
19
- end
20
-
21
- def public_meth?
22
- # For anonymous classes (app/functions/hello.rb) the class name will be blank.
23
- # These types of classes are treated specially and has only one handler method
24
- # that is registered. So we know it is public.
25
- return true if @class_name.nil? || @class_name == ''
26
-
27
- # Consider all polymorphic methods public for now
28
- return true if @lang != :ruby
29
-
30
- klass = @class_name.constantize
31
- public_methods = klass.public_instance_methods
32
- public_methods.include?(meth.to_sym)
33
- end
34
-
35
- def build_function_iam?
36
- !!(@iam_policy || @managed_iam_policy)
37
- end
38
-
39
- @@lang_exts = {
40
- ruby: '.rb',
41
- python: '.py',
42
- node: '.js',
43
- }
44
- def lang_ext
45
- @@lang_exts[@lang]
46
- end
47
-
48
- # The get_type method works for controller and job classes.
49
- #
50
- # Usually able to get the type from the class name. Examples:
51
- #
52
- # PostsController => controller
53
- # HardJob => job
54
- #
55
- # However, for function types, we are not able to get the type for multiple of
56
- # reasons. First, function types are allowed to be named with or without
57
- # _function. Examples:
58
- #
59
- # path => class => type
60
- # app/functions/hello.rb => Hello => function
61
- # app/functions/hello_function.rb => HelloFunction => function
62
- #
63
- # The second reason is that functions are not regular ruby classes. Instead they
64
- # are anonymous classes created with Class.new. When classes are created with
65
- # Class.new the method_added hook has "" (blank string) as the self class name.
66
- # We add the class_type to the task later on as we are constructing the class
67
- # as part of the Class.new logic.
68
- #
69
- # For controller and job standard ruby classes though it can easily be
70
- # determinated as part of initialization. So we get the type for convenience then.
71
- #
72
- # For anonymous function classes, we just set to nil and will later fix in
73
- # FunctionConstructor.
74
- #
75
- # Returns: "controller", "job" or nil
76
- def get_type
77
- unless @class_name.empty? # when anonymous class is created with Class.new
78
- @class_name.underscore.split('_').last # controller, job or rule
79
- end
80
- end
81
-
82
- def full_handler(handler_function)
83
- "#{handler_base}.#{handler_function}"
84
- end
85
-
86
- def handler_path
87
- "#{handler_base}#{lang_ext}"
88
- end
89
-
90
- def handler_base
91
- base = "handlers/#{@type.pluralize}/#{@class_name.underscore}"
92
- base += "/#{@lang}" if @lang != :ruby
93
- base += "/#{@meth}"
94
- end
95
-
96
- def poly_src_path
97
- handler_path.sub("handlers/", "app/")
98
- end
99
-
100
- def replacements
101
- # Merge in the custom replacements specific to each app class: ConfigRule, Job, etc.
102
- baseline_replacements.merge(@replacements)
103
- end
104
-
105
- def baseline_replacements
106
- {
107
- # camelized because used in not just keys but common used in values
108
- namespace: @meth.to_s.camelize,
109
- }
110
- end
111
- end
data/lib/jets/logger.rb DELETED
@@ -1,21 +0,0 @@
1
- require 'logger'
2
-
3
- module Jets
4
- class Logger < ::Logger
5
- # Only need to override the add method as the other calls all lead to it.
6
- def add(severity, message = nil, progname = nil)
7
- # Taken from Logger#add source
8
- # https://ruby-doc.org/stdlib-2.5.1/libdoc/logger/rdoc/Logger.html#method-i-add
9
- if message.nil?
10
- if block_given?
11
- message = yield
12
- else
13
- message = progname
14
- progname = @progname
15
- end
16
- end
17
-
18
- super # original logical
19
- end
20
- end
21
- end
@@ -1,84 +0,0 @@
1
- # Based on Rails MiddlewareStackProxy
2
- #
3
- # Configurator is a recorder for the Jets middleware stack that allows
4
- # you to configure middlewares in your application. It works basically as a
5
- # command recorder, saving each command to be applied after initialization
6
- # over the default middleware stack, so you can add, swap, or remove any
7
- # middleware in Jets.
8
- #
9
- # You can add your own middlewares by using the +config.middleware.use+ method:
10
- #
11
- # config.middleware.use Magical::Unicorns
12
- #
13
- # This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
14
- # You can use +insert_before+ if you wish to add a middleware before another:
15
- #
16
- # config.middleware.insert_before Rack::Head, Magical::Unicorns
17
- #
18
- # There's also +insert_after+ which will insert a middleware after another:
19
- #
20
- # config.middleware.insert_after Rack::Head, Magical::Unicorns
21
- #
22
- # Middlewares can also be completely swapped out and replaced with others:
23
- #
24
- # config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
25
- #
26
- # And finally they can also be removed from the stack completely:
27
- #
28
- # config.middleware.delete ActionDispatch::Flash
29
- #
30
- module Jets::Middleware
31
- class Configurator
32
- def initialize(operations = [], delete_operations = [])
33
- @operations = operations
34
- @delete_operations = delete_operations
35
- end
36
-
37
- def insert_before(*args, &block)
38
- @operations << [__method__, args, block]
39
- end
40
-
41
- alias :insert :insert_before
42
-
43
- def insert_after(*args, &block)
44
- @operations << [__method__, args, block]
45
- end
46
-
47
- def swap(*args, &block)
48
- @operations << [__method__, args, block]
49
- end
50
-
51
- def use(*args, &block)
52
- @operations << [__method__, args, block]
53
- end
54
-
55
- def delete(*args, &block)
56
- @delete_operations << [__method__, args, block]
57
- end
58
-
59
- def unshift(*args, &block)
60
- @operations << [__method__, args, block]
61
- end
62
-
63
- def merge_into(other) #:nodoc:
64
- (@operations + @delete_operations).each do |operation, args, block|
65
- other.send(operation, *args, &block)
66
- end
67
-
68
- other
69
- end
70
-
71
- def +(other) # :nodoc:
72
- Configurator.new(@operations + other.operations, @delete_operations + other.delete_operations)
73
- end
74
-
75
- protected
76
- def operations
77
- @operations
78
- end
79
-
80
- def delete_operations
81
- @delete_operations
82
- end
83
- end
84
- end
@@ -1,53 +0,0 @@
1
- require "shotgun"
2
-
3
- module Jets::Middleware
4
- class DefaultStack
5
- attr_reader :config, :app
6
- def initialize(app, config)
7
- @app = app
8
- @config = config
9
- end
10
-
11
- def build_stack
12
- Stack.new do |middleware|
13
- middleware.use Shotgun::Static
14
- middleware.use Rack::Runtime
15
- middleware.use Jets::Controller::Middleware::Cors if cors_enabled?
16
- middleware.use Rack::MethodOverride unless ENV['JETS_RACK_METHOD_OVERRIDE'] == '0' # must come before Middleware::Local for multipart post forms to work
17
- middleware.use Jets::Controller::Middleware::Reloader if Jets.config.hot_reload
18
- middleware.use Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only
19
- middleware.use session_store, session_options
20
- middleware.use Rack::Head
21
- middleware.use Rack::ConditionalGet
22
- middleware.use Rack::ETag
23
- use_webpacker(middleware)
24
- end
25
- end
26
-
27
- private
28
- def cors_enabled?
29
- Jets.config.cors
30
- end
31
-
32
- # Written as method to easily not include webpacker for case when either
33
- # webpacker not installed at all or disabled upon `jets deploy`.
34
- def use_webpacker(middleware)
35
- return unless Jets.webpacker? # checks for local development if webpacker installed
36
- # Different check for middleware because we need webpacker helpers for url helpers.
37
- # But we dont want to actually serve via webpacker middleware when running on AWS.
38
- # By this time the url helpers are serving assets out of s3.
39
- return if File.exist?("#{Jets.root}/config/disable-webpacker-middleware.txt") # created as part of `jets deploy`
40
- require "jets/controller/middleware/webpacker_setup"
41
- middleware.use Webpacker::DevServerProxy
42
- end
43
-
44
- def session_store
45
- Jets.config.session[:store] # do not use dot notation. session.store is a method on ActiveSupport::OrderedOptions.new
46
- end
47
-
48
- def session_options
49
- defaults = { secret: ENV['SECRET_KEY_BASE'] }
50
- defaults.merge(Jets.config.session.options)
51
- end
52
- end
53
- end
@@ -1,34 +0,0 @@
1
- module Jets::Middleware
2
- class Layer
3
- attr_reader :args, :block, :klass
4
-
5
- def initialize(klass, args, block)
6
- @klass = klass
7
- @args = args
8
- @block = block
9
- end
10
-
11
- def name; klass.name; end
12
-
13
- def ==(middleware)
14
- case middleware
15
- when Layer
16
- klass == middleware.klass
17
- when Class
18
- klass == middleware
19
- end
20
- end
21
-
22
- def inspect
23
- if klass.is_a?(Class)
24
- klass.to_s
25
- else
26
- klass.class.to_s
27
- end
28
- end
29
-
30
- def build(app)
31
- klass.new(app, *args, &block)
32
- end
33
- end
34
- end
@@ -1,77 +0,0 @@
1
- module Jets::Middleware
2
- class Stack
3
- include Enumerable
4
-
5
- attr_accessor :middlewares
6
- def initialize(*args)
7
- @middlewares = []
8
- yield(self) if block_given?
9
- end
10
-
11
- def each
12
- @middlewares.each { |x| yield x }
13
- end
14
-
15
- def size
16
- middlewares.size
17
- end
18
-
19
- def last
20
- middlewares.last
21
- end
22
-
23
- def [](i)
24
- middlewares[i]
25
- end
26
-
27
- def unshift(klass, *args, &block)
28
- middlewares.unshift(build_middleware(klass, args, block))
29
- end
30
-
31
- def initialize_copy(other)
32
- self.middlewares = other.middlewares.dup
33
- end
34
-
35
- def insert(index, klass, *args, &block)
36
- index = assert_index(index, :before)
37
- middlewares.insert(index, build_middleware(klass, args, block))
38
- end
39
-
40
- alias_method :insert_before, :insert
41
-
42
- def insert_after(index, *args, &block)
43
- index = assert_index(index, :after)
44
- insert(index + 1, *args, &block)
45
- end
46
-
47
- def swap(target, *args, &block)
48
- index = assert_index(target, :before)
49
- insert(index, *args, &block)
50
- middlewares.delete_at(index + 1)
51
- end
52
-
53
- def delete(target)
54
- middlewares.delete_if { |m| m.klass == target }
55
- end
56
-
57
- def use(klass, *args, &block)
58
- middlewares.push(build_middleware(klass, args, block))
59
- end
60
-
61
- def build(app = Proc.new)
62
- middlewares.freeze.reverse.inject(app) { |a, e| e.build(a) }
63
- end
64
-
65
- private
66
-
67
- def assert_index(index, where)
68
- i = index.is_a?(Integer) ? index : middlewares.index { |m| m.klass == index }
69
- raise "No such middleware to insert #{where}: #{index.inspect}" unless i
70
- i
71
- end
72
-
73
- def build_middleware(klass, args, block)
74
- Layer.new(klass, args, block)
75
- end
76
- end
77
- end
@@ -1,33 +0,0 @@
1
- module Jets
2
- module Middleware
3
- extend Memoist
4
-
5
- def call(env)
6
- stack = middlewares.build(endpoint)
7
- stack.call(env)
8
- end
9
-
10
- # Final middleware in the stack
11
- def endpoint
12
- Jets::Controller::Middleware::Main
13
- end
14
-
15
- # Called in Jets::Booter to build middleware stack only once during bootup
16
- def build_stack
17
- middlewares
18
- end
19
-
20
- def middlewares
21
- config_middleware.merge_into(default_stack) # returns Jets::Middleware::Stack
22
- end
23
- memoize :middlewares
24
-
25
- def default_stack
26
- Jets::Middleware::DefaultStack.new(Jets.config, Jets.application).build_stack # returns Jets::Middleware::Stack
27
- end
28
-
29
- def config_middleware
30
- Jets.config.middleware # returns Jets::Middleware::Configurator
31
- end
32
- end
33
- end
@@ -1,13 +0,0 @@
1
- ActiveSupport.on_load :action_controller do
2
- class ActionController::Base
3
- class << self
4
- @@_prefixes = nil
5
- def _prefixes
6
- @@_prefixes
7
- end
8
- def _prefixes=(v)
9
- @@_prefixes = v
10
- end
11
- end
12
- end
13
- end
@@ -1,114 +0,0 @@
1
- # Override to prepend stage name when on AWS.
2
- module Jets::AssetTagHelper
3
- extend Memoist
4
- include Jets::CommonMethods
5
- include Jets::AwsServices
6
-
7
- def javascript_include_tag(*sources, **options)
8
- sources = sources.map { |s| s3_public_url(s, :javascripts) }
9
- super
10
- end
11
-
12
- def stylesheet_link_tag(*sources, **options)
13
- sources = sources.map { |s| s3_public_url(s, :stylesheets) }
14
- super
15
- end
16
-
17
- # Locally:
18
- #
19
- # image_tag("jets.png") => /images/jets.png
20
- # image_tag("/images/jets.png") => /images/jets.png
21
- #
22
- # Remotely:
23
- #
24
- # image_tag("jets.png") => https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1kih4n2te0n66/jets/public/images/jets.png
25
- def image_tag(source, options = {})
26
- source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
27
-
28
- # mimic original behavior to get /images in source
29
- source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
30
- if on_aws? && !source.starts_with?('http')
31
- source = "#{s3_public}#{source}"
32
- end
33
-
34
- super
35
- end
36
-
37
- def asset_path(source, options = {})
38
- source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
39
- # mimic original behavior to get /images in source
40
- source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
41
-
42
- # Examples to help understand:
43
- #
44
- # puts "AssetTagHelper#asset_path source #{source}"
45
- # puts "AssetTagHelper#asset_path asset_folder?(source) #{asset_folder?(source).inspect}"
46
- # AssetTagHelper#asset_path source /packs/images/myimage-e5f675d1ba26865fd65e919beb5bb86b.png
47
- # AssetTagHelper#asset_path asset_folder?(source) "images"
48
- #
49
- if on_aws? && asset_folder?(source) && !source.starts_with?('http')
50
- source = "#{s3_public}#{source}"
51
- end
52
-
53
- super
54
- end
55
-
56
- # Serves favicon out of s3 when on API gateway.
57
- #
58
- # Useful helper for API Gateway since serving binary data like images without
59
- # an Accept header doesnt work well. You can changed Media Types to '*/*'
60
- # but then that messes up form data.
61
- def favicon_path(path='favicon.ico')
62
- on_aws? ? "#{s3_public}/#{path}" : "/#{path}"
63
- end
64
-
65
- private
66
- # Whatever is configured in Jets.config.assets.folders
67
- # Example: packs, images, assets
68
- def asset_folder?(url)
69
- Jets.config.assets.folders.detect do |folder|
70
- url.include?(folder)
71
- end
72
- end
73
-
74
- # User can use:
75
- # javascript_include_tag "assets/test"
76
- #
77
- # Rails automatically adds "javscript" in front, to become:
78
- #
79
- # /javascripts/assets/test
80
- #
81
- # We want to add the API Gateway stage name in front for this:
82
- #
83
- # /stag/javascript/asset/test
84
- #
85
- # But adding it in front results in this:
86
- #
87
- # /javascript/stag/asset/test
88
- #
89
- # If there's a / in front then rails will not add the "javascript":
90
- # So we can add the javascript ourselves and then add the stag with a
91
- # / in front.
92
- def s3_public_url(url, asset_type)
93
- unless url.starts_with?('/') or url.starts_with?('http')
94
- url = "/#{asset_type}/#{url}" # /javascript/asset/test
95
- end
96
- add_s3_public(url)
97
- end
98
-
99
- # Example:
100
- # Url: /packs/application-e7654c50abd78161b641.js
101
- # Returns: https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1jg5o076egkk4/jets/public/packs/application-e7654c50abd78161b641.js
102
- def add_s3_public(url)
103
- return url unless on_aws?
104
- "#{s3_public}#{url}"
105
- end
106
-
107
- def s3_public
108
- # s3_base_url.txt is created as part of the build process
109
- s3_base_url = IO.read("#{Jets.root}/config/s3_base_url.txt").strip
110
- "#{s3_base_url}/public"
111
- end
112
- memoize :s3_public
113
- end
114
- ActionView::Helpers.send(:include, Jets::AssetTagHelper)
@@ -1,13 +0,0 @@
1
- module Jets::CommonMethods
2
- extend Memoist
3
- # Add API Gateway Stage Name
4
- def add_stage_name(url)
5
- Jets::Controller::Stage.add(request.host, url) if request.present?
6
- end
7
-
8
- def on_aws?
9
- on_cloud9 = Jets::Controller::Stage.on_cloud9?(request.headers['HTTP_HOST'])
10
- !request.headers['HTTP_X_AMZN_TRACE_ID'].nil? && !on_cloud9
11
- end
12
- memoize :on_aws?
13
- end