jets 3.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +5 -1
  4. data/CHANGELOG.md +141 -0
  5. data/Gemfile +1 -5
  6. data/LICENSE.txt +1 -1
  7. data/README.md +21 -43
  8. data/Rakefile +3 -3
  9. data/backers.md +0 -5
  10. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  11. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  12. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  13. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  14. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  15. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  16. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  17. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  18. data/engines/internal/app/functions/jets/base_path.rb +109 -0
  19. data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
  20. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  21. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  22. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  23. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  24. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  25. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  26. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  27. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  28. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  29. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  30. data/engines/internal/lib/internal/actionview.rb +152 -0
  31. data/engines/internal/lib/internal/activerecord.rb +37 -0
  32. data/engines/internal/lib/internal/activesupport.rb +47 -0
  33. data/engines/internal/lib/internal/engine.rb +13 -0
  34. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  35. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  36. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  37. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  38. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  39. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  40. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  41. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  42. data/exe/jets +1 -10
  43. data/jets.gemspec +16 -13
  44. data/lib/jets/app_loader.rb +77 -0
  45. data/lib/jets/application/bootstrap.rb +100 -0
  46. data/lib/jets/application/configuration/defaults.rb +256 -0
  47. data/lib/jets/application/configuration.rb +494 -0
  48. data/lib/jets/application/default_middleware_stack.rb +140 -0
  49. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  50. data/lib/jets/application/finisher.rb +266 -0
  51. data/lib/jets/application/routes_reloader.rb +80 -0
  52. data/lib/jets/application.rb +515 -199
  53. data/lib/jets/authorizer/base.rb +1 -0
  54. data/lib/jets/authorizer/dsl.rb +15 -11
  55. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  56. data/lib/jets/autoloaders/gem.rb +70 -0
  57. data/lib/jets/autoloaders/inflector.rb +21 -0
  58. data/lib/jets/autoloaders.rb +38 -101
  59. data/lib/jets/aws_info.rb +2 -2
  60. data/lib/jets/aws_services/stack_status.rb +1 -1
  61. data/lib/jets/aws_services.rb +8 -0
  62. data/lib/jets/backtrace_cleaner.rb +27 -0
  63. data/lib/jets/booter.rb +30 -118
  64. data/lib/jets/builders/code_builder.rb +64 -122
  65. data/lib/jets/builders/code_size.rb +1 -0
  66. data/lib/jets/builders/gem_replacer.rb +6 -12
  67. data/lib/jets/builders/handler_generator.rb +34 -14
  68. data/lib/jets/builders/lambda_layer.rb +2 -7
  69. data/lib/jets/builders/purger.rb +1 -1
  70. data/lib/jets/builders/rack_packager.rb +1 -1
  71. data/lib/jets/builders/ruby_packager.rb +54 -10
  72. data/lib/jets/builders/shim_vars/app.rb +10 -6
  73. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  74. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  75. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  76. data/lib/jets/bundle.rb +2 -9
  77. data/lib/jets/cfn/base.rb +82 -0
  78. data/lib/jets/cfn/builder/api/base.rb +12 -0
  79. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
  80. data/lib/jets/cfn/builder/api/gateway.rb +104 -0
  81. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  82. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  83. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  84. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  85. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  86. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  87. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  88. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  89. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  90. data/lib/jets/cfn/builder/controller.rb +28 -0
  91. data/lib/jets/cfn/builder/function.rb +9 -0
  92. data/lib/jets/cfn/builder/interface.rb +146 -0
  93. data/lib/jets/cfn/builder/job.rb +10 -0
  94. data/lib/jets/cfn/builder/nested.rb +130 -0
  95. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  96. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  97. data/lib/jets/cfn/builder/parent.rb +149 -0
  98. data/lib/jets/cfn/builder/post_process.rb +25 -0
  99. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  100. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
  101. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  102. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  103. data/lib/jets/cfn/deployment.rb +45 -0
  104. data/lib/jets/cfn/download.rb +39 -0
  105. data/lib/jets/cfn/params/api/base.rb +39 -0
  106. data/lib/jets/cfn/params/api/cors.rb +10 -0
  107. data/lib/jets/cfn/params/api/methods.rb +69 -0
  108. data/lib/jets/cfn/params/api/resources.rb +28 -0
  109. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  111. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  112. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  113. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  114. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  117. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  119. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +2 -2
  123. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  128. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
  129. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  130. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  131. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  132. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
  133. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  134. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  135. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  136. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  137. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  138. data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
  139. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  140. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  141. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  142. data/lib/jets/cfn/resource/iam/policy.rb +31 -0
  143. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  144. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  145. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  146. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  147. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
  148. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  149. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  150. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  151. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  152. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  153. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  154. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  155. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  156. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  157. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  158. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  159. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  160. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  161. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  162. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  163. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  164. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  165. data/lib/jets/cfn/resource/one/function.rb +66 -0
  166. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  167. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  168. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  169. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  170. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  171. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  172. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  173. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  174. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  175. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  176. data/lib/jets/cfn/resource.rb +8 -0
  177. data/lib/jets/cfn/ship.rb +30 -16
  178. data/lib/jets/cfn/status.rb +1 -1
  179. data/lib/jets/cfn/template.rb +89 -0
  180. data/lib/jets/cfn/upload.rb +26 -23
  181. data/lib/jets/cli.rb +28 -203
  182. data/lib/jets/command/actions.rb +49 -0
  183. data/lib/jets/command/api_helpers.rb +41 -0
  184. data/lib/jets/command/aws_helpers.rb +26 -0
  185. data/lib/jets/command/base.rb +204 -0
  186. data/lib/jets/command/behavior.rb +83 -0
  187. data/lib/jets/command/environment_argument.rb +42 -0
  188. data/lib/jets/command/help/call.md +48 -0
  189. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  190. data/lib/jets/command/help/logs.md +21 -0
  191. data/lib/jets/{commands → command}/help/new.md +3 -4
  192. data/lib/jets/command/help/projects.md +6 -0
  193. data/lib/jets/command/help/releases.md +37 -0
  194. data/lib/jets/command/help/rollback.md +5 -0
  195. data/lib/jets/command/help/routes.md +15 -0
  196. data/lib/jets/command/help/runner.md +40 -0
  197. data/lib/jets/command/help/stacks.md +6 -0
  198. data/lib/jets/command/help.rb +17 -0
  199. data/lib/jets/command/helpers/editor.rb +35 -0
  200. data/lib/jets/command.rb +133 -0
  201. data/lib/jets/commands/application/application_command.rb +40 -0
  202. data/lib/jets/commands/build/build_command.rb +33 -0
  203. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  204. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  205. data/lib/jets/commands/call/base_guesser.rb +5 -5
  206. data/lib/jets/commands/call/call_command.rb +27 -0
  207. data/lib/jets/commands/call/caller.rb +184 -0
  208. data/lib/jets/commands/call/guesser.rb +1 -1
  209. data/lib/jets/commands/clean/base.rb +1 -1
  210. data/lib/jets/commands/clean/build.rb +1 -1
  211. data/lib/jets/commands/clean/clean_command.rb +15 -0
  212. data/lib/jets/commands/clean/log.rb +4 -4
  213. data/lib/jets/commands/configure/configure_command.rb +9 -0
  214. data/lib/jets/commands/console/console_command.rb +38 -0
  215. data/lib/jets/commands/credentials/USAGE +103 -0
  216. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  217. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  218. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  219. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  220. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  221. data/lib/jets/commands/delete/delete_command.rb +155 -0
  222. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +30 -49
  223. data/lib/jets/commands/dev/dev_command.rb +19 -0
  224. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  225. data/lib/jets/commands/encrypted/USAGE +46 -0
  226. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  227. data/lib/jets/commands/gems/gems_command.rb +14 -0
  228. data/lib/jets/commands/generate/generate_command.rb +95 -0
  229. data/lib/jets/commands/help/USAGE +20 -0
  230. data/lib/jets/commands/help/help_command.rb +15 -0
  231. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  232. data/lib/jets/commands/logs/logs_command.rb +45 -0
  233. data/lib/jets/commands/new/new_command.rb +19 -0
  234. data/lib/jets/commands/notes/notes_command.rb +30 -0
  235. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  236. data/lib/jets/commands/projects/projects_command.rb +30 -0
  237. data/lib/jets/commands/rake/rake_command.rb +59 -0
  238. data/lib/jets/commands/releases/releases_command.rb +72 -0
  239. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  240. data/lib/jets/commands/routes/routes_command.rb +19 -0
  241. data/lib/jets/commands/runner/runner_command.rb +60 -0
  242. data/lib/jets/commands/server/server_command.rb +291 -0
  243. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  244. data/lib/jets/commands/status/status_command.rb +9 -0
  245. data/lib/jets/commands/url/url_command.rb +92 -0
  246. data/lib/jets/commands/version/version_command.rb +11 -0
  247. data/lib/jets/commands.rb +17 -0
  248. data/lib/jets/configuration.rb +166 -0
  249. data/lib/jets/controller/base.rb +105 -183
  250. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  251. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  252. data/lib/jets/controller/compat/caching.rb +13 -0
  253. data/lib/jets/controller/compat/future.rb +13 -0
  254. data/lib/jets/controller/compat/route_set.rb +47 -0
  255. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  256. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  257. data/lib/jets/controller/decorate/logging.rb +90 -0
  258. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  259. data/lib/jets/controller/decorate/url_for.rb +10 -0
  260. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  261. data/lib/jets/controller/handler.rb +41 -0
  262. data/lib/jets/controller/middleware/main.rb +16 -8
  263. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
  264. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  265. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  266. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  267. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
  268. data/lib/jets/controller/request/compat/params.rb +144 -0
  269. data/lib/jets/controller/request/compat/request.rb +125 -0
  270. data/lib/jets/controller/request.rb +35 -18
  271. data/lib/jets/controller/response/compat/response.rb +67 -0
  272. data/lib/jets/controller/response.rb +91 -8
  273. data/lib/jets/core.rb +153 -50
  274. data/lib/jets/core_ext/file.rb +9 -0
  275. data/lib/jets/core_ext/kernel.rb +2 -2
  276. data/lib/jets/core_ext/symbol.rb +5 -0
  277. data/lib/jets/core_ext.rb +4 -0
  278. data/lib/jets/dev_caching.rb +44 -0
  279. data/lib/jets/dotenv/ssm.rb +5 -2
  280. data/lib/jets/dotenv.rb +4 -3
  281. data/lib/jets/engine/configuration.rb +96 -0
  282. data/lib/jets/engine/turbines.rb +23 -0
  283. data/lib/jets/engine.rb +380 -0
  284. data/lib/jets/erb.rb +1 -1
  285. data/lib/jets/exception_reporting.rb +43 -0
  286. data/lib/jets/generators/job/job_generator.rb +41 -0
  287. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  288. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  289. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  290. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  291. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  292. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  293. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  294. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  295. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  296. data/lib/jets/generators/overrides/app/USAGE +38 -0
  297. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  298. data/lib/jets/generators/overrides/app/helpers.rb +139 -0
  299. data/lib/jets/generators/overrides/app/templates/.env +10 -0
  300. data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
  301. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  302. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  303. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  304. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  305. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  306. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  307. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  308. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  309. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  311. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  312. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  313. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  314. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  315. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  316. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  317. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  318. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  319. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  320. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  321. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  322. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  323. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  324. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  325. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  326. data/lib/jets/generators.rb +112 -0
  327. data/lib/jets/inflections.rb +1 -1
  328. data/lib/jets/info.rb +116 -0
  329. data/lib/jets/initializable.rb +95 -0
  330. data/lib/jets/job/base.rb +5 -2
  331. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  332. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  333. data/lib/jets/job/dsl/iot_event.rb +6 -6
  334. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  335. data/lib/jets/job/dsl/log_event.rb +2 -2
  336. data/lib/jets/job/dsl/rule_event.rb +7 -4
  337. data/lib/jets/job/dsl/s3_event.rb +1 -1
  338. data/lib/jets/job/dsl/sns_event.rb +6 -6
  339. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  340. data/lib/jets/job/helpers/sns_event_helper.rb +8 -0
  341. data/lib/jets/job/helpers/sqs_event_helper.rb +8 -0
  342. data/lib/jets/klass.rb +5 -6
  343. data/lib/jets/lambda/definition.rb +118 -0
  344. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  345. data/lib/jets/lambda/dsl.rb +73 -54
  346. data/lib/jets/lambda/function.rb +3 -3
  347. data/lib/jets/lambda/function_constructor.rb +6 -6
  348. data/lib/jets/lambda/functions.rb +36 -1
  349. data/lib/jets/mega/hash_converter.rb +2 -2
  350. data/lib/jets/mega/request/source.rb +1 -2
  351. data/lib/jets/mega/request.rb +4 -4
  352. data/lib/jets/names.rb +79 -0
  353. data/lib/jets/overrides/dummy/rails.rb +11 -0
  354. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  355. data/lib/jets/overrides/puma.rb +10 -0
  356. data/lib/jets/paths.rb +243 -0
  357. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  358. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  359. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  360. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  361. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  362. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  363. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  364. data/lib/jets/preheat.rb +26 -33
  365. data/lib/jets/processors/deducer.rb +2 -2
  366. data/lib/jets/processors/main_processor.rb +6 -13
  367. data/lib/jets/rack/logger.rb +77 -0
  368. data/lib/jets/router/compat/route_set.rb +177 -0
  369. data/lib/jets/router/dsl/mount.rb +40 -6
  370. data/lib/jets/router/dsl.rb +125 -105
  371. data/lib/jets/router/engine_mount.rb +36 -0
  372. data/lib/jets/router/help.rb +130 -0
  373. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  374. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  375. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  376. data/lib/jets/router/matcher.rb +140 -17
  377. data/lib/jets/router/resources/options.rb +6 -4
  378. data/lib/jets/router/route/after_initialize.rb +64 -0
  379. data/lib/jets/router/route/as.rb +93 -0
  380. data/lib/jets/router/route/authorizer.rb +1 -0
  381. data/lib/jets/router/route/compat.rb +45 -0
  382. data/lib/jets/router/route/info.rb +74 -0
  383. data/lib/jets/router/route/node.rb +137 -0
  384. data/lib/jets/router/route/path.rb +93 -0
  385. data/lib/jets/router/route.rb +109 -90
  386. data/lib/jets/router/route_set.rb +214 -0
  387. data/lib/jets/router/scope.rb +204 -69
  388. data/lib/jets/router/state.rb +67 -0
  389. data/lib/jets/router/util.rb +1 -31
  390. data/lib/jets/router.rb +64 -150
  391. data/lib/jets/ruby_version_check.rb +15 -0
  392. data/lib/jets/rule/base.rb +1 -0
  393. data/lib/jets/rule/dsl.rb +7 -7
  394. data/lib/jets/secrets.rb +110 -0
  395. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  396. data/lib/jets/spec_helpers/controllers.rb +32 -24
  397. data/lib/jets/spec_helpers.rb +0 -6
  398. data/lib/jets/stack/builder.rb +3 -2
  399. data/lib/jets/stack/definition.rb +1 -4
  400. data/lib/jets/stack/function.rb +2 -2
  401. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  402. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  403. data/lib/jets/stack/main/dsl/lambda.rb +26 -19
  404. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  405. data/lib/jets/stack/output/lookup.rb +1 -1
  406. data/lib/jets/stack/output.rb +2 -2
  407. data/lib/jets/stack/parameter.rb +2 -2
  408. data/lib/jets/stack/resource.rb +3 -3
  409. data/lib/jets/stack/s3_event.rb +51 -37
  410. data/lib/jets/stack.rb +1 -1
  411. data/lib/jets/tasks/engine.rake +85 -0
  412. data/lib/jets/tasks/framework.rake +66 -0
  413. data/lib/jets/tasks/log.rake +41 -0
  414. data/lib/jets/tasks/middleware.rake +9 -0
  415. data/lib/jets/tasks/misc.rake +81 -0
  416. data/lib/jets/tasks/statistics.rake +37 -0
  417. data/lib/jets/tasks/tmp.rake +51 -0
  418. data/lib/jets/tasks/yarn.rake +29 -0
  419. data/lib/jets/tasks/zeitwerk.rake +61 -0
  420. data/lib/jets/tasks.rb +18 -0
  421. data/lib/jets/tmp_loader.rb +1 -1
  422. data/lib/jets/turbine/configurable.rb +36 -0
  423. data/lib/jets/turbine/configuration.rb +101 -0
  424. data/lib/jets/turbine.rb +164 -20
  425. data/lib/jets/util/camelize.rb +24 -0
  426. data/lib/jets/util/yamler.rb +16 -0
  427. data/lib/jets/version.rb +1 -1
  428. data/lib/jets.rb +8 -14
  429. metadata +444 -347
  430. data/.python-version +0 -1
  431. data/.ruby-version +0 -1
  432. data/bin/release +0 -9
  433. data/lib/jets/application/defaults.rb +0 -200
  434. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  435. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  436. data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
  437. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  438. data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
  439. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  440. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  441. data/lib/jets/cfn/builders/interface.rb +0 -133
  442. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  443. data/lib/jets/cfn/builders/parent_builder.rb +0 -130
  444. data/lib/jets/cfn/built_template.rb +0 -15
  445. data/lib/jets/cfn/template_source.rb +0 -61
  446. data/lib/jets/commands/base.rb +0 -145
  447. data/lib/jets/commands/call.rb +0 -182
  448. data/lib/jets/commands/clean.rb +0 -19
  449. data/lib/jets/commands/configure.rb +0 -51
  450. data/lib/jets/commands/console.rb +0 -12
  451. data/lib/jets/commands/db/environment-task.rake +0 -3
  452. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  453. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  454. data/lib/jets/commands/db/tasks.rb +0 -34
  455. data/lib/jets/commands/db.rb +0 -13
  456. data/lib/jets/commands/dbconsole.rb +0 -134
  457. data/lib/jets/commands/delete.rb +0 -136
  458. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  459. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  460. data/lib/jets/commands/dynamodb.rb +0 -19
  461. data/lib/jets/commands/gems.rb +0 -13
  462. data/lib/jets/commands/help/call.md +0 -69
  463. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  464. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  465. data/lib/jets/commands/help/routes.md +0 -16
  466. data/lib/jets/commands/help/runner.md +0 -17
  467. data/lib/jets/commands/help.rb +0 -9
  468. data/lib/jets/commands/import/base.rb +0 -49
  469. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  470. data/lib/jets/commands/import/rack.rb +0 -16
  471. data/lib/jets/commands/import/rails.rb +0 -74
  472. data/lib/jets/commands/import/sequence.rb +0 -90
  473. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  474. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  475. data/lib/jets/commands/import.rb +0 -12
  476. data/lib/jets/commands/main.rb +0 -166
  477. data/lib/jets/commands/markdown/creator.rb +0 -58
  478. data/lib/jets/commands/markdown/index.rb +0 -27
  479. data/lib/jets/commands/markdown/page.rb +0 -125
  480. data/lib/jets/commands/markdown/shell.rb +0 -11
  481. data/lib/jets/commands/new.rb +0 -173
  482. data/lib/jets/commands/rake_command.rb +0 -61
  483. data/lib/jets/commands/rake_tasks.rb +0 -50
  484. data/lib/jets/commands/runner.rb +0 -16
  485. data/lib/jets/commands/sequence.rb +0 -105
  486. data/lib/jets/commands/stack_info.rb +0 -30
  487. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  488. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  489. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  490. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  491. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  492. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  493. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  494. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  495. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  496. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
  497. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  498. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  499. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  500. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  501. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  502. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  503. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
  504. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  505. data/lib/jets/commands/upgrade/version1.rb +0 -136
  506. data/lib/jets/commands/upgrade.rb +0 -105
  507. data/lib/jets/commands/url.rb +0 -69
  508. data/lib/jets/commands/webpacker_template.rb +0 -18
  509. data/lib/jets/controller/callbacks.rb +0 -73
  510. data/lib/jets/controller/cookies/jar.rb +0 -269
  511. data/lib/jets/controller/cookies.rb +0 -38
  512. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  513. data/lib/jets/controller/error.rb +0 -4
  514. data/lib/jets/controller/forgery_protection.rb +0 -43
  515. data/lib/jets/controller/layout.rb +0 -17
  516. data/lib/jets/controller/middleware/cors.rb +0 -60
  517. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  518. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  519. data/lib/jets/controller/middleware/reloader.rb +0 -15
  520. data/lib/jets/controller/parameters_filter.rb +0 -29
  521. data/lib/jets/controller/params.rb +0 -117
  522. data/lib/jets/controller/redirection.rb +0 -61
  523. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  524. data/lib/jets/controller/rendering.rb +0 -96
  525. data/lib/jets/controller/stage.rb +0 -34
  526. data/lib/jets/controller.rb +0 -3
  527. data/lib/jets/db.rb +0 -15
  528. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  529. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  530. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  531. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  532. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  533. data/lib/jets/generator.rb +0 -112
  534. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  535. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  536. data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
  537. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
  538. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  539. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
  540. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  541. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  542. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  543. data/lib/jets/lambda/task.rb +0 -111
  544. data/lib/jets/logger.rb +0 -21
  545. data/lib/jets/middleware/configurator.rb +0 -84
  546. data/lib/jets/middleware/default_stack.rb +0 -53
  547. data/lib/jets/middleware/layer.rb +0 -34
  548. data/lib/jets/middleware/stack.rb +0 -77
  549. data/lib/jets/middleware.rb +0 -33
  550. data/lib/jets/naming.rb +0 -63
  551. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  552. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  553. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  554. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  555. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  556. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  557. data/lib/jets/overrides/rails.rb +0 -6
  558. data/lib/jets/rack_server.rb +0 -86
  559. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  560. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  561. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  562. data/lib/jets/resource/api_gateway/method.rb +0 -102
  563. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  564. data/lib/jets/resource/base.rb +0 -28
  565. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  566. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  567. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  568. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  569. data/lib/jets/resource/child_stack/base.rb +0 -24
  570. data/lib/jets/resource/iam/base_role_definition.rb +0 -47
  571. data/lib/jets/resource/lambda/function.rb +0 -221
  572. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  573. data/lib/jets/resource/permission.rb +0 -45
  574. data/lib/jets/resource.rb +0 -71
  575. data/lib/jets/router/error.rb +0 -4
  576. data/lib/jets/router/finder.rb +0 -47
  577. data/lib/jets/router/helpers/core_helper.rb +0 -27
  578. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  579. data/lib/jets/router/helpers.rb +0 -4
  580. data/lib/jets/router/method_creator/code.rb +0 -99
  581. data/lib/jets/router/method_creator/edit.rb +0 -12
  582. data/lib/jets/router/method_creator/generic.rb +0 -11
  583. data/lib/jets/router/method_creator/index.rb +0 -48
  584. data/lib/jets/router/method_creator/new.rb +0 -12
  585. data/lib/jets/router/method_creator/root.rb +0 -15
  586. data/lib/jets/router/method_creator/show.rb +0 -12
  587. data/lib/jets/router/method_creator.rb +0 -50
  588. data/lib/jets/turbo/database_yaml.rb +0 -41
  589. data/lib/jets/turbo/project/.gitignore +0 -12
  590. data/lib/jets/turbo/project/.jetskeep +0 -1
  591. data/lib/jets/turbo/project/Gemfile +0 -16
  592. data/lib/jets/turbo/project/Rakefile +0 -2
  593. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  594. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  595. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  596. data/lib/jets/turbo/project/config/application.rb +0 -5
  597. data/lib/jets/turbo/project/config/routes.rb +0 -4
  598. data/lib/jets/turbo/project/config.ru +0 -5
  599. data/lib/jets/turbo/rails.rb +0 -127
  600. data/lib/jets/turbo/templates/config/database.yml +0 -30
  601. data/lib/jets/turbo.rb +0 -56
  602. data/readme/prerelease.md +0 -6
  603. data/readme/testing.md +0 -60
  604. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  605. /data/lib/jets/{commands → command}/help/build.md +0 -0
  606. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  607. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  608. /data/lib/jets/{commands → command}/help/console.md +0 -0
  609. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  610. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  611. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  612. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  613. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  614. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  615. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  616. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  617. /data/lib/jets/{commands → command}/help/server.md +0 -0
  618. /data/lib/jets/{commands → command}/help/status.md +0 -0
  619. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  620. /data/lib/jets/{commands → command}/help/url.md +0 -0
  621. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  622. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  623. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  624. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  625. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  626. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  627. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  628. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  629. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  630. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  631. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  632. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  633. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  634. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  635. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  636. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  637. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  638. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  639. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  640. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  641. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -26,13 +26,12 @@ module Jets::Builders
