jets 4.0.17 → 5.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -1
  3. data/CHANGELOG.md +52 -23
  4. data/Gemfile +1 -5
  5. data/LICENSE.txt +1 -1
  6. data/Rakefile +3 -3
  7. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  8. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  9. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  10. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  11. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  12. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  13. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  14. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  15. data/{lib/jets → engines}/internal/app/functions/jets/base_path.rb +2 -1
  16. data/{lib/jets → engines}/internal/app/functions/jets/base_path_mapping.rb +26 -6
  17. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  18. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  19. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  20. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  21. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  22. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  23. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  24. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  25. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  26. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  27. data/engines/internal/lib/internal/actionview.rb +152 -0
  28. data/engines/internal/lib/internal/activerecord.rb +37 -0
  29. data/engines/internal/lib/internal/activesupport.rb +47 -0
  30. data/engines/internal/lib/internal/engine.rb +13 -0
  31. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  32. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  33. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  34. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  35. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  36. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  37. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  38. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  39. data/exe/jets +1 -10
  40. data/jets.gemspec +29 -27
  41. data/lib/jets/app_loader.rb +77 -0
  42. data/lib/jets/application/bootstrap.rb +100 -0
  43. data/lib/jets/application/configuration/defaults.rb +256 -0
  44. data/lib/jets/application/configuration.rb +494 -0
  45. data/lib/jets/application/default_middleware_stack.rb +140 -0
  46. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  47. data/lib/jets/application/finisher.rb +266 -0
  48. data/lib/jets/application/routes_reloader.rb +80 -0
  49. data/lib/jets/application.rb +515 -198
  50. data/lib/jets/authorizer/base.rb +1 -0
  51. data/lib/jets/authorizer/dsl.rb +15 -11
  52. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  53. data/lib/jets/autoloaders/gem.rb +70 -0
  54. data/lib/jets/autoloaders/inflector.rb +21 -0
  55. data/lib/jets/autoloaders.rb +38 -101
  56. data/lib/jets/aws_services/stack_status.rb +1 -1
  57. data/lib/jets/backtrace_cleaner.rb +27 -0
  58. data/lib/jets/booter.rb +29 -176
  59. data/lib/jets/builders/code_builder.rb +45 -117
  60. data/lib/jets/builders/code_size.rb +1 -0
  61. data/lib/jets/builders/gem_replacer.rb +5 -6
  62. data/lib/jets/builders/handler_generator.rb +34 -14
  63. data/lib/jets/builders/lambda_layer.rb +2 -7
  64. data/lib/jets/builders/purger.rb +1 -1
  65. data/lib/jets/builders/rack_packager.rb +1 -1
  66. data/lib/jets/builders/ruby_packager.rb +32 -21
  67. data/lib/jets/builders/shim_vars/app.rb +10 -6
  68. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  69. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  70. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  71. data/lib/jets/bundle.rb +2 -9
  72. data/lib/jets/cfn/base.rb +82 -0
  73. data/lib/jets/cfn/builder/api/base.rb +12 -0
  74. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +10 -20
  75. data/lib/jets/cfn/{builders/api_gateway_builder.rb → builder/api/gateway.rb} +14 -37
  76. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  77. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  78. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  79. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  80. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  81. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  82. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  83. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  84. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  85. data/lib/jets/cfn/builder/controller.rb +28 -0
  86. data/lib/jets/cfn/builder/function.rb +9 -0
  87. data/lib/jets/cfn/{builders → builder}/interface.rb +45 -51
  88. data/lib/jets/cfn/builder/job.rb +10 -0
  89. data/lib/jets/cfn/builder/nested.rb +130 -0
  90. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  91. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  92. data/lib/jets/cfn/{builders/parent_builder.rb → builder/parent.rb} +54 -54
  93. data/lib/jets/cfn/builder/post_process.rb +25 -0
  94. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  95. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +4 -3
  96. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  97. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  98. data/lib/jets/cfn/deployment.rb +45 -0
  99. data/lib/jets/cfn/download.rb +39 -0
  100. data/lib/jets/cfn/params/api/base.rb +39 -0
  101. data/lib/jets/cfn/params/api/cors.rb +10 -0
  102. data/lib/jets/cfn/params/api/methods.rb +69 -0
  103. data/lib/jets/cfn/params/api/resources.rb +28 -0
  104. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  105. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  106. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  107. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  108. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  109. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  111. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  112. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  113. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  114. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +1 -1
  117. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +1 -1
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +4 -3
  119. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +2 -2
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +5 -5
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  123. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +21 -0
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +12 -12
  128. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  129. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  130. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  131. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  132. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  133. data/lib/jets/{resource → cfn/resource}/iam/base_role_definition.rb +15 -15
  134. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  135. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  136. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  137. data/lib/jets/{resource → cfn/resource}/iam/policy.rb +8 -8
  138. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  139. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  140. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  141. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  142. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +4 -5
  143. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  144. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  145. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  146. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  147. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  148. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  149. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  150. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  151. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  152. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  153. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  154. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  155. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  156. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  157. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  158. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  159. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  160. data/lib/jets/cfn/resource/one/function.rb +66 -0
  161. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  162. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  163. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  164. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  165. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  166. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  167. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  168. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  169. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  170. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  171. data/lib/jets/cfn/resource.rb +8 -0
  172. data/lib/jets/cfn/ship.rb +20 -19
  173. data/lib/jets/cfn/template.rb +89 -0
  174. data/lib/jets/cfn/upload.rb +40 -37
  175. data/lib/jets/cli.rb +28 -210
  176. data/lib/jets/command/actions.rb +49 -0
  177. data/lib/jets/command/api_helpers.rb +41 -0
  178. data/lib/jets/command/aws_helpers.rb +26 -0
  179. data/lib/jets/command/base.rb +204 -0
  180. data/lib/jets/command/behavior.rb +83 -0
  181. data/lib/jets/command/environment_argument.rb +42 -0
  182. data/lib/jets/command/help/call.md +48 -0
  183. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  184. data/lib/jets/command/help/logs.md +21 -0
  185. data/lib/jets/{commands → command}/help/new.md +3 -4
  186. data/lib/jets/command/help/projects.md +6 -0
  187. data/lib/jets/command/help/releases.md +37 -0
  188. data/lib/jets/command/help/rollback.md +5 -0
  189. data/lib/jets/command/help/routes.md +15 -0
  190. data/lib/jets/command/help/stacks.md +6 -0
  191. data/lib/jets/command/help.rb +17 -0
  192. data/lib/jets/command/helpers/editor.rb +35 -0
  193. data/lib/jets/command.rb +133 -0
  194. data/lib/jets/commands/application/application_command.rb +40 -0
  195. data/lib/jets/commands/build/build_command.rb +33 -0
  196. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  197. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  198. data/lib/jets/commands/call/base_guesser.rb +4 -4
  199. data/lib/jets/commands/call/call_command.rb +27 -0
  200. data/lib/jets/commands/call/caller.rb +184 -0
  201. data/lib/jets/commands/call/guesser.rb +1 -1
  202. data/lib/jets/commands/clean/base.rb +1 -1
  203. data/lib/jets/commands/clean/build.rb +1 -1
  204. data/lib/jets/commands/clean/clean_command.rb +15 -0
  205. data/lib/jets/commands/clean/log.rb +1 -1
  206. data/lib/jets/commands/configure/configure_command.rb +9 -0
  207. data/lib/jets/commands/console/console_command.rb +38 -0
  208. data/lib/jets/commands/credentials/USAGE +103 -0
  209. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  210. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  211. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  212. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  213. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  214. data/lib/jets/commands/delete/delete_command.rb +155 -0
  215. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +28 -47
  216. data/lib/jets/commands/dev/dev_command.rb +19 -0
  217. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  218. data/lib/jets/commands/encrypted/USAGE +46 -0
  219. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  220. data/lib/jets/commands/gems/gems_command.rb +14 -0
  221. data/lib/jets/commands/generate/generate_command.rb +95 -0
  222. data/lib/jets/commands/help/USAGE +20 -0
  223. data/lib/jets/commands/help/help_command.rb +15 -0
  224. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  225. data/lib/jets/commands/logs/logs_command.rb +45 -0
  226. data/lib/jets/commands/new/new_command.rb +19 -0
  227. data/lib/jets/commands/notes/notes_command.rb +30 -0
  228. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  229. data/lib/jets/commands/projects/projects_command.rb +30 -0
  230. data/lib/jets/commands/rake/rake_command.rb +59 -0
  231. data/lib/jets/commands/releases/releases_command.rb +72 -0
  232. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  233. data/lib/jets/commands/routes/routes_command.rb +19 -0
  234. data/lib/jets/commands/runner/runner_command.rb +60 -0
  235. data/lib/jets/commands/server/server_command.rb +291 -0
  236. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  237. data/lib/jets/commands/status/status_command.rb +9 -0
  238. data/lib/jets/commands/{url.rb → url/url_command.rb} +37 -14
  239. data/lib/jets/commands/version/version_command.rb +11 -0
  240. data/lib/jets/commands.rb +17 -0
  241. data/lib/jets/configuration.rb +166 -0
  242. data/lib/jets/controller/base.rb +105 -183
  243. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  244. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  245. data/lib/jets/controller/compat/caching.rb +13 -0
  246. data/lib/jets/controller/compat/future.rb +13 -0
  247. data/lib/jets/controller/compat/route_set.rb +47 -0
  248. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  249. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  250. data/lib/jets/controller/decorate/logging.rb +90 -0
  251. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  252. data/lib/jets/controller/decorate/url_for.rb +10 -0
  253. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  254. data/lib/jets/controller/handler.rb +41 -0
  255. data/lib/jets/controller/middleware/main.rb +16 -8
  256. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +40 -15
  257. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  258. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  259. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  260. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -24
  261. data/lib/jets/controller/request/compat/params.rb +144 -0
  262. data/lib/jets/controller/request/compat/request.rb +125 -0
  263. data/lib/jets/controller/request.rb +35 -18
  264. data/lib/jets/controller/response/compat/response.rb +67 -0
  265. data/lib/jets/controller/response.rb +91 -8
  266. data/lib/jets/core.rb +136 -51
  267. data/lib/jets/core_ext/kernel.rb +2 -2
  268. data/lib/jets/core_ext/symbol.rb +5 -0
  269. data/lib/jets/core_ext.rb +4 -0
  270. data/lib/jets/dev_caching.rb +44 -0
  271. data/lib/jets/dotenv/ssm.rb +2 -2
  272. data/lib/jets/dotenv.rb +2 -1
  273. data/lib/jets/engine/configuration.rb +96 -0
  274. data/lib/jets/engine/turbines.rb +23 -0
  275. data/lib/jets/engine.rb +380 -0
  276. data/lib/jets/exception_reporting.rb +43 -0
  277. data/lib/jets/generators/job/job_generator.rb +41 -0
  278. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  279. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  280. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  281. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  282. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  283. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  284. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  285. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  286. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  287. data/lib/jets/generators/overrides/app/USAGE +38 -0
  288. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  289. data/lib/jets/generators/overrides/app/helpers.rb +143 -0
  290. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.gitignore +2 -1
  291. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  292. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  293. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  294. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  295. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  296. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  297. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  298. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  299. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  300. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  301. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  302. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  303. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  304. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  305. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  306. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  307. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  308. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  309. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  311. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  312. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  313. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  314. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  315. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  316. data/lib/jets/generators.rb +112 -0
  317. data/lib/jets/info.rb +116 -0
  318. data/lib/jets/initializable.rb +95 -0
  319. data/lib/jets/job/base.rb +3 -2
  320. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  321. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  322. data/lib/jets/job/dsl/iot_event.rb +6 -6
  323. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  324. data/lib/jets/job/dsl/log_event.rb +2 -2
  325. data/lib/jets/job/dsl/rule_event.rb +7 -4
  326. data/lib/jets/job/dsl/s3_event.rb +1 -1
  327. data/lib/jets/job/dsl/sns_event.rb +6 -6
  328. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  329. data/lib/jets/klass.rb +5 -6
  330. data/lib/jets/lambda/definition.rb +118 -0
  331. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  332. data/lib/jets/lambda/dsl.rb +64 -53
  333. data/lib/jets/lambda/function.rb +3 -3
  334. data/lib/jets/lambda/function_constructor.rb +6 -6
  335. data/lib/jets/lambda/functions.rb +36 -1
  336. data/lib/jets/mega/request/source.rb +1 -2
  337. data/lib/jets/mega/request.rb +4 -4
  338. data/lib/jets/names.rb +31 -15
  339. data/lib/jets/overrides/dummy/rails.rb +11 -0
  340. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  341. data/lib/jets/overrides/puma.rb +10 -0
  342. data/lib/jets/paths.rb +243 -0
  343. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  344. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  345. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  346. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  347. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  348. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  349. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  350. data/lib/jets/preheat.rb +12 -25
  351. data/lib/jets/processors/deducer.rb +2 -2
  352. data/lib/jets/processors/main_processor.rb +6 -13
  353. data/lib/jets/rack/logger.rb +77 -0
  354. data/lib/jets/router/compat/route_set.rb +177 -0
  355. data/lib/jets/router/dsl/mount.rb +40 -6
  356. data/lib/jets/router/dsl.rb +125 -105
  357. data/lib/jets/router/engine_mount.rb +36 -0
  358. data/lib/jets/router/help.rb +130 -0
  359. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  360. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  361. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  362. data/lib/jets/router/matcher.rb +135 -16
  363. data/lib/jets/router/resources/options.rb +6 -4
  364. data/lib/jets/router/route/after_initialize.rb +64 -0
  365. data/lib/jets/router/route/as.rb +93 -0
  366. data/lib/jets/router/route/authorizer.rb +1 -0
  367. data/lib/jets/router/route/compat.rb +45 -0
  368. data/lib/jets/router/route/info.rb +74 -0
  369. data/lib/jets/router/route/node.rb +137 -0
  370. data/lib/jets/router/route/path.rb +93 -0
  371. data/lib/jets/router/route.rb +109 -106
  372. data/lib/jets/router/route_set.rb +214 -0
  373. data/lib/jets/router/scope.rb +204 -69
  374. data/lib/jets/router/state.rb +36 -16
  375. data/lib/jets/router/util.rb +1 -31
  376. data/lib/jets/router.rb +64 -162
  377. data/lib/jets/ruby_version_check.rb +15 -0
  378. data/lib/jets/rule/base.rb +1 -0
  379. data/lib/jets/rule/dsl.rb +7 -7
  380. data/lib/jets/secrets.rb +110 -0
  381. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  382. data/lib/jets/spec_helpers/controllers.rb +32 -24
  383. data/lib/jets/spec_helpers.rb +0 -6
  384. data/lib/jets/stack/builder.rb +3 -2
  385. data/lib/jets/stack/definition.rb +1 -4
  386. data/lib/jets/stack/function.rb +2 -2
  387. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  388. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  389. data/lib/jets/stack/main/dsl/lambda.rb +26 -20
  390. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  391. data/lib/jets/stack/output/lookup.rb +1 -1
  392. data/lib/jets/stack/output.rb +2 -2
  393. data/lib/jets/stack/parameter.rb +2 -2
  394. data/lib/jets/stack/resource.rb +3 -3
  395. data/lib/jets/stack/s3_event.rb +51 -37
  396. data/lib/jets/stack.rb +1 -1
  397. data/lib/jets/tasks/engine.rake +85 -0
  398. data/lib/jets/tasks/framework.rake +66 -0
  399. data/lib/jets/tasks/log.rake +41 -0
  400. data/lib/jets/tasks/middleware.rake +9 -0
  401. data/lib/jets/tasks/misc.rake +81 -0
  402. data/lib/jets/tasks/statistics.rake +37 -0
  403. data/lib/jets/tasks/tmp.rake +51 -0
  404. data/lib/jets/tasks/yarn.rake +29 -0
  405. data/lib/jets/tasks/zeitwerk.rake +61 -0
  406. data/lib/jets/tasks.rb +18 -0
  407. data/lib/jets/turbine/configurable.rb +36 -0
  408. data/lib/jets/turbine/configuration.rb +101 -0
  409. data/lib/jets/turbine.rb +164 -20
  410. data/lib/jets/util/camelize.rb +24 -0
  411. data/lib/jets/version.rb +1 -1
  412. data/lib/jets.rb +7 -16
  413. metadata +410 -362
  414. data/bin/release +0 -9
  415. data/lib/jets/application/defaults.rb +0 -230
  416. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  417. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  418. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  419. data/lib/jets/cfn/builders/base_child_builder.rb +0 -88
  420. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  421. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  422. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  423. data/lib/jets/cfn/builders/page_builder.rb +0 -80
  424. data/lib/jets/cfn/built_template.rb +0 -15
  425. data/lib/jets/cfn/template_source.rb +0 -64
  426. data/lib/jets/commands/base.rb +0 -145
  427. data/lib/jets/commands/call.rb +0 -185
  428. data/lib/jets/commands/clean.rb +0 -19
  429. data/lib/jets/commands/configure.rb +0 -51
  430. data/lib/jets/commands/console.rb +0 -18
  431. data/lib/jets/commands/db/environment-task.rake +0 -3
  432. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  433. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  434. data/lib/jets/commands/db/tasks.rb +0 -34
  435. data/lib/jets/commands/db.rb +0 -13
  436. data/lib/jets/commands/dbconsole.rb +0 -134
  437. data/lib/jets/commands/delete.rb +0 -136
  438. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  439. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  440. data/lib/jets/commands/dynamodb.rb +0 -19
  441. data/lib/jets/commands/gems.rb +0 -13
  442. data/lib/jets/commands/help/call.md +0 -69
  443. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  444. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  445. data/lib/jets/commands/help/routes.md +0 -16
  446. data/lib/jets/commands/help.rb +0 -9
  447. data/lib/jets/commands/import/base.rb +0 -49
  448. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  449. data/lib/jets/commands/import/rack.rb +0 -16
  450. data/lib/jets/commands/import/rails.rb +0 -74
  451. data/lib/jets/commands/import/sequence.rb +0 -90
  452. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  453. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  454. data/lib/jets/commands/import.rb +0 -12
  455. data/lib/jets/commands/main.rb +0 -169
  456. data/lib/jets/commands/markdown/creator.rb +0 -58
  457. data/lib/jets/commands/markdown/index.rb +0 -27
  458. data/lib/jets/commands/markdown/page.rb +0 -125
  459. data/lib/jets/commands/markdown/shell.rb +0 -11
  460. data/lib/jets/commands/new.rb +0 -173
  461. data/lib/jets/commands/rake_command.rb +0 -61
  462. data/lib/jets/commands/rake_tasks.rb +0 -50
  463. data/lib/jets/commands/runner.rb +0 -16
  464. data/lib/jets/commands/sequence.rb +0 -104
  465. data/lib/jets/commands/stack_info.rb +0 -30
  466. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  467. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  468. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  469. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  470. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  471. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  472. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  473. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  474. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  475. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -72
  476. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  477. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  478. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  479. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  480. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  481. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  482. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -20
  483. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  484. data/lib/jets/commands/upgrade/version1.rb +0 -136
  485. data/lib/jets/commands/upgrade.rb +0 -105
  486. data/lib/jets/commands/webpacker_template.rb +0 -18
  487. data/lib/jets/controller/callbacks.rb +0 -73
  488. data/lib/jets/controller/cookies/jar.rb +0 -269
  489. data/lib/jets/controller/cookies.rb +0 -38
  490. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  491. data/lib/jets/controller/error.rb +0 -4
  492. data/lib/jets/controller/forgery_protection.rb +0 -43
  493. data/lib/jets/controller/layout.rb +0 -17
  494. data/lib/jets/controller/middleware/cors.rb +0 -60
  495. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  496. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  497. data/lib/jets/controller/middleware/reloader.rb +0 -15
  498. data/lib/jets/controller/parameters_filter.rb +0 -29
  499. data/lib/jets/controller/params.rb +0 -117
  500. data/lib/jets/controller/redirection.rb +0 -61
  501. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  502. data/lib/jets/controller/rendering.rb +0 -96
  503. data/lib/jets/controller/stage.rb +0 -34
  504. data/lib/jets/controller.rb +0 -3
  505. data/lib/jets/db.rb +0 -15
  506. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  507. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  508. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  509. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  510. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  511. data/lib/jets/generator.rb +0 -112
  512. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  513. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  514. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  515. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -52
  516. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  517. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  518. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  519. data/lib/jets/lambda/task.rb +0 -111
  520. data/lib/jets/logger.rb +0 -21
  521. data/lib/jets/middleware/configurator.rb +0 -84
  522. data/lib/jets/middleware/default_stack.rb +0 -53
  523. data/lib/jets/middleware/layer.rb +0 -34
  524. data/lib/jets/middleware/stack.rb +0 -77
  525. data/lib/jets/middleware.rb +0 -33
  526. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  527. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  528. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  529. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  530. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  531. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  532. data/lib/jets/overrides/rails.rb +0 -6
  533. data/lib/jets/rack_server.rb +0 -86
  534. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  535. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  536. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  537. data/lib/jets/resource/api_gateway/method.rb +0 -102
  538. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  539. data/lib/jets/resource/base.rb +0 -28
  540. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  541. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  542. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  543. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  544. data/lib/jets/resource/child_stack/base.rb +0 -24
  545. data/lib/jets/resource/lambda/function.rb +0 -221
  546. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  547. data/lib/jets/resource/permission.rb +0 -45
  548. data/lib/jets/resource.rb +0 -71
  549. data/lib/jets/router/error.rb +0 -4
  550. data/lib/jets/router/finder.rb +0 -47
  551. data/lib/jets/router/helpers/core_helper.rb +0 -27
  552. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  553. data/lib/jets/router/helpers.rb +0 -4
  554. data/lib/jets/router/method_creator/code.rb +0 -99
  555. data/lib/jets/router/method_creator/edit.rb +0 -12
  556. data/lib/jets/router/method_creator/generic.rb +0 -11
  557. data/lib/jets/router/method_creator/index.rb +0 -48
  558. data/lib/jets/router/method_creator/new.rb +0 -12
  559. data/lib/jets/router/method_creator/root.rb +0 -15
  560. data/lib/jets/router/method_creator/show.rb +0 -12
  561. data/lib/jets/router/method_creator.rb +0 -50
  562. data/lib/jets/turbo/database_yaml.rb +0 -41
  563. data/lib/jets/turbo/project/.gitignore +0 -12
  564. data/lib/jets/turbo/project/.jetskeep +0 -1
  565. data/lib/jets/turbo/project/Gemfile +0 -16
  566. data/lib/jets/turbo/project/Rakefile +0 -2
  567. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  568. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  569. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  570. data/lib/jets/turbo/project/config/application.rb +0 -5
  571. data/lib/jets/turbo/project/config/routes.rb +0 -4
  572. data/lib/jets/turbo/project/config.ru +0 -5
  573. data/lib/jets/turbo/rails.rb +0 -127
  574. data/lib/jets/turbo/templates/config/database.yml +0 -30
  575. data/lib/jets/turbo.rb +0 -56
  576. data/readme/prerelease.md +0 -6
  577. data/readme/testing.md +0 -60
  578. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  579. /data/lib/jets/{commands → command}/help/build.md +0 -0
  580. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  581. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  582. /data/lib/jets/{commands → command}/help/console.md +0 -0
  583. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  584. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  585. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  586. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  587. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  588. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  589. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  590. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  591. /data/lib/jets/{commands → command}/help/runner.md +0 -0
  592. /data/lib/jets/{commands → command}/help/server.md +0 -0
  593. /data/lib/jets/{commands → command}/help/status.md +0 -0
  594. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  595. /data/lib/jets/{commands → command}/help/url.md +0 -0
  596. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  597. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  598. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  599. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  600. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  601. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  602. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  603. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  604. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  605. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  606. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  607. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  608. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  609. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  610. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  611. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  612. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  613. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  614. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  615. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  616. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -1,173 +0,0 @@
