jets 4.0.12 → 5.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (616) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -1
  3. data/CHANGELOG.md +52 -8
  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 +14 -11
  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 +17 -6
  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 +26 -23
  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 -15
  413. metadata +429 -339
  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 -61
  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 -19
  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
@@ -30,8 +30,8 @@ module Jets::Builders
30
30
  cache_check_message
31
31
 
32
32
  clean_start
33
- compile_assets # easier to do before we copy the project because node and yarn has been likely setup in the that dir
34
- compile_rails_assets
33
+ assets_precompile
34
+ run_webpack # easier to do before we copy the project because node and yarn has been likely setup in the that dir
35
35
  copy_project
36
36
  copy_ruby_version_file
37
37
  Dir.chdir("#{stage_area}/code") do
@@ -95,7 +95,6 @@ module Jets::Builders
95
95
  # Reconfigure code
96
96
  store_s3_base_url
97
97
  disable_webpacker_middleware
98
- copy_internal_jets_code
99
98
 
100
99
  # Code prep and zipping
101
100
  check_code_size!
@@ -117,32 +116,6 @@ module Jets::Builders
117
116
  CodeSize.check!
118
117
  end
119
118
 
120
- # Materialized internal code into actually user Jets app as part of the deploy process.
121
- # Examples of things that we might materialize:
122
- #
123
- # Views
124
- # Simple Functions
125
- #
126
- # For functions, We copy the files into the project because we cannot require
127
- # simple functions directly since they are wrapped by an anonymous class.
128
- def copy_internal_jets_code
129
- files = []
130
-
131
- mailers_controller = Jets::Router.has_controller?("Jets::MailersController")
132
- if mailers_controller
133
- files << "app/controllers/jets/mailers_controller.rb"
134
- files << "app/views/jets/mailers"
135
- files << "app/helpers/jets/mailers_helper.rb"
136
- end
137
-
138
- files.each do |relative_path|
139
- src = File.expand_path("../internal/#{relative_path}", File.dirname(__FILE__))
140
- dest = "#{"#{stage_area}/code"}/#{relative_path}"
141
- FileUtils.mkdir_p(File.dirname(dest))
142
- FileUtils.cp_r(src, dest)
143
- end
144
- end
145
-
146
119
  # Thanks https://stackoverflow.com/questions/9354595/recursively-getting-the-size-of-a-directory
147
120
  # Seems to overestimate a little bit but close enough.
148
121
  def dir_size(folder)
@@ -157,8 +130,8 @@ module Jets::Builders
157
130
  # At this point the minimal stack exists, so we can grab it with the AWS API.
158
131
  # We do not want to grab this as part of the live request because it is slow.
159
132
  def store_s3_base_url
133
+ return if Jets.config.mode == "job"
160
134
  write_s3_base_url("#{stage_area}/code/config/s3_base_url.txt")
161
- write_s3_base_url("#{stage_area}/rack/config/s3_base_url.txt") if Jets.rack?
162
135
  end
163
136
 
164
137
  def write_s3_base_url(full_path)
@@ -175,12 +148,11 @@ module Jets::Builders
175
148
  #
176
149
  return Jets.config.assets.base_url if Jets.config.assets.base_url
177
150
 
151
+ # Note: subdomain form works with CORs but the subfolder form does not. Using subfolder form.
178
152
  region = Jets.aws.region
179
-
180
153
  asset_base_url = region == 'us-east-1' ?
181
- "https://s3.amazonaws.com" :
182
- "https://s3-#{region}.amazonaws.com"
183
- "#{asset_base_url}/#{s3_bucket}/jets" # s3_base_url
154
+ "https://#{s3_bucket}.s3.amazonaws.com/jets" :
155
+ "https://#{s3_bucket}.s3-#{region}.amazonaws.com/jets"
184
156
  end
185
157
 
186
158
  def s3_bucket
@@ -193,50 +165,58 @@ module Jets::Builders
193
165
  FileUtils.touch(full_path)