26
26
  end
27
27
 
28
28
  def build
29
- check_ruby_version
30
29
  @version_purger.purge
31
30
  cache_check_message
32
31
 
33
32
  clean_start
34
- compile_assets # easier to do before we copy the project because node and yarn has been likely setup in the that dir
35
- 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
36
35
  copy_project
37
36
  copy_ruby_version_file
38
37
  Dir.chdir("#{stage_area}/code") do
@@ -80,6 +79,7 @@ module Jets::Builders
80
79
  return false if ENV['JETS_BUILD_NO_INTERNET']
81
80
  s3_key = "jets/code/#{filename}"
82
81
  begin
82
+ Jets.logger.debug "Checking s3://#{s3_bucket}/#{s3_key}"
83
83
  s3.head_object(bucket: s3_bucket, key: s3_key)
84
84
  true
85
85
  rescue Aws::S3::Errors::NotFound, Aws::S3::Errors::Forbidden
@@ -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,25 +165,66 @@ 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")
182
+
183
+ ENV['WEBPACKER_ASSET_HOST'] = asset_host if Jets.config.assets.base_url
208
184
  webpack_command = File.exist?("#{Jets.root}/bin/webpack") ?
209
185
  "bin/webpack" :
210
186
  `which webpack`.strip
211
187
  sh "JETS_ENV=#{Jets.env} #{webpack_command}"