1
- module Jets::Commands
2
- class New < Sequence
3
- VALID_MODES = %w[html api job]
4
- argument :project_folder
5
-
6
- # Ugly, but when the class_option is only defined in the Thor::Group class
7
- # it doesnt show up with jets new help :(
8
- # If anyone knows how to fix this let me know.
9
- def self.cli_options
10
- [
11
- [:bootstrap, type: :boolean, default: true, desc: "Install bootstrap css"], # same option in WebpackerTemplate
12
- [:database, type: :string, default: 'mysql', desc: "Preconfigure database (options: mysql/postgresql)"],
13
- [:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files."],
14
- [:git, type: :boolean, default: true, desc: "Git initialize the project"],
15
- [:mode, default: 'html', desc: "mode: #{VALID_MODES.join(',')}"],
16
- [:repo, desc: "GitHub repo to use. Format: user/repo"],
17
- [:webpacker, type: :boolean, default: true, desc: "Install webpacker"],
18
- ]
19
- end
20
-
21
- cli_options.each do |args|
22
- class_option(*args)
23
- end
24
-
25
- def set_initial_variables
26
- @project_name = project_folder == '.' ? File.basename(Dir.pwd) : project_folder
27
- @database_name = @project_name.gsub('-','_')
28
-
29
- # options is a frozen hash by Thor so cannot modify it.
30
- # Also had trouble unfreezing it with .dup. So using instance variables instead
31
- case options[:mode]
32
- when 'html'
33
- @bootstrap = options[:bootstrap]
34
- @database = options[:database]
35
- @webpacker = options[:webpacker]
36
- when 'api'
37
- @bootstrap = false
38
- @database = options[:database]
39
- @webpacker = false
40
- when 'job'
41
- @bootstrap = false
42
- @database = false
43
- @webpacker = false
44
- else
45
- puts "Invalid mode provided: #{@options[:mode].color(:red)}. Please pass in an valid mode: #{VALID_MODES.join(',').color(:green)}."
46
- exit 1
47
- end
48
- end
49
-
50
- def create_project
51
- options[:repo] ? clone_project : copy_project
52
-
53
- destination_root = "#{Dir.pwd}/#{project_folder}"
54
- self.destination_root = destination_root
55
- FileUtils.cd("#{Dir.pwd}/#{project_folder}")
56
- end
57
-
58
- def make_bin_executable
59
- return unless File.exist?("bin")
60
- chmod "bin", 0755 & ~File.umask, verbose: false
61
- end
62
-
63
- def bundle_install
64
- Bundler.with_unbundled_env do
65
- system("BUNDLE_IGNORE_CONFIG=1 bundle install")
66
- end
67
- end
68
-
69
- def webpacker_install
70
- return unless @webpacker
71
- unless yarn_installed?
72
- puts "Yarn is not installed or has not been detected. Please double check that yarn has been installed.".color(:red)
73
- puts <<~EOL
74
- To check:
75
-
76
- which yarn
77
-
78
- If it is not installed, you can usually install it with:
79
-
80
- npm install -g yarn
81
-
82
- Refer to the install docs for more info: http://rubyonjets.com/docs/install/
83
- EOL
84
- exit 1
85
- end
86
-
87
- command = "bundle exec jets webpacker:install"
88
- command += " FORCE=1" if options[:force]
89
- run(command)
90
- end
91
-
92
- def update_package_json
93
- path = "package.json"
94
- return unless File.exist?(path)
95
- data = JSON.load(IO.read(path))
96
- data["private"] = true
97
- IO.write(path, JSON.pretty_generate(data))
98
- end
99
-
100
- # bootstrap is dependent on webpacker, options[:bootstrap] is used
101
- # in webpacker_install.
102
- def bootstrap_install
103
- return unless @bootstrap
104
-
105
- # Add jquery and popper plugin to handle Delete of CRUD
106
- jquery =<<-JS
107
- const webpack = require('webpack')
108
- environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
109
- $: 'jquery',
110
- jQuery: 'jquery',
111
- Popper: ['popper.js', 'default']
112
- }))
113
- JS
114
- after = "const { environment } = require('@rails/webpacker')\n"
115
- insert_into_file("config/webpack/environment.js", jquery, after: after)
116
-
117
- jets_ujs =<<-JS
118
- import Jets from "@rubyonjets/ujs-compat"
119
- Jets.start()
120
- JS
121
- after = "Rails.start()\n"
122
- insert_into_file("app/javascript/packs/application.js", jets_ujs, after: after)
123
-
124
- run("yarn add bootstrap jquery popper.js postcss-cssnext @rails/ujs @rubyonjets/ujs-compat")
125
- end
126
-
127
- def git_init
128
- return if !options[:git]
129
- return unless git_installed?
130
- return if File.exist?(".git") # this is a clone repo
131
- return unless git_credentials_set?
132
-
133
- run("git init")
134
- run("git add .")
135
- run("git commit -m 'first commit'")
136
- end
137
-
138
- def user_message
139
- more_info = if options[:mode] == 'job'
140
- <<~EOL
141
- Learn more about jobs here: http://rubyonjets.com/docs/jobs/
142
-
143
- To deploy to AWS Lambda:
144
- jets deploy
145
- EOL
146
- else
147
- <<~EOL
148
- To start a server and test locally:
149
- jets server # localhost:8888 should have the Jets welcome page
150
-
151
- Scaffold example:
152
- jets generate scaffold post title:string body:text published:boolean
153
- jets db:create db:migrate
154
-
155
- To deploy to AWS Lambda, edit your .env.development.remote and add a DATABASE_URL endpoint.
156
- Then run:
157
-
158
- jets deploy
159
- EOL
160
- end
161
-
162
- puts <<~EOL
163
- #{"="*64}
164
- Congrats 🎉 You have successfully created a Jets project.
165
-
166
- Cd into the project directory:
167
- cd #{project_folder}
168
-
169
- #{more_info}
170
- EOL
171
- end
172
- end
173
- end
@@ -1,61 +0,0 @@
1
- class Jets::Commands::RakeCommand
2
- class << self
3
- # Same signature as Jets::Commands::Base.perform.
4
- def perform(namespaced_command, thor_args)
5
- if thor_args.first == "help"
6
- puts help_message(namespaced_command)
7
- return
8
- end
9
-
10
- require_rake
11
-
12
- ARGV.unshift(namespaced_command) # Prepend the task, so Rake knows how to run it.
13
-
14
- rake.standard_exception_handling do
15
- rake.init("jets")
16
- rake.load_rakefile
17
- rake.top_level
18
- end
19
- end
20
-
21
- # Useful for CLI.lookup.
22
- def namespaced_commands
23
- formatted_rake_tasks(true).map(&:first)
24
- end
25
-
26
- def formatted_rake_tasks(all=false)
27
- rake_tasks(all).map do |t|
28
- comment = "# #{t.comment}" if t.comment
29
- [ t.name_with_args, comment ]
30
- end
31
- end
32
-
33
- def rake_tasks(all=false)
34
- require_rake
35
-
36
- Rake::TaskManager.record_task_metadata = true
37
- rake.instance_variable_set(:@name, "jets")
38
- Jets::Commands::RakeTasks.load!
39
- tasks = rake.tasks
40
- tasks = tasks.select(&:comment) unless all
41
- tasks
42
- end
43
-
44
- def help_message(namespaced_command)
45
- task = rake_tasks(true).find { |t| t.name == namespaced_command }
46
- message = "Help provided by rake task:\n\n"
47
- message << "jets #{task.name_with_args.dup}\n"
48
- message << " #{task.full_comment}"
49
- message
50
- end
51
-
52
- private
53
- def rake
54
- Rake.application
55
- end
56
-
57
- def require_rake
58
- require "rake" # Defer booting Rake until we know it's needed.
59
- end
60
- end
61
- end
@@ -1,50 +0,0 @@
1
- require 'rake'
2
-
3
- class Jets::Commands::RakeTasks
4
- class << self
5
- # Will only load the tasks once. Just in case the user has already loaded
6
- # Jets rake tasks in their Rakefile. Example Rakefile that does this:
7
- #
8
- # require 'jets'
9
- # Jets.load_tasks
10
- #
11
- @@loaded = false
12
- def load!
13
- return if @@loaded # prevent loading twice
14
- # Run Bundler.setup so all project rake tasks also show up in `jets help`
15
- Jets::Bundle.setup
16
-
17
- Jets::Commands::Db::Tasks.load!
18
- load_webpacker_tasks
19
-
20
- # custom project rake tasks
21
- Dir.glob("#{Jets.root}/lib/tasks/*.rake").each { |r| load r }
22
-
23
- @@loaded = true
24
- end
25
-
26
- # Handles load errors gracefuly per Booter.required_bundle_gems comments.
27
- def load_webpacker_tasks
28
- begin
29
- require "webpacker"
30
- require "webpacker/rake_tasks"
31
- rescue LoadError
32
- # puts "WARN: unable to load gem. #{$!}. Running with 'bundle exec' might fix this warning."
33
- # Happens whne user calls jets help outside the jets project folder.
34
- return
35
- end
36
-
37
- Webpacker::RakeTasks.load!
38
- # Thanks: https://coderwall.com/p/qhdhgw/adding-a-post-execution-hook-to-the-rails-db-migrate-task
39
- # Enchancing in case the user runs webpacker:install afterwards
40
- # instead of jets new.
41
- Rake::Task['webpacker:install'].enhance do
42
- # FORCE from rake webpacker:install FORCE=1
43
- # using ENV because rake webpacker:install is a rake task
44
- args ||= []
45
- args += ["--force"] if ENV['FORCE']
46
- Jets::Commands::WebpackerTemplate.start(args)
47
- end
48
- end
49
- end
50
- end
@@ -1,16 +0,0 @@
1
- class Jets::Commands::Runner
2
- def self.run(code, args=nil)
3
- if code =~ %r{^file://}
4
- path = code.sub('file://', '')
5
- full_path = "#{Jets.root}/#{path}"
6
- if File.exist?(full_path)
7
- code = IO.read(full_path)
8
- else
9
- puts "ERROR: file not found at #{full_path}".color(:red)
10
- exit 1
11
- end
12
- end
13
-
14
- eval(code) # inline script
15
- end
16
- end
@@ -1,104 +0,0 @@
1
- require 'fileutils'
2
- require 'thor'
3
- require 'bundler'
4
-
5
- class Jets::Commands::Sequence < Thor::Group
6
- include Thor::Actions
7
-
8
- def self.source_root
9
- File.expand_path("templates/skeleton", File.dirname(__FILE__))
10
- end
11
-
12
- private
13
- def jets_minor_version
14
- md = Jets::VERSION.match(/(\d+)\.(\d+)\.\d+/)
15
- major, minor = md[1], md[2]
16
- [major, minor, '0'].join('.')
17
- end
18
-
19
- def clone_project
20
- unless git_installed?
21
- abort "Unable to detect git installation on your system. Git needs to be installed in order to use the --repo option."
22
- end
23
-
24
- if File.exist?(project_folder)
25
- abort "The folder #{project_folder} already exists."
26
- else
27
- run "git clone https://github.com/#{options[:repo]} #{project_folder}"
28
- end
29
- confirm_jets_project
30
- end
31
-
32
- def confirm_jets_project
33
- jets_project = File.exist?("#{project_folder}/config/application.rb")
34
- unless jets_project
35
- puts "#{options[:repo]} does not look like a Jets project. Double check your repo!".color(:red)
36
- exit 1
37
- end
38
- end
39
-
40
- def copy_project
41
- puts "Creating a new Jets project called #{@project_name}."
42
- directory ".", project_folder, copy_options
43
- end
44
-
45
- def copy_options
46
- excludes = case @options[:mode]
47
- when 'job'
48
- # For job mode: list of words to include in the exclude pattern and will not be generated.
49
- %w[
50
- Procfile
51
- controllers
52
- javascript
53
- models/application_
54
- views
55
- config.ru
56
- database.yml
57
- dynamodb.yml
58
- routes
59
- db/
60
- spec
61
- yarn
62
- public
63
- ]
64
- when 'api'
65
- %w[
66
- views
67
- ]
68
- else # html
69
- []
70
- end
71
-
72
- unless @database
73
- # Do not even generate the config/database.yml because
74
- # Jets webpacker:install bombs and tries to load the db since it sees a
75
- # config/database.yml but there's no database pg gem configured.
76
- excludes += %w[
77
- database.yml
78
- models/application_record
79
- ]
80
- end
81
-
82
- if excludes.empty?
83
- {}
84
- else
85
- pattern = Regexp.new(excludes.join('|'))
86
- {exclude_pattern: pattern }
87
- end
88
- end
89
-
90
- def git_installed?
91
- system("type git > /dev/null 2>&1")
92
- end
93
-
94
- # In order to automatically create first commit
95
- # the user needs to have their credentials set
96
- def git_credentials_set?
97
- configs = `git config --list`.split("\n")
98
- configs.any? { |c| c.start_with? 'user.name=' } && configs.any? { |c| c.start_with? 'user.email=' }
99
- end
100
-
101
- def yarn_installed?
102
- system("type yarn > /dev/null 2>&1")
103
- end
104
- end
@@ -1,30 +0,0 @@
1
- # The important methods in this class are stack_type, s3_bucket and first_run?
2
- # We use stack_type and s3_bucket to get info for both the build and deploy CLI
3
- # commands.
4
- # first_run? will always make an API call.
5
- module Jets::Commands::StackInfo
6
- include Jets::AwsServices
7
-
8
- def stack_type
9
- first_run? ? :minimal : :full
10
- end
11
-
12
- def s3_bucket
13
- return @s3_bucket if @s3_bucket
14
- return nil if first_run?
15
- return "fake-bucket" if ENV['JETS_BUILD_NO_INTERNET']
16
-
17
- resp = cfn.describe_stacks(stack_name: parent_stack_name)
18
- output = resp.stacks[0].outputs.find {|o| o.output_key == 'S3Bucket'}
19
- @s3_bucket = output.output_value # once an s3 bucket is found, cache it
20
- end
21
-
22
- # Always call API
23
- def first_run?
24
- !stack_exists?(parent_stack_name)
25
- end
26
-
27
- def parent_stack_name
28
- Jets::Names.parent_stack_name
29
- end
30
- end
@@ -1,3 +0,0 @@
1
- # Example .env.development, meant to be updated.
2
- ENV_DEVELOPMENT_KEY=example1
3
- # DATABASE_URL=<%= @database == 'mysql' ? 'mysql2' : 'postgres' %>://dbuser:dbpass@dbhost/<%= @project_name %>_development?pool=5
@@ -1,3 +0,0 @@
1
- # Example .env.test, meant to be updated.
2
- env_key1=env_value1
3
- env_key2=env_value2
@@ -1,3 +0,0 @@
1
- # Example .env, meant to be updated.
2
- # Variables in here are available and shared across all environments: development, production, etc.
3
- SECRET_KEY_BASE=<%= SecureRandom.hex(64) %>
@@ -1 +0,0 @@
1
- pack
@@ -1,40 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "jets", "~> <%= jets_minor_version %>"
4
-
5
- <% if @webpacker -%>
6
- # Include jetpacker if you are building html pages
7
- gem "jetpacker"
8
- <% end -%>
9
- <% if @database == 'postgresql' %>
10
- # Include pg gem if you are using ActiveRecord, remove next line
11
- # and config/database.yml file if you are not
12
- gem "pg", "~> 1.2.3"
13
- <% elsif @database == 'mysql' %>
14
- # Include mysql2 gem if you are using ActiveRecord, remove next line
15
- # and config/database.yml file if you are not
16
- gem "mysql2", "~> 0.5.3"
17
- <% end %>
18
- <% unless options[:mode] == 'job' -%>
19
- gem "dynomite", "~> 1.2.7"
20
- <% end -%>
21
- gem "zeitwerk", ">= 2.5.0"
22
-
23
- # development and test groups are not bundled as part of the deployment
24
- group :development, :test do
25
- # Call 'byebug' anywhere in the code to stop execution and get a debugger console
26
- gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
27
- <% unless options[:mode] == 'job' -%>
28
- gem 'shotgun'
29
- gem 'rack'
30
- gem 'puma'
31
- <% end -%>
32
- end
33
-
34
- group :test do
35
- gem 'rspec' # rspec test group only or we get the "irb: warn: can't alias context from irb_context warning" when starting jets console
36
- <% unless options[:mode] == 'job' -%>
37
- gem 'launchy'
38
- gem 'capybara'
39
- <% end -%>
40
- end
@@ -1,7 +0,0 @@
1
- local: dynamodb-local # port 8000
2
- admin: env AWS_ACCESS_KEY_ID=$DYNAMODB_ADMIN_AWS_ACCESS_KEY_ID PORT=8001 dynamodb-admin # port 8001
3
- # web: jets server # port 8888
4
-
5
- # Using Procfile to just start local dynamodb services for now.
6
- # To start jets server for now use:
7
- # jets server
@@ -1,2 +0,0 @@
1
- require 'jets'
2
- Jets.load_tasks
@@ -1,2 +0,0 @@
1
- class ApplicationItem < Dynomite::Item
2
- end
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
6
- <meta name="theme-color" content="#000000">
7
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
- <%%= csrf_meta_tags %>
9
- <title>Jets App</title>
10
- <%%= javascript_pack_tag "application" %>
11
- <%%= stylesheet_pack_tag "theme" %>
12
- <link rel="shortcut icon" href="<%%= favicon_path %>">
13
- </head>
14
- <body>
15
- <section class="starter">
16
- <div class="container">
17
- <div class="row">
18
- <div class="col-md-9 content-body">
19
- <%% if @title %><h1><%%= @title %></h1><%% end %>
20
- <%%= yield %>
21
- </div>
22
- </div>
23
- </div>
24
- </section>
25
- </body>
26
- </html>
@@ -1,72 +0,0 @@
1
- Jets.application.configure do
2
- config.project_name = "<%= @project_name %>"
3
- config.mode = "<%= @options[:mode] %>"
4
-
5
- <% if @options[:mode] == 'job' -%>
6
- config.prewarm.enable = false
7
- <% else -%>
8
- config.prewarm.enable = true # default is true
9
- # config.prewarm.rate = '30 minutes' # default is '30 minutes'
10
- # config.prewarm.concurrency = 2 # default is 2
11
- # config.prewarm.public_ratio = 3 # default is 3
12
- <% end -%>
13
-
14
- # config.extra = 2 # can also set this with JETS_EXTRA
15
- # config.autoload_paths = []
16
-
17
- # config.asset_base_url = 'https://cloudfront.domain.com/assets' # example
18
-
19
- # config.cors = true # for '*'' # defaults to false
20
- # config.cors = '*.mydomain.com' # for specific domain
21
-
22
- # config.function.timeout = 30 # defaults to 30
23
- # config.function.role = "arn:aws:iam::#{Jets.aws.account}:role/service-role/pre-created"
24
- # config.function.memory_size = 1536
25
-
26
- # config.api.endpoint_type = 'PRIVATE' # Default is 'EDGE' (https://docs.aws.amazon.com/apigateway/api-reference/link-relation/restapi-create/#endpointConfiguration)
27
-
28
- # config.function.environment = {
29
- # global_app_key1: "global_app_value1",
30
- # global_app_key2: "global_app_value2",
31
- # }
32
- # More examples:
33
- # config.function.dead_letter_config = { target_arn: "arn" }
34
- # config.function.vpc_config = {
35
- # security_group_ids: %w[sg-1 sg-2],
36
- # subnet_ids: %w[subnet-1 subnet-2],
37
- # }
38
- # config.function.ephemeral_storage = { size: 1536 }
39
- # The config.function settings to the CloudFormation Lambda Function properties.
40
- # http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
41
- # Underscored format can be used for keys to make it look more ruby-ish.
42
-
43
- # Assets settings
44
- # The config.assets.folders are folders within the public folder that will be set
45
- # to public-read on s3 and served directly. IE: public/assets public/images public/packs
46
- # config.assets.folders = %w[assets images packs]
47
- # config.assets.max_age = 3600 # when to expire assets
48
- # config.assets.cache_control = nil # IE: "public, max-age=3600" # override max_age for more fine-grain control.
49
- # config.assets.base_url = nil # IE: https://cloudfront.com/my/base/path, defaults to the s3 bucket url
50
- # IE: https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1inlzkvujq8zb
51
-
52
- # config.api.endpoint_type = 'PRIVATE' # Default is 'EDGE' https://amzn.to/2r0Iu2L
53
- # config.api.authorization_type = "AWS_IAM" # default is 'NONE' https://amzn.to/2qZ7zLh
54
-
55
-
56
- # More info: http://rubyonjets.com/docs/routing/custom-domain/
57
- # config.domain.hosted_zone_name = "example.com"
58
- # us-west-2 REGIONAL endpoint - takes 2 minutes
59
- # config.domain.cert_arn = "arn:aws:acm:us-west-2:112233445566:certificate/8d8919ce-a710-4050-976b-b33da991e123"
60
- # us-east-1 EDGE endpoint - takes 10-15 minutes
61
- # config.domain.cert_arn = "arn:aws:acm:us-east-1:112233445566:certificate/d68472ba-04f8-45ba-b9db-14f839d57123"
62
- # config.domain.endpoint_type = "EDGE"
63
-
64
- # By default logger needs to log to $stderr for CloudWatch to receive Lambda messages, but for
65
- # local testing environment you may want to log these messages to 'test.log' file to keep your
66
- # testing suite output readable.
67
- # config.logger = Jets::Logger.new($stderr)
68
-
69
- <% if @options[:mode] == 'api' -%>
70
- config.controllers.default_protect_from_forgery = false
71
- <% end -%>
72
- end
@@ -1,22 +0,0 @@
1
- # Jets::Config.project_namespace is special value results in using the project namespace. Example :
2
- # table_namespace: <%= Jets.config.project_namespace %>
3
- # This is the default value.
4
-
5
- development:
6
- table_namespace: <%= Jets.config.table_namespace %>
7
- # More examples:
8
- # table_namespace: demo-dev
9
-
10
- endpoint: http://localhost:8000 # comment out if want to test with real dynamodb
11
- # on AWS. You can also set the DYNAMODB_ENDPOINT environment variable.
12
- # You can also are actually deploying a development environment is to
13
- # change bin/server and export DYNAMODB_ENDPOINT=http://localhost:8000 at the top
14
- # there.
15
-
16
- test:
17
- # table_namespace: proj # do not include the env
18
- endpoint: http://localhost:8000
19
- table_namespace: <%= Jets.config.table_namespace %>
20
-
21
- production:
22
- table_namespace: <%= Jets.config.table_namespace %>
@@ -1,7 +0,0 @@
1
- Jets.application.configure do
2
- # Example:
3
- # config.function.memory_size = 1536
4
-
5
- # config.action_mailer.raise_delivery_errors = false
6
- # Docs: http://rubyonjets.com/docs/email-sending/
7
- end
@@ -1,9 +0,0 @@
1
- Jets.application.configure do
2
- # Example:
3
- # config.function.memory_size = 2048
4
-
5
- # Ignore bad email addresses and do not raise email delivery errors.
6
- # Set this to true and configure the email server for immediate delivery to raise delivery errors.
7
- # Docs: http://rubyonjets.com/docs/email-sending/
8
- # config.action_mailer.raise_delivery_errors = false
9
- end
@@ -1,7 +0,0 @@
1
- Jets.application.configure do
2
- # Tell Action Mailer not to deliver emails to the real world.
3
- # The :test delivery method accumulates sent emails in the
4
- # ActionMailer::Base.deliveries array.
5
- # Docs: http://rubyonjets.com/docs/email-sending/
6
- config.action_mailer.delivery_method = :test
7
- end