194
166
  end
195
167
 
168
+ def assets_precompile
169
+ return if skip_assets?
170
+ return unless gemfile_include?("sprockets-jets")
171
+ sh "jets assets:precompile"
172
+ end
173
+
196
174
  # This happens in the current app directory not the tmp code for simplicity.
197
175
  # This is because the node and yarn has likely been set up correctly there.
198
- def compile_assets
199
- if ENV['JETS_SKIP_ASSETS']
200
- puts "Skip compiling assets".color(:yellow) # useful for debugging
201
- return
202
- end
176
+ def run_webpack
177
+ return if skip_assets?
178
+ return unless gemfile_include?("jetpacker")
203
179
 
204
180
  headline "Compling assets in current project directory"
205
- return unless webpacker_included?
206
-
207
181
  sh("yarn install")
208
182
 
209
- ENV['WEBPACKER_ASSET_HOST'] = webpacker_asset_host if Jets.config.assets.webpacker_asset_host
183
+ ENV['WEBPACKER_ASSET_HOST'] = asset_host if Jets.config.assets.base_url
210
184
  webpack_command = File.exist?("#{Jets.root}/bin/webpack") ?
211
185
  "bin/webpack" :
212
186
  `which webpack`.strip
213
187
  sh "JETS_ENV=#{Jets.env} #{webpack_command}"
214
188
  end
215
189
 
190
+ def skip_assets?
191
+ if ENV['JETS_SKIP_ASSETS']
192
+ puts "Skip compiling assets".color(:yellow) # useful for debugging
193
+ return true
194
+ end
195
+ return true if Jets.config.mode == "job"
196
+ return true unless Jets.config.respond_to?(:assets)
197
+ Jets.config.assets.enable_webpack
198
+ end
199
+
216
200
  # Different url for these. Examples:
217
201
  #
218
- # webpacker_asset_host https://demo-dev-s3bucket-lw5vq7ht8ip4.s3.us-west-2.amazonaws.com/jets/public/packs/media/images/boltops-0dd1c6bd.png
219
- # s3_base_url https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-lw5vq7ht8ip4/jets/packs/media/images/boltops-0dd1c6bd.png
202
+ # asset_host https://demo-dev-s3bucket-lw5vq7ht8ip4.s3.us-west-2.amazonaws.com/jets/public/packs/media/images/boltops-0dd1c6bd.png
203
+ # s3_base_url https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-lw5vq7ht8ip4/jets/packs/media/images/boltops-0dd1c6bd.png
220
204
  #
221
- # Interesting: webpacker_asset_host works but s3_base_url does not for CORs. IE: reactjs or vuejs requests
205
+ # Interesting: asset_host works but s3_base_url does not for CORs. IE: reactjs or vuejs requests
222
206
  # Thinking AWS configures the non-subdomain url endpoint to be more restrictive.
223
207
  #
224
- def webpacker_asset_host
225
- # Allow user to set assets.webpacker_asset_host
226
- #
227
- # Jets.application.configure do
228
- # config.assets.webpacker_asset_host = "https://cloudfront.com/my/base/path"
229
- # end
230
- #
208
+ # Allow user to set assets.asset_host
209
+ #
210
+ # Jets.application.configure do
211
+ # config.assets.asset_host = "https://cloudfront.com/my/base/path"
212
+ # end
213
+ #
214
+ def asset_host
231
215
  assets = Jets.config.assets
232
- return assets.webpacker_asset_host if assets.webpacker_asset_host && assets.webpacker_asset_host != "s3_endpoint"
233
- return assets.base_url if assets.base_url
216
+ return assets.base_url if assets.base_url && assets.base_url != "s3_endpoint"
234
217
 
235
218
  # By default, will use the s3 url endpoint directly by convention
236
- return unless assets.webpacker_asset_host == "s3_endpoint"
237
-
238
219
  region = Jets.aws.region