212
188
  end
213
189
 
214
- def webpacker_included?
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
+
200
+ # Different url for these. Examples:
201
+ #
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
204
+ #
205
+ # Interesting: asset_host works but s3_base_url does not for CORs. IE: reactjs or vuejs requests
206
+ # Thinking AWS configures the non-subdomain url endpoint to be more restrictive.
207
+ #
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
215
+ assets = Jets.config.assets
216
+ return assets.base_url if assets.base_url && assets.base_url != "s3_endpoint"
217
+
218
+ # By default, will use the s3 url endpoint directly by convention
219
+ region = Jets.aws.region
220
+ asset_base_url = region == 'us-east-1' ?
221
+ "https://#{s3_bucket}.s3.amazonaws.com" :
222
+ "https://#{s3_bucket}.s3.#{region}.amazonaws.com"
223
+
224
+ "#{asset_base_url}/jets/public" # s3_base_url
225
+ end
226
+
227
+ def gemfile_include?(name)
215
228
  # Old code, leaving around for now:
216
229
  # Thanks: https://stackoverflow.com/questions/4195735/get-list-of-gems-being-used-by-a-bundler-project
217
230
  # webpacker_loaded = Gem.loaded_specs.keys.include?("webpacker")
@@ -220,56 +233,7 @@ module Jets::Builders
220
233
  # Checking this way because when using jets standalone for Afterburner mode we don't want to run into
