jets 3.1.0 → 5.0.10

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 (650) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +5 -1
  4. data/CHANGELOG.md +190 -1
  5. data/CONTRIBUTING.md +1 -1
  6. data/Gemfile +1 -5
  7. data/LICENSE.txt +1 -1
  8. data/README.md +28 -50
  9. data/Rakefile +3 -3
  10. data/backers.md +0 -5
  11. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  12. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  13. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  14. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  15. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  16. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  17. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  18. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  19. data/engines/internal/app/functions/jets/base_path.rb +109 -0
  20. data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
  21. data/engines/internal/app/jobs/jets/preheat_job.rb +68 -0
  22. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  23. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  24. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  25. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  26. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  27. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  28. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  29. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  30. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  31. data/engines/internal/lib/internal/actionview.rb +152 -0
  32. data/engines/internal/lib/internal/activerecord.rb +37 -0
  33. data/engines/internal/lib/internal/activesupport.rb +47 -0
  34. data/engines/internal/lib/internal/engine.rb +13 -0
  35. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  36. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  37. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  38. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  39. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  40. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  41. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  42. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  43. data/exe/jets +1 -10
  44. data/jets.gemspec +17 -13
  45. data/lib/jets/app_loader.rb +77 -0
  46. data/lib/jets/application/bootstrap.rb +100 -0
  47. data/lib/jets/application/configuration/defaults.rb +256 -0
  48. data/lib/jets/application/configuration.rb +494 -0
  49. data/lib/jets/application/default_middleware_stack.rb +140 -0
  50. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  51. data/lib/jets/application/finisher.rb +266 -0
  52. data/lib/jets/application/routes_reloader.rb +80 -0
  53. data/lib/jets/application.rb +515 -199
  54. data/lib/jets/authorizer/base.rb +1 -0
  55. data/lib/jets/authorizer/dsl.rb +15 -11
  56. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  57. data/lib/jets/autoloaders/gem.rb +70 -0
  58. data/lib/jets/autoloaders/inflector.rb +21 -0
  59. data/lib/jets/autoloaders.rb +38 -101
  60. data/lib/jets/aws_info.rb +2 -2
  61. data/lib/jets/aws_services/stack_status.rb +2 -2
  62. data/lib/jets/aws_services.rb +8 -0
  63. data/lib/jets/backtrace_cleaner.rb +27 -0
  64. data/lib/jets/booter.rb +30 -118
  65. data/lib/jets/builders/code_builder.rb +67 -125
  66. data/lib/jets/builders/code_size.rb +1 -0
  67. data/lib/jets/builders/gem_replacer.rb +6 -12
  68. data/lib/jets/builders/handler_generator.rb +43 -15
  69. data/lib/jets/builders/lambda_layer.rb +2 -7
  70. data/lib/jets/builders/purger.rb +1 -1
  71. data/lib/jets/builders/rack_packager.rb +1 -1
  72. data/lib/jets/builders/ruby_packager.rb +54 -10
  73. data/lib/jets/builders/shim_vars/app.rb +10 -6
  74. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  75. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  76. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  77. data/lib/jets/bundle.rb +2 -9
  78. data/lib/jets/cfn/base.rb +82 -0
  79. data/lib/jets/cfn/builder/api/base.rb +12 -0
  80. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
  81. data/lib/jets/cfn/builder/api/gateway.rb +104 -0
  82. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  83. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  84. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  85. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  86. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  87. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  88. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  89. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  90. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  91. data/lib/jets/cfn/builder/controller.rb +28 -0
  92. data/lib/jets/cfn/builder/function.rb +9 -0
  93. data/lib/jets/cfn/builder/interface.rb +146 -0
  94. data/lib/jets/cfn/builder/job.rb +10 -0
  95. data/lib/jets/cfn/builder/nested.rb +130 -0
  96. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  97. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  98. data/lib/jets/cfn/builder/parent.rb +149 -0
  99. data/lib/jets/cfn/builder/post_process.rb +25 -0
  100. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  101. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
  102. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  103. data/lib/jets/{commands/build.rb → cfn/builder.rb} +58 -80
  104. data/lib/jets/cfn/deployment.rb +85 -0
  105. data/lib/jets/cfn/download.rb +39 -0
  106. data/lib/jets/cfn/params/api/base.rb +39 -0
  107. data/lib/jets/cfn/params/api/cors.rb +10 -0
  108. data/lib/jets/cfn/params/api/methods.rb +69 -0
  109. data/lib/jets/cfn/params/api/resources.rb +28 -0
  110. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +4 -4
  111. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  112. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  113. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  114. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  117. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  118. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  119. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  120. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
  123. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +4 -4
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  128. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  129. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
  130. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  131. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  132. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  133. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
  134. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  135. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  136. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  137. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  138. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  139. data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
  140. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  141. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  142. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  143. data/lib/jets/cfn/resource/iam/policy.rb +31 -0
  144. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  145. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  146. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  147. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  148. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
  149. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  150. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  151. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  152. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  153. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  154. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  155. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  156. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  157. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  158. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  159. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  160. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  161. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  162. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  163. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  164. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  165. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  166. data/lib/jets/cfn/resource/one/function.rb +66 -0
  167. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  168. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  169. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  170. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  171. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  172. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  173. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  174. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  175. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  176. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  177. data/lib/jets/cfn/resource.rb +8 -0
  178. data/lib/jets/cfn/ship.rb +33 -29
  179. data/lib/jets/cfn/status.rb +46 -3
  180. data/lib/jets/cfn/template.rb +89 -0
  181. data/lib/jets/cfn/upload.rb +29 -23
  182. data/lib/jets/cli.rb +28 -203
  183. data/lib/jets/command/actions.rb +49 -0
  184. data/lib/jets/command/api_helpers.rb +42 -0
  185. data/lib/jets/command/aws_helpers.rb +26 -0
  186. data/lib/jets/command/base.rb +209 -0
  187. data/lib/jets/command/behavior.rb +83 -0
  188. data/lib/jets/command/environment_argument.rb +42 -0
  189. data/lib/jets/command/help/call.md +48 -0
  190. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  191. data/lib/jets/command/help/gems/check.md +1 -0
  192. data/lib/jets/command/help/logs.md +21 -0
  193. data/lib/jets/{commands → command}/help/new.md +3 -4
  194. data/lib/jets/command/help/projects.md +6 -0
  195. data/lib/jets/command/help/releases.md +19 -0
  196. data/lib/jets/command/help/rollback.md +5 -0
  197. data/lib/jets/command/help/routes.md +15 -0
  198. data/lib/jets/command/help/runner.md +40 -0
  199. data/lib/jets/command/help/stacks.md +6 -0
  200. data/lib/jets/command/help.rb +17 -0
  201. data/lib/jets/command/helpers/editor.rb +35 -0
  202. data/lib/jets/command/rake_decorate.rb +38 -0
  203. data/lib/jets/command.rb +142 -0
  204. data/lib/jets/commands/application/application_command.rb +46 -0
  205. data/lib/jets/commands/build/build_command.rb +33 -0
  206. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  207. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  208. data/lib/jets/commands/call/base_guesser.rb +5 -5
  209. data/lib/jets/commands/call/call_command.rb +27 -0
  210. data/lib/jets/commands/call/caller.rb +184 -0
  211. data/lib/jets/commands/call/guesser.rb +1 -1
  212. data/lib/jets/commands/clean/base.rb +1 -1
  213. data/lib/jets/commands/clean/build.rb +1 -1
  214. data/lib/jets/commands/clean/clean_command.rb +15 -0
  215. data/lib/jets/commands/clean/log.rb +4 -4
  216. data/lib/jets/commands/configure/configure_command.rb +9 -0
  217. data/lib/jets/commands/console/console_command.rb +38 -0
  218. data/lib/jets/commands/credentials/USAGE +103 -0
  219. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  220. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  221. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  222. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  223. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  224. data/lib/jets/commands/delete/delete_command.rb +154 -0
  225. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +34 -53
  226. data/lib/jets/commands/dev/dev_command.rb +19 -0
  227. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  228. data/lib/jets/commands/encrypted/USAGE +46 -0
  229. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  230. data/lib/jets/commands/gems/gems_command.rb +14 -0
  231. data/lib/jets/commands/generate/generate_command.rb +95 -0
  232. data/lib/jets/commands/help/USAGE +20 -0
  233. data/lib/jets/commands/help/help_command.rb +15 -0
  234. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  235. data/lib/jets/commands/logs/logs_command.rb +45 -0
  236. data/lib/jets/commands/new/new_command.rb +19 -0
  237. data/lib/jets/commands/notes/notes_command.rb +30 -0
  238. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  239. data/lib/jets/commands/projects/projects_command.rb +30 -0
  240. data/lib/jets/commands/rake/rake_command.rb +59 -0
  241. data/lib/jets/commands/releases/releases_command.rb +124 -0
  242. data/lib/jets/commands/rollback/rollback_command.rb +33 -0
  243. data/lib/jets/commands/routes/routes_command.rb +19 -0
  244. data/lib/jets/commands/runner/runner_command.rb +60 -0
  245. data/lib/jets/commands/server/server_command.rb +291 -0
  246. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  247. data/lib/jets/commands/status/status_command.rb +16 -0
  248. data/lib/jets/commands/url/url_command.rb +92 -0
  249. data/lib/jets/commands/version/version_command.rb +11 -0
  250. data/lib/jets/commands.rb +17 -0
  251. data/lib/jets/configuration.rb +166 -0
  252. data/lib/jets/controller/base.rb +105 -183
  253. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  254. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  255. data/lib/jets/controller/compat/caching.rb +13 -0
  256. data/lib/jets/controller/compat/future.rb +13 -0
  257. data/lib/jets/controller/compat/route_set.rb +47 -0
  258. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  259. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  260. data/lib/jets/controller/decorate/logging.rb +90 -0
  261. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  262. data/lib/jets/controller/decorate/url_for.rb +10 -0
  263. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  264. data/lib/jets/controller/handler.rb +41 -0
  265. data/lib/jets/controller/middleware/main.rb +16 -8
  266. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
  267. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  268. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  269. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  270. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
  271. data/lib/jets/controller/request/compat/params.rb +144 -0
  272. data/lib/jets/controller/request/compat/request.rb +125 -0
  273. data/lib/jets/controller/request.rb +35 -18
  274. data/lib/jets/controller/response/compat/response.rb +67 -0
  275. data/lib/jets/controller/response.rb +91 -8
  276. data/lib/jets/core.rb +159 -52
  277. data/lib/jets/core_ext/file.rb +9 -0
  278. data/lib/jets/core_ext/kernel.rb +2 -2
  279. data/lib/jets/core_ext/symbol.rb +5 -0
  280. data/lib/jets/core_ext.rb +4 -0
  281. data/lib/jets/dev_caching.rb +44 -0
  282. data/lib/jets/dotenv/ssm.rb +6 -3
  283. data/lib/jets/dotenv.rb +4 -3
  284. data/lib/jets/engine/configuration.rb +96 -0
  285. data/lib/jets/engine/turbines.rb +23 -0
  286. data/lib/jets/engine.rb +380 -0
  287. data/lib/jets/erb.rb +1 -1
  288. data/lib/jets/exception_reporting.rb +43 -0
  289. data/lib/jets/generators/job/job_generator.rb +41 -0
  290. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  291. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  292. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  293. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  294. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  295. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  296. data/lib/jets/generators/job/templates/event_types/scheduled.rb.tt +8 -0
  297. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +11 -0
  298. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +11 -0
  299. data/lib/jets/generators/overrides/app/USAGE +38 -0
  300. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  301. data/lib/jets/generators/overrides/app/helpers.rb +139 -0
  302. data/lib/jets/generators/overrides/app/templates/.env +10 -0
  303. data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
  304. data/lib/jets/generators/overrides/app/templates/.jetsignore +6 -0
  305. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +28 -0
  306. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  307. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  308. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  309. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  311. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  312. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  313. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  314. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  315. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  316. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +21 -0
  317. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  318. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  319. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  320. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  321. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  322. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  323. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  324. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  325. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  326. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  327. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  328. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  329. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  330. data/lib/jets/generators.rb +112 -0
  331. data/lib/jets/inflections.rb +1 -1
  332. data/lib/jets/info.rb +116 -0
  333. data/lib/jets/initializable.rb +95 -0
  334. data/lib/jets/job/base.rb +11 -8
  335. data/lib/jets/job/dsl/dynamodb_event.rb +25 -14
  336. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  337. data/lib/jets/job/dsl/iot_event.rb +6 -6
  338. data/lib/jets/job/dsl/kinesis_event.rb +10 -9
  339. data/lib/jets/job/dsl/log_event.rb +2 -2
  340. data/lib/jets/job/dsl/rule_event.rb +7 -4
  341. data/lib/jets/job/dsl/s3_event.rb +5 -5
  342. data/lib/jets/job/dsl/sns_event.rb +6 -6
  343. data/lib/jets/job/dsl/sqs_event.rb +15 -14
  344. data/lib/jets/job/helpers/{kinesis_event_helper.rb → kinesis_event.rb} +5 -1
  345. data/lib/jets/job/helpers/{log_event_helper.rb → log_event.rb} +5 -1
  346. data/lib/jets/job/helpers/s3_event.rb +50 -0
  347. data/lib/jets/job/helpers/sns_event.rb +26 -0
  348. data/lib/jets/job/helpers/sqs_event.rb +26 -0
  349. data/lib/jets/klass.rb +5 -6
  350. data/lib/jets/lambda/definition.rb +118 -0
  351. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  352. data/lib/jets/lambda/dsl.rb +70 -53
  353. data/lib/jets/lambda/function.rb +3 -3
  354. data/lib/jets/lambda/function_constructor.rb +6 -6
  355. data/lib/jets/lambda/functions.rb +36 -1
  356. data/lib/jets/mega/hash_converter.rb +2 -2
  357. data/lib/jets/mega/request/source.rb +1 -2
  358. data/lib/jets/mega/request.rb +4 -4
  359. data/lib/jets/names.rb +79 -0
  360. data/lib/jets/overrides/dummy/rails.rb +11 -0
  361. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  362. data/lib/jets/overrides/puma.rb +10 -0
  363. data/lib/jets/paths.rb +243 -0
  364. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  365. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  366. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  367. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  368. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  369. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  370. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  371. data/lib/jets/preheat.rb +26 -33
  372. data/lib/jets/processors/deducer.rb +2 -2
  373. data/lib/jets/processors/main_processor.rb +6 -13
  374. data/lib/jets/rack/logger.rb +77 -0
  375. data/lib/jets/router/compat/route_set.rb +177 -0
  376. data/lib/jets/router/dsl/mount.rb +40 -6
  377. data/lib/jets/router/dsl.rb +125 -105
  378. data/lib/jets/router/engine_mount.rb +36 -0
  379. data/lib/jets/router/help.rb +130 -0
  380. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  381. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  382. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  383. data/lib/jets/router/matcher.rb +140 -17
  384. data/lib/jets/router/resources/options.rb +6 -4
  385. data/lib/jets/router/route/after_initialize.rb +64 -0
  386. data/lib/jets/router/route/as.rb +93 -0
  387. data/lib/jets/router/route/authorizer.rb +1 -0
  388. data/lib/jets/router/route/compat.rb +45 -0
  389. data/lib/jets/router/route/info.rb +74 -0
  390. data/lib/jets/router/route/node.rb +137 -0
  391. data/lib/jets/router/route/path.rb +93 -0
  392. data/lib/jets/router/route.rb +109 -90
  393. data/lib/jets/router/route_set.rb +214 -0
  394. data/lib/jets/router/scope.rb +204 -69
  395. data/lib/jets/router/state.rb +67 -0
  396. data/lib/jets/router/util.rb +1 -31
  397. data/lib/jets/router.rb +64 -150
  398. data/lib/jets/ruby_version_check.rb +15 -0
  399. data/lib/jets/rule/base.rb +1 -0
  400. data/lib/jets/rule/dsl.rb +7 -7
  401. data/lib/jets/secrets.rb +110 -0
  402. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  403. data/lib/jets/spec_helpers/controllers.rb +32 -24
  404. data/lib/jets/spec_helpers.rb +0 -6
  405. data/lib/jets/stack/builder.rb +3 -2
  406. data/lib/jets/stack/definition.rb +1 -4
  407. data/lib/jets/stack/function.rb +4 -2
  408. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  409. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  410. data/lib/jets/stack/main/dsl/lambda.rb +26 -19
  411. data/lib/jets/stack/main/dsl/sqs.rb +1 -1
  412. data/lib/jets/stack/output/lookup.rb +6 -2
  413. data/lib/jets/stack/output.rb +2 -2
  414. data/lib/jets/stack/parameter.rb +2 -2
  415. data/lib/jets/stack/resource.rb +3 -3
  416. data/lib/jets/stack/s3_event.rb +51 -37
  417. data/lib/jets/stack.rb +1 -1
  418. data/lib/jets/tasks/engine.rake +85 -0
  419. data/lib/jets/tasks/framework.rake +66 -0
  420. data/lib/jets/tasks/log.rake +41 -0
  421. data/lib/jets/tasks/middleware.rake +9 -0
  422. data/lib/jets/tasks/misc.rake +81 -0
  423. data/lib/jets/tasks/statistics.rake +37 -0
  424. data/lib/jets/tasks/tmp.rake +51 -0
  425. data/lib/jets/tasks/yarn.rake +29 -0
  426. data/lib/jets/tasks/zeitwerk.rake +61 -0
  427. data/lib/jets/tasks.rb +18 -0
  428. data/lib/jets/tmp_loader.rb +1 -1
  429. data/lib/jets/turbine/configurable.rb +36 -0
  430. data/lib/jets/turbine/configuration.rb +101 -0
  431. data/lib/jets/turbine.rb +164 -20
  432. data/lib/jets/util/camelize.rb +24 -0
  433. data/lib/jets/util/yamler.rb +18 -0
  434. data/lib/jets/version.rb +1 -1
  435. data/lib/jets.rb +9 -14
  436. metadata +462 -349
  437. data/.python-version +0 -1
  438. data/.ruby-version +0 -1
  439. data/bin/release +0 -9
  440. data/lib/jets/application/defaults.rb +0 -200
  441. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  442. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  443. data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
  444. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  445. data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
  446. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  447. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  448. data/lib/jets/cfn/builders/interface.rb +0 -133
  449. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  450. data/lib/jets/cfn/builders/parent_builder.rb +0 -130
  451. data/lib/jets/cfn/built_template.rb +0 -15
  452. data/lib/jets/cfn/template_source.rb +0 -61
  453. data/lib/jets/commands/base.rb +0 -145
  454. data/lib/jets/commands/call.rb +0 -182
  455. data/lib/jets/commands/clean.rb +0 -19
  456. data/lib/jets/commands/configure.rb +0 -51
  457. data/lib/jets/commands/console.rb +0 -12
  458. data/lib/jets/commands/db/environment-task.rake +0 -3
  459. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  460. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  461. data/lib/jets/commands/db/tasks.rb +0 -34
  462. data/lib/jets/commands/db.rb +0 -13
  463. data/lib/jets/commands/dbconsole.rb +0 -134
  464. data/lib/jets/commands/delete.rb +0 -136
  465. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  466. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  467. data/lib/jets/commands/dynamodb.rb +0 -19
  468. data/lib/jets/commands/gems.rb +0 -13
  469. data/lib/jets/commands/help/call.md +0 -69
  470. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  471. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  472. data/lib/jets/commands/help/gems/check.md +0 -6
  473. data/lib/jets/commands/help/routes.md +0 -16
  474. data/lib/jets/commands/help/runner.md +0 -17
  475. data/lib/jets/commands/help.rb +0 -9
  476. data/lib/jets/commands/import/base.rb +0 -49
  477. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  478. data/lib/jets/commands/import/rack.rb +0 -16
  479. data/lib/jets/commands/import/rails.rb +0 -74
  480. data/lib/jets/commands/import/sequence.rb +0 -90
  481. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  482. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  483. data/lib/jets/commands/import.rb +0 -12
  484. data/lib/jets/commands/main.rb +0 -166
  485. data/lib/jets/commands/markdown/creator.rb +0 -58
  486. data/lib/jets/commands/markdown/index.rb +0 -27
  487. data/lib/jets/commands/markdown/page.rb +0 -125
  488. data/lib/jets/commands/markdown/shell.rb +0 -11
  489. data/lib/jets/commands/new.rb +0 -173
  490. data/lib/jets/commands/rake_command.rb +0 -61
  491. data/lib/jets/commands/rake_tasks.rb +0 -50
  492. data/lib/jets/commands/runner.rb +0 -16
  493. data/lib/jets/commands/sequence.rb +0 -105
  494. data/lib/jets/commands/stack_info.rb +0 -30
  495. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  496. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  497. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  498. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  499. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  500. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  501. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  502. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  503. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  504. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
  505. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  506. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  507. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  508. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  509. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  510. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  511. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
  512. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  513. data/lib/jets/commands/upgrade/version1.rb +0 -136
  514. data/lib/jets/commands/upgrade.rb +0 -105
  515. data/lib/jets/commands/url.rb +0 -69
  516. data/lib/jets/commands/webpacker_template.rb +0 -18
  517. data/lib/jets/controller/callbacks.rb +0 -73
  518. data/lib/jets/controller/cookies/jar.rb +0 -269
  519. data/lib/jets/controller/cookies.rb +0 -38
  520. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  521. data/lib/jets/controller/error.rb +0 -4
  522. data/lib/jets/controller/forgery_protection.rb +0 -43
  523. data/lib/jets/controller/layout.rb +0 -17
  524. data/lib/jets/controller/middleware/cors.rb +0 -60
  525. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  526. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  527. data/lib/jets/controller/middleware/reloader.rb +0 -15
  528. data/lib/jets/controller/parameters_filter.rb +0 -29
  529. data/lib/jets/controller/params.rb +0 -117
  530. data/lib/jets/controller/redirection.rb +0 -61
  531. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  532. data/lib/jets/controller/rendering.rb +0 -96
  533. data/lib/jets/controller/stage.rb +0 -34
  534. data/lib/jets/controller.rb +0 -3
  535. data/lib/jets/db.rb +0 -15
  536. data/lib/jets/generator/templates/active_job/job/templates/job.rb.tt +0 -8
  537. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  538. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  539. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  540. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  541. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  542. data/lib/jets/generator.rb +0 -112
  543. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  544. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  545. data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
  546. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
  547. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  548. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
  549. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  550. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  551. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  552. data/lib/jets/job/helpers/s3_event_helper.rb +0 -13
  553. data/lib/jets/lambda/task.rb +0 -111
  554. data/lib/jets/logger.rb +0 -21
  555. data/lib/jets/middleware/configurator.rb +0 -84
  556. data/lib/jets/middleware/default_stack.rb +0 -53
  557. data/lib/jets/middleware/layer.rb +0 -34
  558. data/lib/jets/middleware/stack.rb +0 -77
  559. data/lib/jets/middleware.rb +0 -33
  560. data/lib/jets/naming.rb +0 -63
  561. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  562. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  563. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  564. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  565. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  566. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  567. data/lib/jets/overrides/rails.rb +0 -6
  568. data/lib/jets/rack_server.rb +0 -86
  569. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  570. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  571. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  572. data/lib/jets/resource/api_gateway/method.rb +0 -102
  573. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  574. data/lib/jets/resource/base.rb +0 -28
  575. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  576. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  577. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  578. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  579. data/lib/jets/resource/child_stack/base.rb +0 -24
  580. data/lib/jets/resource/iam/base_role_definition.rb +0 -47
  581. data/lib/jets/resource/lambda/function.rb +0 -221
  582. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  583. data/lib/jets/resource/permission.rb +0 -45
  584. data/lib/jets/resource.rb +0 -71
  585. data/lib/jets/router/error.rb +0 -4
  586. data/lib/jets/router/finder.rb +0 -47
  587. data/lib/jets/router/helpers/core_helper.rb +0 -27
  588. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  589. data/lib/jets/router/helpers.rb +0 -4
  590. data/lib/jets/router/method_creator/code.rb +0 -99
  591. data/lib/jets/router/method_creator/edit.rb +0 -12
  592. data/lib/jets/router/method_creator/generic.rb +0 -11
  593. data/lib/jets/router/method_creator/index.rb +0 -48
  594. data/lib/jets/router/method_creator/new.rb +0 -12
  595. data/lib/jets/router/method_creator/root.rb +0 -15
  596. data/lib/jets/router/method_creator/show.rb +0 -12
  597. data/lib/jets/router/method_creator.rb +0 -50
  598. data/lib/jets/turbo/database_yaml.rb +0 -41
  599. data/lib/jets/turbo/project/.gitignore +0 -12
  600. data/lib/jets/turbo/project/.jetskeep +0 -1
  601. data/lib/jets/turbo/project/Gemfile +0 -16
  602. data/lib/jets/turbo/project/Rakefile +0 -2
  603. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  604. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  605. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  606. data/lib/jets/turbo/project/config/application.rb +0 -5
  607. data/lib/jets/turbo/project/config/routes.rb +0 -4
  608. data/lib/jets/turbo/project/config.ru +0 -5
  609. data/lib/jets/turbo/rails.rb +0 -127
  610. data/lib/jets/turbo/templates/config/database.yml +0 -30
  611. data/lib/jets/turbo.rb +0 -56
  612. data/readme/prerelease.md +0 -6
  613. data/readme/testing.md +0 -60
  614. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  615. /data/lib/jets/{commands → command}/help/build.md +0 -0
  616. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  617. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  618. /data/lib/jets/{commands → command}/help/console.md +0 -0
  619. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  620. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  621. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  622. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  623. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  624. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  625. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  626. /data/lib/jets/{commands → command}/help/server.md +0 -0
  627. /data/lib/jets/{commands → command}/help/status.md +0 -0
  628. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  629. /data/lib/jets/{commands → command}/help/url.md +0 -0
  630. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  631. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  632. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  633. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  634. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  635. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  636. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  637. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  638. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  639. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  640. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  641. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  642. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  643. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  644. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  645. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  646. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  647. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  648. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  649. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  650. /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