239
-
240
220
  asset_base_url = region == 'us-east-1' ?
241
221
  "https://#{s3_bucket}.s3.amazonaws.com" :
242
222
  "https://#{s3_bucket}.s3.#{region}.amazonaws.com"
@@ -244,7 +224,7 @@ module Jets::Builders
244
224
  "#{asset_base_url}/jets/public" # s3_base_url
245
225
  end
246
226
 
247
- def webpacker_included?
227
+ def gemfile_include?(name)
248
228
  # Old code, leaving around for now:
249
229
  # Thanks: https://stackoverflow.com/questions/4195735/get-list-of-gems-being-used-by-a-bundler-project
250
230
  # webpacker_loaded = Gem.loaded_specs.keys.include?("webpacker")
@@ -253,56 +233,7 @@ module Jets::Builders
253
233
  # Checking this way because when using jets standalone for Afterburner mode we don't want to run into
254
234
  # bundler gem collisions. TODO: figure out the a better way to handle the collisions.
255
235
  lines = IO.readlines("#{Jets.root}/Gemfile")
256
- lines.detect { |l| l =~ /webpacker/ || l =~ /jetpacker/ }
257
- end
258
-
259
- # This happens in the current app directory not the tmp code for simplicity
260
- # This is because the node likely been set up correctly there.
261
- def compile_rails_assets
262
- return unless Jets.rack? && rails? && !rails_api?
263
-
264
- if ENV['JETS_SKIP_ASSETS']
265
- puts "Skip compiling rack assets".color(:yellow) # useful for debugging
266
- return
267
- end
268
-
269
- # Need to capture JETS_ROOT since can be changed by Turbo mode
270
- jets_root = Jets.root
271
- Bundler.with_unbundled_env do
272
- # Switch gemfile for Afterburner mode
273
- gemfile = ENV['BUNDLE_GEMFILE']
274
- ENV['BUNDLE_GEMFILE'] = "#{jets_root}/rack/Gemfile"
275
- sh "cd #{jets_root} && bundle install"
276
- ENV['BUNDLE_GEMFILE'] = gemfile
277
-
278
- rails_assets(:clobber, jets_root: jets_root)
279
- rails_assets(:precompile, jets_root: jets_root)
280
- end
281
- end
282
-
283
- def rails_assets(cmd, jets_root:)
284
- # rake is available in both rails 4 and 5. rails command only in 5
285
- command = "bundle exec rake assets:#{cmd} --trace"
286
- command = "RAILS_ENV=#{Jets.env} #{command}" unless Jets.env.development?
287
- sh("cd #{jets_root}/rack && #{command}")
288
- end
289
-
290
- # Rudimentary rails detection
291
- # Duplicated in builders/reconfigure_rails.rb
292
- def rails?
293
- config_ru = "#{Jets.root}/rack/config.ru"
294
- return false unless File.exist?(config_ru)
295
- !IO.readlines(config_ru).grep(/Rails.application/).empty?
296
- end
297
-
298
- # Rudimentary rails api detection
299
- # Duplicated in builders/reconfigure_rails.rb
300
- # Another way of checking is loading a rails console and checking Rails.application.config.api_only
301
- # Using this way for simplicity.
302
- def rails_api?
303
- config_app = "#{Jets.root}/rack/config/application.rb"
304
- return false unless File.exist?(config_app)
305
- !IO.readlines(config_app).grep(/config.api_only.*=.*true/).empty?
236
+ lines.detect { |l| l =~ /#{name}/ }
306
237
  end
307
238
 
308
239
  # Cleans out non-cached files like code-*.zip in Jets.build_root
@@ -326,7 +257,6 @@ module Jets::Builders
326
257
  FileUtils.rm_rf("#{stage_area}/code") # remove current code folder
327
258
  move_node_modules(Jets.root, Jets.build_root)
328
259
  begin
329
- # puts "cp -r #{@full_project_path} #{"#{stage_area}/code"}".color(:yellow) # uncomment to debug
330
260
  Jets::Util.cp_r(@full_project_path, "#{stage_area}/code")
331
261
  ensure
332
262
  move_node_modules(Jets.build_root, Jets.root) # move node_modules directory back
@@ -372,11 +302,14 @@ module Jets::Builders
372
302
  memoize :rack_packager
373
303
 
374
304
  def package_ruby
305
+ if ENV['JETS_SKIP_PACKAGE']
306
+ puts "Skip packaging ruby".color(:yellow) # useful for developing handlers
307
+ return
308
+ end
375
309
  return if Jets.poly_only?
376
310
 
377
311
  check_agree
378
312
  ruby_packager.install
379
- reconfigure_rails # call here after "#{stage_area}/code" is available
380
313
  rack_packager.install
381
314
  ruby_packager.finish # by this time we have a /tmp/jets/demo/stage/code/vendor/gems
382
315
  rack_packager.finish
@@ -385,7 +318,7 @@ module Jets::Builders
385
318
  end
386
319
 
387
320
  def check_agree
388
- agree = Jets::Gems::Agree.new
321
+ agree = Jets::Api::Agree.new
389
322
  agree.prompt
390
323
  end
391
324
 
@@ -395,11 +328,6 @@ module Jets::Builders
395
328
  lambda_layer.build
396
329
  end
397
330
 
398
- # TODO: Move logic into plugin instead
399
- def reconfigure_rails
400
- ReconfigureRails.new("#{"#{stage_area}/code"}/rack").run
401
- end
402
-
403
331
  def cache_check_message
404
332
  if File.exist?("#{Jets.build_root}/cache")
405
333
  puts "The #{Jets.build_root}/cache folder exists. Incrementally re-building the jets using the cache. To clear the cache: rm -rf #{Jets.build_root}/cache"
@@ -414,7 +342,7 @@ module Jets::Builders
414
342
 
415
343
  # Group all the path settings together here
416
344
  def self.tmp_code
417
- Jets::Commands::Build.tmp_code
345
+ Jets::Cfn::Builder.tmp_code
418
346
  end
419
347
 
420
348
  def tmp_code
@@ -40,6 +40,7 @@ module Jets::Builders
40
40
  end
41
41
 
42
42
  def compute_size(path)
43
+ return 0 unless File.exist?(path)
43
44
  # -k option is required for macosx but not for linux
44
45
  out = `du -ks #{path}`
45
46
  out.split(' ').first.to_i # bytes
@@ -2,15 +2,14 @@ module Jets::Builders
2
2
  class GemReplacer
3
3
  extend Memoist
4
4
  include Util
5
-
5
+
6
6
  def initialize(options)
7
7
  @options = options
8
8
  end
9
9
 
10
10
  def run
11
11
  # use_gemspec to resolve http-parser gem issue
12
- use_gemspec = !Jets::Turbo.afterburner? # gemspec approach breaks afterburner mode
13
- check = Jets::Gems::Check.new(use_gemspec: use_gemspec)
12
+ check = Jets::Api::Gems::Check.new(use_gemspec: true)
14
13
  if Jets.config.lambda.layers.empty?
15
14
  found_gems = check.run! # exits early if missing gems found
16
15
  else
@@ -20,7 +19,7 @@ module Jets::Builders
20
19
 
21
20
  # found gems will only have gems that were found
22
21
  found_gems.each do |gem_name|
23
- gem_extractor = Jets::Gems::Extract::Gem.new(gem_name, @options)
22
+ gem_extractor = Jets::Api::Gems::Extract::Gem.new(gem_name, @options)
24
23
  gem_extractor.run
25
24
  rename_gem(gem_name)
26
25
  end
@@ -29,7 +28,7 @@ module Jets::Builders
29
28
  end
30
29
 
31
30
  def rename_gem(gem_name)
32
- ruby_folder = "#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}"
31
+ ruby_folder = "#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Api::Gems.ruby_folder}"
33
32
  gems_folder = "#{ruby_folder}/gems"
34
33
  expr = "#{gems_folder}/#{gem_name}-x*-{darwin,linux}"
35
34
  src = Dir.glob(expr).first
@@ -40,7 +39,7 @@ module Jets::Builders
40
39
  end
41
40
 
42
41
  def ruby_folder
43
- Jets::Gems.ruby_folder
42
+ Jets::Api::Gems.ruby_folder
44
43
  end
45
44
 
46
45
  # remove unnecessary files to reduce package size
@@ -47,6 +47,32 @@ module Jets::Builders
47
47
  end
48
48
  end
49
49
 
50
+ def generate_handler(vars)
51
+ template = handler_template(vars)
52
+ result = evaluate_template(template, vars)
53
+ dest = "#{tmp_code}/#{vars.dest_path}"
54
+
55
+ # Dont generate handles for all controllers if one_lambda_for_all_controllers
56
+ # Instead generate the same handler and use it. Writing to the same file
57
+ # multiple times but this is a simple way to implement this.
58
+ # It also keeps the logical in one spot.
59
+ if Jets.config.cfn.build.controllers == 'one_lambda_for_all_controllers' &&
60
+ dest.include?('handlers/controllers')
61
+ dest = "handlers/controller.rb"
62
+ end
63
+
64
+ FileUtils.mkdir_p(File.dirname(dest))
65
+ IO.write(dest, result)
66
+ end
67
+
68
+ def handler_template(vars)
69
+ if vars.process_type == "controller"
70
+ Jets.config.cfn.build.controllers + ".rb" # IE: templates/handlers/one_lambda_for_all_controllers.rb
71
+ else # job, rule, etc
72
+ "one_lambda_per_method.rb"
73
+ end
74
+ end
75
+
50
76
  # source_path: app/functions/simple.rb
51
77
  def copy_simple_function(source_path)
52
78
  # Handler: handlers/controllers/posts_controller.handle
@@ -56,7 +82,7 @@ module Jets::Builders
56
82
  end
57
83
 
58
84
  def app_files
59
- Jets::Commands::Build.app_files
85
+ Jets::Cfn::Builder.app_files
60
86
  end
61
87
 
62
88
  def poly_shims
@@ -64,7 +90,7 @@ module Jets::Builders
64
90
 
65
91
  app_files.each do |path|
66
92
  vars = Jets::Builders::ShimVars::App.new(path)
67
- poly_tasks = vars.klass.tasks.select { |t| t.lang != :ruby }
93
+ poly_tasks = vars.klass.definitions.select { |d| d.lang != :ruby }
68
94
  poly_tasks.each do |task|
69
95
  source_path = get_source_path(path, task)
70
96
  if File.exist?(source_path)
@@ -100,7 +126,8 @@ module Jets::Builders
100
126
  end
101
127
 
102
128
  def jets_base_path
103
- copy_function_template("functions/jets/base_path.rb", stage_name: Jets::Resource::ApiGateway::Deployment.stage_name)
129
+ copy_function_template("functions/jets/base_path.rb", stage_name: Jets::Cfn::Resource::ApiGateway::Deployment.stage_name)
130
+ copy_function_template("functions/jets/base_path_mapping.rb")
104
131
  end
105
132
 
106
133
  def s3_bucket_config
@@ -109,8 +136,8 @@ module Jets::Builders
109
136
 
110
137
  # Copy code from internal folder to materialized app code
111
138
  def copy_function_template(path, vars={})
112
- internal = File.expand_path("../internal", File.dirname(__FILE__))
113
- src = "#{internal}/app/#{path}"
139
+ engines_internal_path = File.expand_path("../../../engines/internal", __dir__)
140
+ src = "#{engines_internal_path}/app/#{path}"
114
141
  result = Jets::Erb.result(src, vars)
115
142
  dest = "#{tmp_code}/handlers/#{path}"
116
143
  FileUtils.mkdir_p(File.dirname(dest))
@@ -124,7 +151,7 @@ module Jets::Builders
124
151
  source_path = fun.source_file
125
152
  unless source_path
126
153
  attributes = fun.template.values.first
127
- function_name = attributes['Properties']['FunctionName']
154
+ function_name = attributes[:Properties][:FunctionName]
128
155
  puts "WARN: missing source file for: '#{function_name}' function".color(:yellow)
129
156
  return
130
157
  end
@@ -166,15 +193,8 @@ module Jets::Builders
166
193
  IO.write(dest, result)
167
194
  end
168
195
 
169
- def generate_handler(vars)
170
- result = evaluate_template("handler.rb", vars)
171
- dest = "#{tmp_code}/#{vars.dest_path}"
172
- FileUtils.mkdir_p(File.dirname(dest))
173
- IO.write(dest, result)
174
- end
175
-
176
196
  def evaluate_template(template_file, vars)
177
- template_path = File.expand_path("../templates/#{template_file}", __FILE__)
197
+ template_path = File.expand_path("../templates/handlers/#{template_file}", __FILE__)
178
198
  Jets::Erb.result(template_path, vars: vars)
179
199
  end
180
200
 
@@ -7,7 +7,7 @@ module Jets::Builders
7
7
  # Then replace the binary gems.
8
8
  def build
9
9
  consolidate_gems_to_opt
10
- replace_compiled_gems unless Jets.config.gems.disable
10
+ replace_compiled_gems unless Jets.config.pro.disable
11
11
  end
12
12
 
13
13
  # Also restructure the folder from:
@@ -20,11 +20,6 @@ module Jets::Builders
20
20
  src = "#{stage_area}/code/vendor/gems/ruby/#{Jets.ruby_folder}"
21
21
  dest = "#{stage_area}/opt/ruby/gems/#{Jets.ruby_folder}"
22
22
  rsync_and_link(src, dest)
23
-
24
- return unless Jets.rack?
25
-
26
- src = "#{stage_area}/rack/vendor/gems/ruby/#{Jets.ruby_folder}"
27
- rsync_and_link(src, dest)
28
23
  end
29
24
 
30
25
  def rsync_and_link(src, dest)
@@ -36,7 +31,7 @@ module Jets::Builders
36
31
 
37
32
  # Create symlink that will point to the gems in the Lambda Layer:
38
33
  # stage/opt/ruby/gems/2.5.0 -> /opt/ruby/gems/2.5.0
39
- FileUtils.ln_sf("/opt/ruby/gems/#{Jets::Gems.ruby_folder}", src)
34
+ FileUtils.ln_sf("/opt/ruby/gems/#{Jets::Api::Gems.ruby_folder}", src)
40
35
  end
41
36
 
42
37
  # replace_compiled_gems:
@@ -2,7 +2,7 @@
2
2
  module Jets::Builders
3
3
  class Purger
4
4
  def initialize
5
- @project_name = Jets.config.project_name
5
+ @project_name = Jets.project_name
6
6
  @version_file = "/tmp/jets/#{@project_name}/jets_version.txt"
7
7
  end
8
8
 
@@ -11,7 +11,7 @@ module Jets::Builders
11
11
  end
12
12
 
13
13
  def symlink_gems
14
- ruby_folder = Jets::Gems.ruby_folder
14
+ ruby_folder = Jets::Api::Gems.ruby_folder
15
15
  # IE: @full_app_root: /tmp/jets/demo/stage/code/rack
16
16
  dest = "#{@full_app_root}/vendor/gems/ruby/#{ruby_folder}"
17
17
  FileUtils.mkdir_p(File.dirname(dest))
@@ -49,6 +49,7 @@ module Jets::Builders
49
49
 
50
50
  copy_gemfiles(full_project_path)
51
51
  copy_bundled_gems(full_project_path)
52
+ run_prebundle_copy
52
53
 
53
54
  # Uncomment out to always remove the cache/vendor/gems to debug
54
55
  # FileUtils.rm_rf("#{cache_area}/vendor/gems")
@@ -159,17 +160,11 @@ module Jets::Builders
159
160
  Dir.glob("#{cache_area}/vendor/gems/ruby/2.5.0/bundler/gems/*").each do |path|
160
161
  sha = path.split('-').last[0..6] # only first 7 chars of the git sha
161
162
  unless git_shas.include?(sha)
162
- # puts "Removing old submoduled gem: #{path}" # uncomment to see and debug
163
163
  FileUtils.rm_rf(path) # REMOVE old submodule directory
164
164
  end
165
165
  end
166
166
  end
167
167
 
168
- def copy_bundled_gems(full_project_path)
169
- src = "#{full_project_path}/bundled_gems"
170
- return unless File.exist?(src)
171
- Jets::Util.cp_r(src, "#{cache_area}/bundled_gems")
172
- end
173
168
 
174
169
  def copy_gemfiles(full_project_path)
175
170
  FileUtils.mkdir_p(cache_area)
@@ -182,6 +177,22 @@ module Jets::Builders
182
177
  FileUtils.cp(gemfile_lock, dest)
183
178
  end
184
179
 
180
+ def copy_bundled_gems(full_project_path)
181
+ src = "#{full_project_path}/bundled_gems"
182
+ return unless File.exist?(src)
183
+ Jets::Util.cp_r(src, "#{cache_area}/bundled_gems")
184
+ end
185
+
186
+ def run_prebundle_copy
187
+ paths = Jets.config.build.prebundle_copy
188
+ paths = Array(paths)
189
+ paths.each do |path|
190
+ src = "#{@full_app_root}/#{path}"
191
+ return unless File.exist?(src)
192
+ Jets::Util.cp_r(src, "#{cache_area}/#{path}")
193
+ end
194
+ end
195
+
185
196
  # Remove the BUNDLED WITH line since we don't control the bundler gem version on AWS Lambda
186
197
  # And this can cause issues with require 'bundler/setup'
187
198
  def rewrite_gemfile_lock(gemfile_lock)
@@ -57,22 +57,26 @@ module Jets::Builders::ShimVars
57
57
  end
58
58
 
59
59
  def lang(meth)
60
- klass.tasks.find
60
+ klass.definitions.find
61
61
  end
62
62
 
63
63
  # This gets called in the node shim js template
64
- # IE handlers/controllers/posts_controller.index
64
+ # Example: handlers/controllers/posts_controller.index
65
65
  def handler_for(meth)
66
+ "#{handler_base}.#{meth}"
67
+ end
68
+
69
+ # Base portion of handler path.
70
+ # Example: handlers/controllers/posts_controller
71
+ def handler_base
66
72
  # possibly not include _function
67
73
  underscored_name = @relative_path.sub(%r{app/(\w+)/},'').sub('.rb','')
68
- "handlers/#{process_type.pluralize}/#{underscored_name}.#{meth}"
74
+ "handlers/#{process_type.pluralize}/#{underscored_name}"
69
75
  end
70
76
 
71
77
  # Example return: "handlers/controllers/posts.js"
72
- # TODO: rename this to dest_path or something better now since using native ruby
73
78
  def dest_path
74
- @relative_path
75
- .sub("app", "handlers")
79
+ @relative_path.sub("app", "handlers")
76
80
  end
77
81
  end
78
82
  end
@@ -0,0 +1,33 @@
1
+ require "bundler/setup"
2
+ require "jets"
3
+ Jets.once # runs once in lambda execution context
4
+
5
+ def lambda_handler(event:, context:)
6
+ if event['_prewarm']
7
+ Jets.process(event, context, nil)
8
+ return
9
+ end
10
+
11
+ <% if @vars.process_type == "controller" -%>
12
+ route = Jets::Router.find_route_by_event(event)
13
+ controller = route.controller_name
14
+ action = route.action_name
15
+ if Jets.config.cfn.build.routes == "one_apigw_method_for_all_routes"
16
+ event["pathParameters"] = route.rebuild_path_parameters(event) # override
17
+ end
18
+ <% end -%>
19
+ Jets.process(event, context, "handlers/controllers/#{controller}.#{action}")
20
+ end
21
+ <% if ENV['JETS_DEBUG_HANDLER'] %>
22
+ <%# JETS_DEBUG_HANDLER=1 jets build %>
23
+ if __FILE__ == $0
24
+ event = {
25
+ "path" => "/posts",
26
+ "httpMethod" => "GET",
27
+ "headers" => {
28
+ "Host" => "localhost:8888",
29
+ }
30
+ }
31
+ lambda_handler(event: event, context: {})
32
+ end
33
+ <% end %>
@@ -0,0 +1,20 @@
1
+ require "bundler/setup"
2
+ require "jets"
3
+ Jets.once # runs once in lambda execution context
4
+
5
+ <%# # IE: handlers/controllers/up_controller.index -%>
6
+ <% handler = @vars.handler_base + '.#{action}' -%>
7
+ def lambda_handler(event:, context:)
8
+ if event['_prewarm']
9
+ Jets.process(event, context, nil)
10
+ return
11
+ end
12
+
13
+ <% if @vars.process_type == "controller" -%>
14
+ if Jets.config.cfn.build.routes == "one_apigw_method_for_all_routes"
15
+ route = Jets::Router.find_route_by_event(event)
16
+ event["pathParameters"] = route.rebuild_path_parameters(event) # override
17
+ end
18
+ <% end -%>
19
+ Jets.process(event, context, "<%= handler -%>")
20
+ end
@@ -7,6 +7,12 @@ Jets.once # runs once in lambda execution context
7
7
  meth = handler.split('.').last
8
8
  -%>
9
9
  def <%= meth -%>(event:, context:)
10
+ <% if @vars.process_type == "controller" -%>
11
+ if Jets.config.cfn.build.routes == "one_apigw_method_for_all_routes"
12
+ route = Jets::Router.find_route_by_event(event)
13
+ event["pathParameters"] = route.rebuild_path_parameters(event) # override
14
+ end
15
+ <% end -%>
10
16
  Jets.process(event, context, "<%= handler -%>")
11
17
  end
12
18
  <% end %>
data/lib/jets/bundle.rb CHANGED
@@ -1,5 +1,3 @@
1
- require "jets/turbo"
2
-
3
1
  module Jets
4
2
  # Named Bundle vs Bundler to avoid having to fully qualify ::Bundler
5
3
  module Bundle
@@ -16,7 +14,7 @@ module Jets
16
14
  #
17
15
  def setup
18
16
  return unless jets_project?
19
- return unless bundler_enabled?
17
+ return unless gemfile?
20
18
  Kernel.require "bundler/setup"
21
19
  Bundler.setup # Same as Bundler.setup(:default)
22
20
  rescue LoadError => e
@@ -40,7 +38,7 @@ module Jets
40
38
  # project with another Gemfile, the load errors will also be rescued.
41
39
  def require
42
40
  return unless jets_project?
43
- return unless bundler_enabled?
41
+ return unless gemfile?
44
42
  Kernel.require "bundler/setup"
45
43
  Bundler.require(*bundler_groups)
46
44
  rescue LoadError => e
@@ -66,11 +64,6 @@ module Jets
66
64
  EOL
67
65
  end
68
66
 
69
- # Also check for Afterburner mode since in that mode jets is a standalone tool.
70
- def bundler_enabled?
71
- !Jets::Turbo.afterburner? && gemfile?
72
- end
73
-
74
67
  def gemfile?
75
68
  ENV['BUNDLE_GEMFILE'] || File.exist?("Gemfile")
76
69
  end