221
234
  # bundler gem collisions. TODO: figure out the a better way to handle the collisions.
222
235
  lines = IO.readlines("#{Jets.root}/Gemfile")
223
- lines.detect { |l| l =~ /webpacker/ || l =~ /jetpacker/ }
224
- end
225
-
226
- # This happens in the current app directory not the tmp code for simplicity
227
- # This is because the node likely been set up correctly there.
228
- def compile_rails_assets
229
- return unless Jets.rack? && rails? && !rails_api?
230
-
231
- if ENV['JETS_SKIP_ASSETS']
232
- puts "Skip compiling rack assets".color(:yellow) # useful for debugging
233
- return
234
- end
235
-
236
- # Need to capture JETS_ROOT since can be changed by Turbo mode
237
- jets_root = Jets.root
238
- Bundler.with_unbundled_env do
239
- # Switch gemfile for Afterburner mode
240
- gemfile = ENV['BUNDLE_GEMFILE']
241
- ENV['BUNDLE_GEMFILE'] = "#{jets_root}/rack/Gemfile"
242
- sh "cd #{jets_root} && bundle install"
243
- ENV['BUNDLE_GEMFILE'] = gemfile
244
-
245
- rails_assets(:clobber, jets_root: jets_root)
246
- rails_assets(:precompile, jets_root: jets_root)
247
- end
248
- end
249
-
250
- def rails_assets(cmd, jets_root:)
251
- # rake is available in both rails 4 and 5. rails command only in 5
252
- command = "bundle exec rake assets:#{cmd} --trace"
253
- command = "RAILS_ENV=#{Jets.env} #{command}" unless Jets.env.development?
254
- sh("cd #{jets_root}/rack && #{command}")
255
- end
256
-
257
- # Rudimentary rails detection
258
- # Duplicated in builders/reconfigure_rails.rb
259
- def rails?
260
- config_ru = "#{Jets.root}/rack/config.ru"
261
- return false unless File.exist?(config_ru)
262
- !IO.readlines(config_ru).grep(/Rails.application/).empty?
263
- end
264
-
265
- # Rudimentary rails api detection
266
- # Duplicated in builders/reconfigure_rails.rb
267
- # Another way of checking is loading a rails console and checking Rails.application.config.api_only
268
- # Using this way for simplicity.
269
- def rails_api?
270
- config_app = "#{Jets.root}/rack/config/application.rb"
271
- return false unless File.exist?(config_app)
272
- !IO.readlines(config_app).grep(/config.api_only.*=.*true/).empty?
236
+ lines.detect { |l| l =~ /#{name}/ && l !~ /\s.*#/ }
273
237
  end
274
238
 
275
239
  # Cleans out non-cached files like code-*.zip in Jets.build_root
@@ -293,7 +257,6 @@ module Jets::Builders
293
257
  FileUtils.rm_rf("#{stage_area}/code") # remove current code folder
294
258
  move_node_modules(Jets.root, Jets.build_root)
295
259
  begin
296
- # puts "cp -r #{@full_project_path} #{"#{stage_area}/code"}".color(:yellow) # uncomment to debug
297
260
  Jets::Util.cp_r(@full_project_path, "#{stage_area}/code")
298
261
  ensure
299
262
  move_node_modules(Jets.build_root, Jets.root) # move node_modules directory back
@@ -322,7 +285,7 @@ module Jets::Builders
322
285
  webpacker_yml = "#{"#{stage_area}/code"}/config/webpacker.yml"
323
286
  return unless File.exist?(webpacker_yml)
324
287
 
325
- config = YAML.load_file(webpacker_yml)
288
+ config = Jets::Util::Yamler.load_file(webpacker_yml)
326
289
  config["development"]["compile"] = false # force this to be false for deployment
327
290
  new_yaml = YAML.dump(config)
328
291
  IO.write(webpacker_yml, new_yaml)
@@ -339,11 +302,14 @@ module Jets::Builders
339
302
  memoize :rack_packager
340
303
 
341
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
342
309
  return if Jets.poly_only?
343
310
 
344
311
  check_agree
345
312
  ruby_packager.install
346
- reconfigure_rails # call here after "#{stage_area}/code" is available
347
313
  rack_packager.install
348
314
  ruby_packager.finish # by this time we have a /tmp/jets/demo/stage/code/vendor/gems
349
315
  rack_packager.finish
@@ -352,7 +318,7 @@ module Jets::Builders
352
318
  end
353
319
 
354
320
  def check_agree
355
- agree = Jets::Gems::Agree.new
321
+ agree = Jets::Api::Agree.new
356
322
  agree.prompt
357
323
  end
358
324
 
@@ -362,11 +328,6 @@ module Jets::Builders
362
328
  lambda_layer.build
363
329
  end
364
330
 
365
- # TODO: Move logic into plugin instead
366
- def reconfigure_rails
367
- ReconfigureRails.new("#{"#{stage_area}/code"}/rack").run
368
- end
369
-
370
331
  def cache_check_message
371
332
  if File.exist?("#{Jets.build_root}/cache")
372
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"
@@ -379,28 +340,9 @@ module Jets::Builders
379
340
  FileUtils.cp_r(ruby_version_path, build_area)
380
341
  end
381
342
 
382
- SUPPORTED_RUBY_VERSIONS = %w[2.5 2.7]
383
- def check_ruby_version
384
- return unless ENV['JETS_RUBY_CHECK'] == '0' || Jets.config.ruby.check == false
385
- return if ruby_version_supported?
386
- puts <<~EOL.color(:red)
387
- You are using Ruby version #{RUBY_VERSION} which is not supported by Jets.
388
- Please use one of the Jets supported ruby versions: #{SUPPORTED_RUBY_VERSIONS.join(' ')}
389
- If you would like to skip this check you can set: JETS_RUBY_CHECK=0
390
- EOL
391
- exit 1
392
- end
393
-
394
- def ruby_version_supported?
395
- md = RUBY_VERSION.match(/(\d+)\.(\d+)\.\d+/)
396
- major, minor = md[1], md[2]
397
- detected_ruby = [major, minor].join('.')
398
- SUPPORTED_RUBY_VERSIONS.include?(detected_ruby)
399
- end
400
-
401
343
  # Group all the path settings together here
402
344
  def self.tmp_code
403
- Jets::Commands::Build.tmp_code
345
+ Jets::Cfn::Builder.tmp_code
404
346
  end
405
347
 
406
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
@@ -1,14 +1,15 @@
1
1
  module Jets::Builders
2
2
  class GemReplacer
3
3
  extend Memoist
4
+ include Util
5
+
4
6
  def initialize(options)
5
7
  @options = options
6
8
  end
7
9
 
8
10
  def run
9
11
  # use_gemspec to resolve http-parser gem issue
10
- use_gemspec = !Jets::Turbo.afterburner? # gemspec approach breaks afterburner mode
11
- check = Jets::Gems::Check.new(use_gemspec: use_gemspec)
12
+ check = Jets::Api::Gems::Check.new(use_gemspec: true)
12
13
  if Jets.config.lambda.layers.empty?
13
14
  found_gems = check.run! # exits early if missing gems found
14
15
  else
@@ -18,7 +19,7 @@ module Jets::Builders
18
19
 
19
20
  # found gems will only have gems that were found
20
21
  found_gems.each do |gem_name|
21
- gem_extractor = Jets::Gems::Extract::Gem.new(gem_name, @options)
22
+ gem_extractor = Jets::Api::Gems::Extract::Gem.new(gem_name, @options)
22
23
  gem_extractor.run
23
24
  rename_gem(gem_name)
24
25
  end
@@ -27,7 +28,7 @@ module Jets::Builders
27
28
  end
28
29
 
29
30
  def rename_gem(gem_name)
30
- 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}"
31
32
  gems_folder = "#{ruby_folder}/gems"
32
33
  expr = "#{gems_folder}/#{gem_name}-x*-{darwin,linux}"
33
34
  src = Dir.glob(expr).first
@@ -37,15 +38,8 @@ module Jets::Builders
37
38
  FileUtils.mv(src, dest) unless File.exist?(dest) # looks like rename_gem actually runs twice
38
39
  end
39
40
 
40
- def sh(command)
41
- puts "=> #{command}".color(:green)
42
- success = system(command)
43
- abort("Command Failed: #{command}") unless success
44
- success
45
- end
46
-
47
41
  def ruby_folder
48
- Jets::Gems.ruby_folder
42
+ Jets::Api::Gems.ruby_folder
49
43
  end
50
44
 
51
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))
@@ -3,9 +3,9 @@ require "bundler" # for clean_old_submodules only
3
3
  module Jets::Builders
