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
@@ -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))
@@ -4,7 +4,7 @@ module Jets::Builders
4
4
  class RubyPackager
5
5
  include Util
6
6
 
7
- GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux|gnu)|-(aarch64|x86_64|arm64|i386|powerpc|sparc|mips|riscv|loongarch|sw_64|hppa|ia64|s390).*-(darwin|linux|gnu)/
7
+ GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux)/
8
8
 
9
9
  attr_reader :full_app_root
10
10
  def initialize(relative_app_root)
@@ -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")
@@ -76,7 +77,7 @@ module Jets::Builders
76
77
  # For example we add the jets-rails to the Gemfile.
77
78
  copy_back_gemfile_lock
78
79
 
79
- puts "Bundle install completed"
80
+ puts 'Bundle install completed'
80
81
  end
81
82
 
82
83
  # Example `bundle check` error:
@@ -91,7 +92,7 @@ module Jets::Builders
91
92
  # The Gemfile's dependencies are satisfied
92
93
  #
93
94
  def bundle_check
94
- out = ""
95
+ out = ''
95
96
  Bundler.with_unbundled_env do
96
97
  out = `cd #{cache_area} && bundle check 2>&1`
97
98
  end
@@ -123,7 +124,7 @@ module Jets::Builders
123
124
  puts "Tidying project: removing ignored files to reduce package size."
124
125
  tidy_project(@full_app_root)
125
126
  # The rack sub project has it's own gitignore.
126
- tidy_project(@full_app_root + "/rack")
127
+ tidy_project(@full_app_root+"/rack")
127
128
  end
128
129
 
129
130
  def tidy_project(path)
@@ -157,19 +158,13 @@ module Jets::Builders
157
158
 
158
159
  # IE: /tmp/jets/demo/cache/vendor/gems/ruby/2.5.0/bundler/gems/webpacker-a8c46614c675
159
160
  Dir.glob("#{cache_area}/vendor/gems/ruby/2.5.0/bundler/gems/*").each do |path|
160
- sha = path.split("-").last[0..6] # only first 7 chars of the git sha
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)
@@ -191,7 +202,7 @@ module Jets::Builders
191
202
  # amount is the number of lines to remove
192
203
  new_lines, capture, count, amount = [], true, 0, 2
193
204
  lines.each do |l|
194
- capture = false if l.include?("BUNDLED WITH")
205
+ capture = false if l.include?('BUNDLED WITH')
195
206
  if capture
196
207
  new_lines << l
197
208
  end
@@ -204,7 +215,7 @@ module Jets::Builders
204
215
  # Replace things like nokogiri (1.11.1-x86_64-darwin) => nokogiri (1.11.1)
205
216
  lines, new_lines = new_lines, []
206
217
  lines.each do |l|
207
- l.sub!(GEM_REGEXP, "") if GEM_REGEXP.match?(l)
218
+ l.sub!(GEM_REGEXP, '') if l =~ GEM_REGEXP
208
219
  new_lines << l
209
220
  end
210
221
 
@@ -225,11 +236,11 @@ module Jets::Builders
225
236
  next
226
237
  end
227
238
 
228
- in_platforms_section = l.include?("PLATFORMS")
239
+ in_platforms_section = l.include?('PLATFORMS')
229
240
  new_lines << l
230
241
  end
231
242
 
232
- content = new_lines.join("")
243
+ content = new_lines.join('')
233
244
  IO.write(gemfile_lock, content)
234
245
  end
235
246
 
@@ -250,12 +261,12 @@ module Jets::Builders
250
261
  # Dont know why this is the case.
251
262
  def create_bundle_config(frozen: false)
252
263
  FileUtils.rm_rf("#{cache_area}/.bundle")
253
- frozen_line = %(BUNDLE_FROZEN: "true"\n) if frozen
254
- text = <<~EOL
255
- ---
256
- #{frozen_line}BUNDLE_PATH: "vendor/gems"
257
- BUNDLE_WITHOUT: "development:test"
258
- EOL
264
+ frozen_line = %Q|BUNDLE_FROZEN: "true"\n| if frozen
265
+ text =<<-EOL
266
+ ---
267
+ #{frozen_line}BUNDLE_PATH: "vendor/gems"
268
+ BUNDLE_WITHOUT: "development:test"
269
+ EOL
259
270
  bundle_config = "#{cache_area}/.bundle/config"
260
271
  FileUtils.mkdir_p(File.dirname(bundle_config))
261
272
  IO.write(bundle_config, text)
@@ -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 %>