@@ -77,9 +76,10 @@ module Jets::Builders
77
76
  end
78
77
 
79
78
  def exist_on_s3?(filename)
80
- return false if ENV['JETS_BUILD_NO_INTERNET']
79
+ return false if ENV['JETS_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,9 @@ 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"
134
+ return unless gemfile_include?("sprockets-jets")
160
135
  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
136
  end
163
137
 
164
138
  def write_s3_base_url(full_path)
@@ -175,12 +149,11 @@ module Jets::Builders
175
149
  #
176
150
  return Jets.config.assets.base_url if Jets.config.assets.base_url
177
151
 
152
+ # Note: subdomain form works with CORs but the subfolder form does not. Using subfolder form.
178
153
  region = Jets.aws.region
179
-
180
154
  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
155
+ "https://#{s3_bucket}.s3.amazonaws.com/jets" :
156
+ "https://#{s3_bucket}.s3-#{region}.amazonaws.com/jets"
184
157
  end
185
158
 
186
159
  def s3_bucket
@@ -193,25 +166,64 @@ module Jets::Builders
193
166
  FileUtils.touch(full_path)
194
167
  end
195
168
 
169
+ def assets_precompile
170
+ return if skip_assets?
171
+ return unless gemfile_include?("sprockets-jets")
172
+ sh "jets assets:precompile"
173
+ end
174
+
196
175
  # This happens in the current app directory not the tmp code for simplicity.
197
176
  # 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
177
+ def run_webpack
178
+ return if skip_assets?
179
+ return unless gemfile_include?("jetpacker")
203
180
 
204
181
  headline "Compling assets in current project directory"
205
- return unless webpacker_included?
206
-
207
182
  sh("yarn install")
183
+
184
+ ENV['WEBPACKER_ASSET_HOST'] = asset_host if Jets.config.assets.base_url
208
185
  webpack_command = File.exist?("#{Jets.root}/bin/webpack") ?
209
186
  "bin/webpack" :
210
187
  `which webpack`.strip
211
188
  sh "JETS_ENV=#{Jets.env} #{webpack_command}"
212
189
  end
213
190
 
214
- def webpacker_included?
191
+ def skip_assets?
192
+ if ENV['JETS_SKIP_ASSETS']
193
+ puts "Skip compiling assets".color(:yellow) # useful for debugging
194
+ return true
195
+ end
196
+ Jets.config.mode == "job"
197
+ end
198
+
199
+ # Different url for these. Examples:
200
+ #
201
+ # asset_host https://demo-dev-s3bucket-lw5vq7ht8ip4.s3.us-west-2.amazonaws.com/jets/public/packs/media/images/boltops-0dd1c6bd.png
202
+ # s3_base_url https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-lw5vq7ht8ip4/jets/packs/media/images/boltops-0dd1c6bd.png
203
+ #
204
+ # Interesting: asset_host works but s3_base_url does not for CORs. IE: reactjs or vuejs requests
205
+ # Thinking AWS configures the non-subdomain url endpoint to be more restrictive.
206
+ #
207
+ # Allow user to set assets.asset_host
208
+ #
209
+ # Jets.application.configure do
210
+ # config.assets.asset_host = "https://cloudfront.com/my/base/path"
211
+ # end
212
+ #
213
+ def asset_host
214
+ assets = Jets.config.assets
215
+ return assets.base_url if assets.base_url && assets.base_url != "s3_endpoint"
216
+
217
+ # By default, will use the s3 url endpoint directly by convention
218
+ region = Jets.aws.region
219
+ asset_base_url = region == 'us-east-1' ?
220
+ "https://#{s3_bucket}.s3.amazonaws.com" :
221
+ "https://#{s3_bucket}.s3.#{region}.amazonaws.com"
222
+
223
+ "#{asset_base_url}/jets/public" # s3_base_url
224
+ end
225
+
226
+ def gemfile_include?(name)
215
227
  # Old code, leaving around for now:
216
228
  # Thanks: https://stackoverflow.com/questions/4195735/get-list-of-gems-being-used-by-a-bundler-project
217
229
  # webpacker_loaded = Gem.loaded_specs.keys.include?("webpacker")
@@ -220,56 +232,7 @@ module Jets::Builders
220
232
  # Checking this way because when using jets standalone for Afterburner mode we don't want to run into
221
233
  # bundler gem collisions. TODO: figure out the a better way to handle the collisions.
222
234
  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?
235
+ lines.detect { |l| l =~ /gem ['"]#{name}/ && l !~ /^\s*?#/ }
273
236
  end
274
237
 
275
238
  # Cleans out non-cached files like code-*.zip in Jets.build_root
@@ -293,7 +256,6 @@ module Jets::Builders
293
256
  FileUtils.rm_rf("#{stage_area}/code") # remove current code folder
294
257
  move_node_modules(Jets.root, Jets.build_root)
295
258
  begin
296
- # puts "cp -r #{@full_project_path} #{"#{stage_area}/code"}".color(:yellow) # uncomment to debug
297
259
  Jets::Util.cp_r(@full_project_path, "#{stage_area}/code")
298
260
  ensure
299
261
  move_node_modules(Jets.build_root, Jets.root) # move node_modules directory back
@@ -317,12 +279,13 @@ module Jets::Builders
317
279
  # when they deploy a jets project in development mode
318
280
  def reconfigure_development_webpacker
319
281
  return unless Jets.env.development?
282
+ return unless gemfile_include?("jetpacker")
320
283
  headline "Reconfiguring webpacker development settings for AWS Lambda."
321
284
 
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
342
- return if Jets.poly_only?
305
+ if ENV['JETS_SKIP_PACKAGE']
306
+ puts "Skip packaging ruby".color(:yellow) # useful for developing handlers
307
+ return
308
+ end
309
+ return unless Jets.gem_layer?
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,21 +318,16 @@ 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
 
359
325
  def build_lambda_layer
360
- return if Jets.poly_only?
326
+ return unless Jets.gem_layer?
361
327
  lambda_layer = LambdaLayer.new
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
@@ -45,6 +45,40 @@ module Jets::Builders
45
45
  generate_handler(vars)
46
46
  end
47
47
  end
48
+
49
+ if app_files.empty? && Jets.gem_layer?
50
+ # When there are no app files, still need to generate a shim for JetsController
51
+ lib = File.expand_path('../../..', __dir__)
52
+ path = "#{lib}/engines/internal/app/controllers/jets/public_controller.rb"
53
+ vars = Jets::Builders::ShimVars::App.new(path)
54
+ generate_handler(vars)
55
+ end
56
+ end
57
+
58
+ def generate_handler(vars)
59
+ template = handler_template(vars)
60
+ result = evaluate_template(template, vars)
61
+ dest = "#{tmp_code}/#{vars.dest_path}"
62
+
63
+ # Dont generate handles for all controllers if one_lambda_for_all_controllers
64
+ # Instead generate the same handler and use it. Writing to the same file
65
+ # multiple times but this is a simple way to implement this.
66
+ # It also keeps the logical in one spot.
67
+ if Jets.config.cfn.build.controllers == 'one_lambda_for_all_controllers' &&
68
+ dest.include?('handlers/controllers')
69
+ dest = "handlers/controller.rb"
70
+ end
71
+
72
+ FileUtils.mkdir_p(File.dirname(dest))
73
+ IO.write(dest, result)
74
+ end
75
+
76
+ def handler_template(vars)
77
+ if vars.process_type == "controller"
78
+ Jets.config.cfn.build.controllers + ".rb" # IE: templates/handlers/one_lambda_for_all_controllers.rb
79
+ else # job, rule, etc
80
+ "one_lambda_per_method.rb"
81
+ end
48
82
  end
49
83
 
50
84
  # source_path: app/functions/simple.rb
@@ -56,7 +90,7 @@ module Jets::Builders
56
90
  end
57
91
 
58
92
  def app_files
59
- Jets::Commands::Build.app_files
93
+ Jets::Cfn::Builder.app_files
60
94
  end
61
95
 
62
96
  def poly_shims
@@ -64,7 +98,7 @@ module Jets::Builders
64
98
 
65
99
  app_files.each do |path|
66
100
  vars = Jets::Builders::ShimVars::App.new(path)
67
- poly_tasks = vars.klass.tasks.select { |t| t.lang != :ruby }
101
+ poly_tasks = vars.klass.definitions.select { |d| d.lang != :ruby }
68
102
  poly_tasks.each do |task|
69
103
  source_path = get_source_path(path, task)
70
104
  if File.exist?(source_path)
@@ -96,11 +130,12 @@ module Jets::Builders
96
130
 
97
131
  def internal_shims
98
132
  jets_base_path if Jets.custom_domain?
99
- s3_bucket_config if Jets.s3_event?
133
+ s3_bucket_config if Jets.s3_events?
100
134
  end
101
135
 
102
136
  def jets_base_path
103
- copy_function_template("functions/jets/base_path.rb", stage_name: Jets::Resource::ApiGateway::Deployment.stage_name)
137
+ copy_function_template("functions/jets/base_path.rb", stage_name: Jets::Cfn::Resource::ApiGateway::Deployment.stage_name)
138
+ copy_function_template("functions/jets/base_path_mapping.rb")
104
139
  end
105
140
 
106
141
  def s3_bucket_config
@@ -109,8 +144,8 @@ module Jets::Builders
109
144
 
110
145
  # Copy code from internal folder to materialized app code
111
146
  def copy_function_template(path, vars={})
112
- internal = File.expand_path("../internal", File.dirname(__FILE__))
113
- src = "#{internal}/app/#{path}"
147
+ engines_internal_path = File.expand_path("../../../engines/internal", __dir__)
148
+ src = "#{engines_internal_path}/app/#{path}"
114
149
  result = Jets::Erb.result(src, vars)
115
150
  dest = "#{tmp_code}/handlers/#{path}"
116
151
  FileUtils.mkdir_p(File.dirname(dest))
@@ -124,7 +159,7 @@ module Jets::Builders
124
159
  source_path = fun.source_file
125
160
  unless source_path
126
161
  attributes = fun.template.values.first
127
- function_name = attributes['Properties']['FunctionName']
162
+ function_name = attributes[:Properties][:FunctionName]
128
163
  puts "WARN: missing source file for: '#{function_name}' function".color(:yellow)
129
164
  return
130
165
  end
@@ -166,15 +201,8 @@ module Jets::Builders
166
201
  IO.write(dest, result)
167
202
  end
168
203
 
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
204
  def evaluate_template(template_file, vars)
177
- template_path = File.expand_path("../templates/#{template_file}", __FILE__)
205
+ template_path = File.expand_path("../templates/handlers/#{template_file}", __FILE__)
178
206
  Jets::Erb.result(template_path, vars: vars)
179
207
  end
180
208
 
@@ -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