4
4
  class RubyPackager
5
5
  include Util
6
-
7
- GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux)/
8
-
6
+
7
+ GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux)/
8
+
9
9
  attr_reader :full_app_root
10
10
  def initialize(relative_app_root)
11
11
  @full_app_root = "#{build_area}/#{relative_app_root}"
@@ -16,6 +16,7 @@ module Jets::Builders
16
16
 
17
17
  clean_old_submodules
18
18
  bundle_install
19
+ bundle_check
19
20
  copy_bundle_config
20
21
  copy_cache_gems
21
22
  end
@@ -48,6 +49,7 @@ module Jets::Builders
48
49
 
49
50
  copy_gemfiles(full_project_path)
50
51
  copy_bundled_gems(full_project_path)
52
+ run_prebundle_copy
51
53
 
52
54
  # Uncomment out to always remove the cache/vendor/gems to debug
53
55
  # FileUtils.rm_rf("#{cache_area}/vendor/gems")
@@ -75,7 +77,39 @@ module Jets::Builders
75
77
  # For example we add the jets-rails to the Gemfile.
76
78
  copy_back_gemfile_lock
77
79
 
78
- puts 'Bundle install success.'
80
+ puts 'Bundle install completed'
81
+ end
82
+
83
+ # Example `bundle check` error:
84
+ #
85
+ # The following gems are missing
86
+ # * date (3.3.3)
87
+ # * timeout (0.3.2)
88
+ # Install missing gems with `bundle install`
89
+ #
90
+ # Example success:
91
+ #
92
+ # The Gemfile's dependencies are satisfied
93
+ #
94
+ def bundle_check
95
+ out = ''
96
+ Bundler.with_unbundled_env do
97
+ out = `cd #{cache_area} && bundle check 2>&1`
98
+ end
99
+ if out.include?("missing")
100
+ puts "Failed: bundle check".color(:red)
101
+ puts <<~EOL
102
+ This means something went wrong with the bundle install.
103
+ Jets will prevent the deployment to AWS Lambda.
104
+ It's better to error now instead of finding out on AWS Lambda.
105
+ The bundle install can fail for different system-specific reasons.
106
+ It could be an outdated or incompatible version of RubyGems and Ruby.
107
+
108
+ Related: https://community.boltops.com/t/could-not-find-timeout-0-3-1-in-any-of-the-sources/996
109
+
110
+ EOL
111
+ exit 1
112
+ end
79
113
  end
80
114
 
81
115
  def copy_back_gemfile_lock
@@ -126,17 +160,11 @@ module Jets::Builders
126
160
  Dir.glob("#{cache_area}/vendor/gems/ruby/2.5.0/bundler/gems/*").each do |path|
127
161
  sha = path.split('-').last[0..6] # only first 7 chars of the git sha
128
162
  unless git_shas.include?(sha)
129
- # puts "Removing old submoduled gem: #{path}" # uncomment to see and debug
130
163
  FileUtils.rm_rf(path) # REMOVE old submodule directory
131
164
  end
132
165
  end
133
166
  end
134
167
 
135
- def copy_bundled_gems(full_project_path)
136
- src = "#{full_project_path}/bundled_gems"
137
- return unless File.exist?(src)
138
- Jets::Util.cp_r(src, "#{cache_area}/bundled_gems")
139
- end
140
168
 
141
169
  def copy_gemfiles(full_project_path)
142
170
  FileUtils.mkdir_p(cache_area)
@@ -149,6 +177,22 @@ module Jets::Builders
149
177
  FileUtils.cp(gemfile_lock, dest)
150
178
  end
151
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
+
152
196
  # Remove the BUNDLED WITH line since we don't control the bundler gem version on AWS Lambda
153
197
  # And this can cause issues with require 'bundler/setup'
154
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 %>