jets 3.1.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +5 -1
- data/CHANGELOG.md +141 -0
- data/Gemfile +1 -5
- data/LICENSE.txt +1 -1
- data/README.md +21 -43
- data/Rakefile +3 -3
- data/backers.md +0 -5
- data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
- data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
- data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
- data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
- data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
- data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
- data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
- data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
- data/engines/internal/app/functions/jets/base_path.rb +109 -0
- data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
- data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
- data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
- data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
- data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
- data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
- data/engines/internal/app/views/layouts/application.html.erb +51 -0
- data/engines/internal/lib/internal/actiondispatch.rb +39 -0
- data/engines/internal/lib/internal/actionmailer.rb +51 -0
- data/engines/internal/lib/internal/actionview.rb +152 -0
- data/engines/internal/lib/internal/activerecord.rb +37 -0
- data/engines/internal/lib/internal/activesupport.rb +47 -0
- data/engines/internal/lib/internal/engine.rb +13 -0
- data/engines/internal/lib/internal/i18n_engine.rb +19 -0
- data/engines/internal/lib/internal/jets_controller.rb +46 -0
- data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
- data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
- data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
- data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
- data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
- data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
- data/exe/jets +1 -10
- data/jets.gemspec +16 -13
- data/lib/jets/app_loader.rb +77 -0
- data/lib/jets/application/bootstrap.rb +100 -0
- data/lib/jets/application/configuration/defaults.rb +256 -0
- data/lib/jets/application/configuration.rb +494 -0
- data/lib/jets/application/default_middleware_stack.rb +140 -0
- data/lib/jets/application/dummy_erb_compiler.rb +18 -0
- data/lib/jets/application/finisher.rb +266 -0
- data/lib/jets/application/routes_reloader.rb +80 -0
- data/lib/jets/application.rb +515 -199
- data/lib/jets/authorizer/base.rb +1 -0
- data/lib/jets/authorizer/dsl.rb +15 -11
- data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
- data/lib/jets/autoloaders/gem.rb +70 -0
- data/lib/jets/autoloaders/inflector.rb +21 -0
- data/lib/jets/autoloaders.rb +38 -101
- data/lib/jets/aws_info.rb +2 -2
- data/lib/jets/aws_services/stack_status.rb +1 -1
- data/lib/jets/aws_services.rb +8 -0
- data/lib/jets/backtrace_cleaner.rb +27 -0
- data/lib/jets/booter.rb +30 -118
- data/lib/jets/builders/code_builder.rb +64 -122
- data/lib/jets/builders/code_size.rb +1 -0
- data/lib/jets/builders/gem_replacer.rb +6 -12
- data/lib/jets/builders/handler_generator.rb +34 -14
- data/lib/jets/builders/lambda_layer.rb +2 -7
- data/lib/jets/builders/purger.rb +1 -1
- data/lib/jets/builders/rack_packager.rb +1 -1
- data/lib/jets/builders/ruby_packager.rb +54 -10
- data/lib/jets/builders/shim_vars/app.rb +10 -6
- data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
- data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
- data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
- data/lib/jets/bundle.rb +2 -9
- data/lib/jets/cfn/base.rb +82 -0
- data/lib/jets/cfn/builder/api/base.rb +12 -0
- data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
- data/lib/jets/cfn/builder/api/gateway.rb +104 -0
- data/lib/jets/cfn/builder/api/mapping.rb +54 -0
- data/lib/jets/cfn/builder/api/methods.rb +72 -0
- data/lib/jets/cfn/builder/api/paged.rb +30 -0
- data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
- data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
- data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
- data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
- data/lib/jets/cfn/builder/api/resources.rb +40 -0
- data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
- data/lib/jets/cfn/builder/controller.rb +28 -0
- data/lib/jets/cfn/builder/function.rb +9 -0
- data/lib/jets/cfn/builder/interface.rb +146 -0
- data/lib/jets/cfn/builder/job.rb +10 -0
- data/lib/jets/cfn/builder/nested.rb +130 -0
- data/lib/jets/cfn/builder/one_controller.rb +53 -0
- data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
- data/lib/jets/cfn/builder/parent.rb +149 -0
- data/lib/jets/cfn/builder/post_process.rb +25 -0
- data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
- data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
- data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
- data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
- data/lib/jets/cfn/deployment.rb +45 -0
- data/lib/jets/cfn/download.rb +39 -0
- data/lib/jets/cfn/params/api/base.rb +39 -0
- data/lib/jets/cfn/params/api/cors.rb +10 -0
- data/lib/jets/cfn/params/api/methods.rb +69 -0
- data/lib/jets/cfn/params/api/resources.rb +28 -0
- data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
- data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
- data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
- data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
- data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
- data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
- data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
- data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
- data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
- data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
- data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
- data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
- data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
- data/lib/jets/cfn/resource/iam/policy.rb +31 -0
- data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
- data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
- data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
- data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
- data/lib/jets/cfn/resource/lambda/function.rb +266 -0
- data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
- data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
- data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
- data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
- data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
- data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
- data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
- data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
- data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
- data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
- data/lib/jets/cfn/resource/nested/base.rb +38 -0
- data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
- data/lib/jets/cfn/resource/one/function.rb +66 -0
- data/lib/jets/cfn/resource/one/permission.rb +17 -0
- data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
- data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
- data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
- data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
- data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
- data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
- data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
- data/lib/jets/cfn/resource.rb +8 -0
- data/lib/jets/cfn/ship.rb +30 -16
- data/lib/jets/cfn/status.rb +1 -1
- data/lib/jets/cfn/template.rb +89 -0
- data/lib/jets/cfn/upload.rb +26 -23
- data/lib/jets/cli.rb +28 -203
- data/lib/jets/command/actions.rb +49 -0
- data/lib/jets/command/api_helpers.rb +41 -0
- data/lib/jets/command/aws_helpers.rb +26 -0
- data/lib/jets/command/base.rb +204 -0
- data/lib/jets/command/behavior.rb +83 -0
- data/lib/jets/command/environment_argument.rb +42 -0
- data/lib/jets/command/help/call.md +48 -0
- data/lib/jets/{commands → command}/help/deploy.md +1 -1
- data/lib/jets/command/help/logs.md +21 -0
- data/lib/jets/{commands → command}/help/new.md +3 -4
- data/lib/jets/command/help/projects.md +6 -0
- data/lib/jets/command/help/releases.md +37 -0
- data/lib/jets/command/help/rollback.md +5 -0
- data/lib/jets/command/help/routes.md +15 -0
- data/lib/jets/command/help/runner.md +40 -0
- data/lib/jets/command/help/stacks.md +6 -0
- data/lib/jets/command/help.rb +17 -0
- data/lib/jets/command/helpers/editor.rb +35 -0
- data/lib/jets/command.rb +133 -0
- data/lib/jets/commands/application/application_command.rb +40 -0
- data/lib/jets/commands/build/build_command.rb +33 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
- data/lib/jets/commands/call/autoload_guesser.rb +2 -2
- data/lib/jets/commands/call/base_guesser.rb +5 -5
- data/lib/jets/commands/call/call_command.rb +27 -0
- data/lib/jets/commands/call/caller.rb +184 -0
- data/lib/jets/commands/call/guesser.rb +1 -1
- data/lib/jets/commands/clean/base.rb +1 -1
- data/lib/jets/commands/clean/build.rb +1 -1
- data/lib/jets/commands/clean/clean_command.rb +15 -0
- data/lib/jets/commands/clean/log.rb +4 -4
- data/lib/jets/commands/configure/configure_command.rb +9 -0
- data/lib/jets/commands/console/console_command.rb +38 -0
- data/lib/jets/commands/credentials/USAGE +103 -0
- data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
- data/lib/jets/commands/credentials/credentials_command.rb +139 -0
- data/lib/jets/commands/db/system/change/change_command.rb +24 -0
- data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
- data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
- data/lib/jets/commands/delete/delete_command.rb +155 -0
- data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +30 -49
- data/lib/jets/commands/dev/dev_command.rb +19 -0
- data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
- data/lib/jets/commands/encrypted/USAGE +46 -0
- data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
- data/lib/jets/commands/gems/gems_command.rb +14 -0
- data/lib/jets/commands/generate/generate_command.rb +95 -0
- data/lib/jets/commands/help/USAGE +20 -0
- data/lib/jets/commands/help/help_command.rb +15 -0
- data/lib/jets/commands/initializers/initializers_command.rb +19 -0
- data/lib/jets/commands/logs/logs_command.rb +45 -0
- data/lib/jets/commands/new/new_command.rb +19 -0
- data/lib/jets/commands/notes/notes_command.rb +30 -0
- data/lib/jets/commands/plugin/plugin_command.rb +45 -0
- data/lib/jets/commands/projects/projects_command.rb +30 -0
- data/lib/jets/commands/rake/rake_command.rb +59 -0
- data/lib/jets/commands/releases/releases_command.rb +72 -0
- data/lib/jets/commands/rollback/rollback_command.rb +41 -0
- data/lib/jets/commands/routes/routes_command.rb +19 -0
- data/lib/jets/commands/runner/runner_command.rb +60 -0
- data/lib/jets/commands/server/server_command.rb +291 -0
- data/lib/jets/commands/stacks/stacks_command.rb +39 -0
- data/lib/jets/commands/status/status_command.rb +9 -0
- data/lib/jets/commands/url/url_command.rb +92 -0
- data/lib/jets/commands/version/version_command.rb +11 -0
- data/lib/jets/commands.rb +17 -0
- data/lib/jets/configuration.rb +166 -0
- data/lib/jets/controller/base.rb +105 -183
- data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
- data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
- data/lib/jets/controller/compat/caching.rb +13 -0
- data/lib/jets/controller/compat/future.rb +13 -0
- data/lib/jets/controller/compat/route_set.rb +47 -0
- data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
- data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
- data/lib/jets/controller/decorate/logging.rb +90 -0
- data/lib/jets/controller/decorate/redirecting.rb +16 -0
- data/lib/jets/controller/decorate/url_for.rb +10 -0
- data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
- data/lib/jets/controller/handler.rb +41 -0
- data/lib/jets/controller/middleware/main.rb +16 -8
- data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
- data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
- data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
- data/lib/jets/controller/rack_adapter/action.rb +35 -0
- data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
- data/lib/jets/controller/request/compat/params.rb +144 -0
- data/lib/jets/controller/request/compat/request.rb +125 -0
- data/lib/jets/controller/request.rb +35 -18
- data/lib/jets/controller/response/compat/response.rb +67 -0
- data/lib/jets/controller/response.rb +91 -8
- data/lib/jets/core.rb +153 -50
- data/lib/jets/core_ext/file.rb +9 -0
- data/lib/jets/core_ext/kernel.rb +2 -2
- data/lib/jets/core_ext/symbol.rb +5 -0
- data/lib/jets/core_ext.rb +4 -0
- data/lib/jets/dev_caching.rb +44 -0
- data/lib/jets/dotenv/ssm.rb +5 -2
- data/lib/jets/dotenv.rb +4 -3
- data/lib/jets/engine/configuration.rb +96 -0
- data/lib/jets/engine/turbines.rb +23 -0
- data/lib/jets/engine.rb +380 -0
- data/lib/jets/erb.rb +1 -1
- data/lib/jets/exception_reporting.rb +43 -0
- data/lib/jets/generators/job/job_generator.rb +41 -0
- data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
- data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
- data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
- data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
- data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
- data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
- data/lib/jets/generators/overrides/app/USAGE +38 -0
- data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
- data/lib/jets/generators/overrides/app/helpers.rb +139 -0
- data/lib/jets/generators/overrides/app/templates/.env +10 -0
- data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
- data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
- data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
- data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
- data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
- data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
- data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
- data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
- data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
- data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
- data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
- data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
- data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
- data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
- data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
- data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
- data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
- data/lib/jets/generators.rb +112 -0
- data/lib/jets/inflections.rb +1 -1
- data/lib/jets/info.rb +116 -0
- data/lib/jets/initializable.rb +95 -0
- data/lib/jets/job/base.rb +5 -2
- data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
- data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
- data/lib/jets/job/dsl/iot_event.rb +6 -6
- data/lib/jets/job/dsl/kinesis_event.rb +5 -5
- data/lib/jets/job/dsl/log_event.rb +2 -2
- data/lib/jets/job/dsl/rule_event.rb +7 -4
- data/lib/jets/job/dsl/s3_event.rb +1 -1
- data/lib/jets/job/dsl/sns_event.rb +6 -6
- data/lib/jets/job/dsl/sqs_event.rb +11 -11
- data/lib/jets/job/helpers/sns_event_helper.rb +8 -0
- data/lib/jets/job/helpers/sqs_event_helper.rb +8 -0
- data/lib/jets/klass.rb +5 -6
- data/lib/jets/lambda/definition.rb +118 -0
- data/lib/jets/lambda/dsl/warnings.rb +57 -0
- data/lib/jets/lambda/dsl.rb +73 -54
- data/lib/jets/lambda/function.rb +3 -3
- data/lib/jets/lambda/function_constructor.rb +6 -6
- data/lib/jets/lambda/functions.rb +36 -1
- data/lib/jets/mega/hash_converter.rb +2 -2
- data/lib/jets/mega/request/source.rb +1 -2
- data/lib/jets/mega/request.rb +4 -4
- data/lib/jets/names.rb +79 -0
- data/lib/jets/overrides/dummy/rails.rb +11 -0
- data/lib/jets/overrides/lambda/marshaller.rb +10 -0
- data/lib/jets/overrides/puma.rb +10 -0
- data/lib/jets/paths.rb +243 -0
- data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
- data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
- data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
- data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
- data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
- data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
- data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
- data/lib/jets/preheat.rb +26 -33
- data/lib/jets/processors/deducer.rb +2 -2
- data/lib/jets/processors/main_processor.rb +6 -13
- data/lib/jets/rack/logger.rb +77 -0
- data/lib/jets/router/compat/route_set.rb +177 -0
- data/lib/jets/router/dsl/mount.rb +40 -6
- data/lib/jets/router/dsl.rb +125 -105
- data/lib/jets/router/engine_mount.rb +36 -0
- data/lib/jets/router/help.rb +130 -0
- data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
- data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
- data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
- data/lib/jets/router/matcher.rb +140 -17
- data/lib/jets/router/resources/options.rb +6 -4
- data/lib/jets/router/route/after_initialize.rb +64 -0
- data/lib/jets/router/route/as.rb +93 -0
- data/lib/jets/router/route/authorizer.rb +1 -0
- data/lib/jets/router/route/compat.rb +45 -0
- data/lib/jets/router/route/info.rb +74 -0
- data/lib/jets/router/route/node.rb +137 -0
- data/lib/jets/router/route/path.rb +93 -0
- data/lib/jets/router/route.rb +109 -90
- data/lib/jets/router/route_set.rb +214 -0
- data/lib/jets/router/scope.rb +204 -69
- data/lib/jets/router/state.rb +67 -0
- data/lib/jets/router/util.rb +1 -31
- data/lib/jets/router.rb +64 -150
- data/lib/jets/ruby_version_check.rb +15 -0
- data/lib/jets/rule/base.rb +1 -0
- data/lib/jets/rule/dsl.rb +7 -7
- data/lib/jets/secrets.rb +110 -0
- data/lib/jets/spec_helpers/controllers/request.rb +22 -16
- data/lib/jets/spec_helpers/controllers.rb +32 -24
- data/lib/jets/spec_helpers.rb +0 -6
- data/lib/jets/stack/builder.rb +3 -2
- data/lib/jets/stack/definition.rb +1 -4
- data/lib/jets/stack/function.rb +2 -2
- data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
- data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
- data/lib/jets/stack/main/dsl/lambda.rb +26 -19
- data/lib/jets/stack/main/dsl/sqs.rb +2 -2
- data/lib/jets/stack/output/lookup.rb +1 -1
- data/lib/jets/stack/output.rb +2 -2
- data/lib/jets/stack/parameter.rb +2 -2
- data/lib/jets/stack/resource.rb +3 -3
- data/lib/jets/stack/s3_event.rb +51 -37
- data/lib/jets/stack.rb +1 -1
- data/lib/jets/tasks/engine.rake +85 -0
- data/lib/jets/tasks/framework.rake +66 -0
- data/lib/jets/tasks/log.rake +41 -0
- data/lib/jets/tasks/middleware.rake +9 -0
- data/lib/jets/tasks/misc.rake +81 -0
- data/lib/jets/tasks/statistics.rake +37 -0
- data/lib/jets/tasks/tmp.rake +51 -0
- data/lib/jets/tasks/yarn.rake +29 -0
- data/lib/jets/tasks/zeitwerk.rake +61 -0
- data/lib/jets/tasks.rb +18 -0
- data/lib/jets/tmp_loader.rb +1 -1
- data/lib/jets/turbine/configurable.rb +36 -0
- data/lib/jets/turbine/configuration.rb +101 -0
- data/lib/jets/turbine.rb +164 -20
- data/lib/jets/util/camelize.rb +24 -0
- data/lib/jets/util/yamler.rb +16 -0
- data/lib/jets/version.rb +1 -1
- data/lib/jets.rb +8 -14
- metadata +444 -347
- data/.python-version +0 -1
- data/.ruby-version +0 -1
- data/bin/release +0 -9
- data/lib/jets/application/defaults.rb +0 -200
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
- data/lib/jets/builders/reconfigure_rails.rb +0 -114
- data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
- data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
- data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
- data/lib/jets/cfn/builders/controller_builder.rb +0 -50
- data/lib/jets/cfn/builders/function_builder.rb +0 -14
- data/lib/jets/cfn/builders/interface.rb +0 -133
- data/lib/jets/cfn/builders/job_builder.rb +0 -14
- data/lib/jets/cfn/builders/parent_builder.rb +0 -130
- data/lib/jets/cfn/built_template.rb +0 -15
- data/lib/jets/cfn/template_source.rb +0 -61
- data/lib/jets/commands/base.rb +0 -145
- data/lib/jets/commands/call.rb +0 -182
- data/lib/jets/commands/clean.rb +0 -19
- data/lib/jets/commands/configure.rb +0 -51
- data/lib/jets/commands/console.rb +0 -12
- data/lib/jets/commands/db/environment-task.rake +0 -3
- data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
- data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
- data/lib/jets/commands/db/tasks.rb +0 -34
- data/lib/jets/commands/db.rb +0 -13
- data/lib/jets/commands/dbconsole.rb +0 -134
- data/lib/jets/commands/delete.rb +0 -136
- data/lib/jets/commands/dynamodb/migrate.rb +0 -9
- data/lib/jets/commands/dynamodb/migrator.rb +0 -36
- data/lib/jets/commands/dynamodb.rb +0 -19
- data/lib/jets/commands/gems.rb +0 -13
- data/lib/jets/commands/help/call.md +0 -69
- data/lib/jets/commands/help/dynamodb/generate.md +0 -52
- data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
- data/lib/jets/commands/help/routes.md +0 -16
- data/lib/jets/commands/help/runner.md +0 -17
- data/lib/jets/commands/help.rb +0 -9
- data/lib/jets/commands/import/base.rb +0 -49
- data/lib/jets/commands/import/cheatsheet.rb +0 -35
- data/lib/jets/commands/import/rack.rb +0 -16
- data/lib/jets/commands/import/rails.rb +0 -74
- data/lib/jets/commands/import/sequence.rb +0 -90
- data/lib/jets/commands/import/templates/config/database.yml +0 -30
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
- data/lib/jets/commands/import.rb +0 -12
- data/lib/jets/commands/main.rb +0 -166
- data/lib/jets/commands/markdown/creator.rb +0 -58
- data/lib/jets/commands/markdown/index.rb +0 -27
- data/lib/jets/commands/markdown/page.rb +0 -125
- data/lib/jets/commands/markdown/shell.rb +0 -11
- data/lib/jets/commands/new.rb +0 -173
- data/lib/jets/commands/rake_command.rb +0 -61
- data/lib/jets/commands/rake_tasks.rb +0 -50
- data/lib/jets/commands/runner.rb +0 -16
- data/lib/jets/commands/sequence.rb +0 -105
- data/lib/jets/commands/stack_info.rb +0 -30
- data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
- data/lib/jets/commands/templates/skeleton/.env.test +0 -3
- data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
- data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
- data/lib/jets/commands/templates/skeleton/Procfile +0 -7
- data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
- data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
- data/lib/jets/commands/upgrade/version1.rb +0 -136
- data/lib/jets/commands/upgrade.rb +0 -105
- data/lib/jets/commands/url.rb +0 -69
- data/lib/jets/commands/webpacker_template.rb +0 -18
- data/lib/jets/controller/callbacks.rb +0 -73
- data/lib/jets/controller/cookies/jar.rb +0 -269
- data/lib/jets/controller/cookies.rb +0 -38
- data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
- data/lib/jets/controller/error.rb +0 -4
- data/lib/jets/controller/forgery_protection.rb +0 -43
- data/lib/jets/controller/layout.rb +0 -17
- data/lib/jets/controller/middleware/cors.rb +0 -60
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
- data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
- data/lib/jets/controller/middleware/reloader.rb +0 -15
- data/lib/jets/controller/parameters_filter.rb +0 -29
- data/lib/jets/controller/params.rb +0 -117
- data/lib/jets/controller/redirection.rb +0 -61
- data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
- data/lib/jets/controller/rendering.rb +0 -96
- data/lib/jets/controller/stage.rb +0 -34
- data/lib/jets/controller.rb +0 -3
- data/lib/jets/db.rb +0 -15
- data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
- data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
- data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
- data/lib/jets/generator.rb +0 -112
- data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
- data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
- data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
- data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
- data/lib/jets/lambda/task.rb +0 -111
- data/lib/jets/logger.rb +0 -21
- data/lib/jets/middleware/configurator.rb +0 -84
- data/lib/jets/middleware/default_stack.rb +0 -53
- data/lib/jets/middleware/layer.rb +0 -34
- data/lib/jets/middleware/stack.rb +0 -77
- data/lib/jets/middleware.rb +0 -33
- data/lib/jets/naming.rb +0 -63
- data/lib/jets/overrides/rails/action_controller.rb +0 -13
- data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
- data/lib/jets/overrides/rails/common_methods.rb +0 -13
- data/lib/jets/overrides/rails/migration_checker.rb +0 -34
- data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
- data/lib/jets/overrides/rails/url_helper.rb +0 -88
- data/lib/jets/overrides/rails.rb +0 -6
- data/lib/jets/rack_server.rb +0 -86
- data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
- data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
- data/lib/jets/resource/api_gateway/cors.rb +0 -61
- data/lib/jets/resource/api_gateway/method.rb +0 -102
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
- data/lib/jets/resource/base.rb +0 -28
- data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
- data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
- data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
- data/lib/jets/resource/child_stack/api_resource.rb +0 -54
- data/lib/jets/resource/child_stack/base.rb +0 -24
- data/lib/jets/resource/iam/base_role_definition.rb +0 -47
- data/lib/jets/resource/lambda/function.rb +0 -221
- data/lib/jets/resource/logs/subscription_filter.rb +0 -31
- data/lib/jets/resource/permission.rb +0 -45
- data/lib/jets/resource.rb +0 -71
- data/lib/jets/router/error.rb +0 -4
- data/lib/jets/router/finder.rb +0 -47
- data/lib/jets/router/helpers/core_helper.rb +0 -27
- data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
- data/lib/jets/router/helpers.rb +0 -4
- data/lib/jets/router/method_creator/code.rb +0 -99
- data/lib/jets/router/method_creator/edit.rb +0 -12
- data/lib/jets/router/method_creator/generic.rb +0 -11
- data/lib/jets/router/method_creator/index.rb +0 -48
- data/lib/jets/router/method_creator/new.rb +0 -12
- data/lib/jets/router/method_creator/root.rb +0 -15
- data/lib/jets/router/method_creator/show.rb +0 -12
- data/lib/jets/router/method_creator.rb +0 -50
- data/lib/jets/turbo/database_yaml.rb +0 -41
- data/lib/jets/turbo/project/.gitignore +0 -12
- data/lib/jets/turbo/project/.jetskeep +0 -1
- data/lib/jets/turbo/project/Gemfile +0 -16
- data/lib/jets/turbo/project/Rakefile +0 -2
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
- data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
- data/lib/jets/turbo/project/config/application.rb +0 -5
- data/lib/jets/turbo/project/config/routes.rb +0 -4
- data/lib/jets/turbo/project/config.ru +0 -5
- data/lib/jets/turbo/rails.rb +0 -127
- data/lib/jets/turbo/templates/config/database.yml +0 -30
- data/lib/jets/turbo.rb +0 -56
- data/readme/prerelease.md +0 -6
- data/readme/testing.md +0 -60
- /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
- /data/lib/jets/{commands → command}/help/build.md +0 -0
- /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
- /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
- /data/lib/jets/{commands → command}/help/console.md +0 -0
- /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
- /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
- /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
- /data/lib/jets/{commands → command}/help/delete.md +0 -0
- /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
- /data/lib/jets/{commands → command}/help/generate.md +0 -0
- /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
- /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
- /data/lib/jets/{commands → command}/help/server.md +0 -0
- /data/lib/jets/{commands → command}/help/status.md +0 -0
- /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
- /data/lib/jets/{commands → command}/help/url.md +0 -0
- /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
- /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
- /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 54e94ceb6d67976943a212a5ccceb71bb3e7bd6c6928775c0e7b824be127e42d
|
|
4
|
+
data.tar.gz: cab6dba2a8108c047daec4706e15d226e0e7f4eb46e9b6f2617465ea186b451e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c050d7738b47e826403bc383baa0b2db251246b3d3dc359135e8e1039f8404448021477b38fbfab57f2be1cd09f7ffe8aa925cff70e313a96e61735f46f4fee2
|
|
7
|
+
data.tar.gz: 152c89e1b3e9d124f63687181f48c13ef09e3140062665a6b11baf9a99e830869cd7c8df46a2e1e8e59c58bc08bbb76d6430d235fd296ed176bcf0628890531a
|
data/.github/FUNDING.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: boltops-tools
|
data/.gitignore
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
_yardoc
|
|
8
8
|
coverage
|
|
9
9
|
doc/
|
|
10
|
+
docs/
|
|
10
11
|
InstalledFiles
|
|
11
12
|
lib/bundler/man
|
|
12
13
|
pkg
|
|
@@ -15,10 +16,13 @@ spec/reports
|
|
|
15
16
|
test/tmp
|
|
16
17
|
test/version_tmp
|
|
17
18
|
tmp
|
|
19
|
+
node_modules
|
|
18
20
|
|
|
19
21
|
.codebuild/definitions
|
|
20
22
|
/html
|
|
21
23
|
/demo
|
|
22
24
|
Gemfile.lock
|
|
23
|
-
spec/fixtures/
|
|
25
|
+
spec/fixtures/demo/dynamodb/migrate
|
|
26
|
+
spec/fixtures/demo/public/assets
|
|
24
27
|
spec/fixtures/project/handlers
|
|
28
|
+
yarn.lock
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,147 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
|
5
5
|
|
|
6
|
+
## [5.0.0] - 2023-12-05
|
|
7
|
+
Single Lambda Function for Controllers
|
|
8
|
+
* For controllers, a single Lambda function is deployed going forward.
|
|
9
|
+
* APIGW serves as proxy endpoint for requests to the single Lambda function. Techniquely, there are 2 APIGW endpoints.
|
|
10
|
+
* Jobs and other classes still create a discrete lambda function per Ruby method.
|
|
11
|
+
|
|
12
|
+
Jets Engines support
|
|
13
|
+
* Jets Engines closely resemble Rails engines.
|
|
14
|
+
* Use as many Rails middlewares as possible
|
|
15
|
+
|
|
16
|
+
Jets Controllers are "ActionController and ActionView compatible."
|
|
17
|
+
* View Scope has first-class citizens access to Jets Controller instances.
|
|
18
|
+
* Breaking Change: `resources :posts` and `delete` route method routes to controller `destroy` method like rails instead of `delete` method.
|
|
19
|
+
|
|
20
|
+
Jets Controllers now support:
|
|
21
|
+
* around filters
|
|
22
|
+
* cache control and etag caching support
|
|
23
|
+
* content security policy
|
|
24
|
+
* cookies support via actionpack
|
|
25
|
+
* flash support
|
|
26
|
+
* forgery protection improvements
|
|
27
|
+
* importmap support
|
|
28
|
+
* i18n support
|
|
29
|
+
|
|
30
|
+
New Jets CLI structure that
|
|
31
|
+
* Close to Rails CLI structure
|
|
32
|
+
|
|
33
|
+
Jets Pro support
|
|
34
|
+
* deploys, release history, rollback support
|
|
35
|
+
* use jets-api gem
|
|
36
|
+
|
|
37
|
+
Refactor CloudFormation Builders
|
|
38
|
+
* Use CamelCase properties internally
|
|
39
|
+
* Short name template filenames and class names without the _builder.
|
|
40
|
+
* Fully qualify LambdaFunction logical id.
|
|
41
|
+
|
|
42
|
+
Misc
|
|
43
|
+
* Remove afterburner turbo and mega mode to prepare for container-based Rails support.
|
|
44
|
+
* Autoloaders refactor. gem (Jets internal), main (user app), once (user app)
|
|
45
|
+
* CORS via with middleware only.
|
|
46
|
+
* Improve ActionMailer integration. Improve preview support.
|
|
47
|
+
* logger active support logger and tagged logging support
|
|
48
|
+
* dynamodb event conventional table namespace
|
|
49
|
+
* enable iot rule by default bug fix
|
|
50
|
+
* create named route methods for all CRUD actions
|
|
51
|
+
* Jets.cache support
|
|
52
|
+
|
|
53
|
+
Breaking changes:
|
|
54
|
+
* Pass request.headers straight without downcase. IE: `X-Amzn-Trace-Id`. Introduce request.downcase_headers instead.
|
|
55
|
+
* Jets.config.prewarm.concurrency option removed.
|
|
56
|
+
* dynomite decoupling and integration improvements
|
|
57
|
+
|
|
58
|
+
## [4.0.10] - 2023-12-04
|
|
59
|
+
- [#678](https://github.com/boltops-tools/jets/pull/678) handle option method or http_method from route state
|
|
60
|
+
|
|
61
|
+
## [4.0.9] - 2023-12-03
|
|
62
|
+
- [#674](https://github.com/boltops-tools/jets/pull/674) Fix broken --mode jobs new project generation
|
|
63
|
+
- [#675](https://github.com/boltops-tools/jets/pull/675) Add resource tags to CloudFormation stack
|
|
64
|
+
|
|
65
|
+
## [4.0.8] - 2023-12-03
|
|
66
|
+
- [#677](https://github.com/boltops-tools/jets/pull/677) pin dynomite 1.2.7
|
|
67
|
+
|
|
68
|
+
## [4.0.7] - 2023-10-20
|
|
69
|
+
- [#671](https://github.com/boltops-tools/jets/pull/671) fix preheat warm job iam role reference
|
|
70
|
+
|
|
71
|
+
## [4.0.6] - 2023-10-20
|
|
72
|
+
- [#670](https://github.com/boltops-tools/jets/pull/670) Fixes IAM role permissions for PreheatJob
|
|
73
|
+
|
|
74
|
+
## [4.0.5] - 2023-10-19
|
|
75
|
+
- [#665](https://github.com/boltops-tools/jets/pull/665) only add add_stage_name when request is present
|
|
76
|
+
- [#669](https://github.com/boltops-tools/jets/pull/669) Add optional command args to the jets runner command.
|
|
77
|
+
|
|
78
|
+
## [4.0.4] - 2023-09-07
|
|
79
|
+
- [#662](https://github.com/boltops-tools/jets/pull/662) fix vpc iam permissions
|
|
80
|
+
|
|
81
|
+
## [4.0.3] - 2023-08-03
|
|
82
|
+
- [#657](https://github.com/boltops-tools/jets/pull/657) [Fix] ApiGateway for local Middleware: fix query_string_parameters
|
|
83
|
+
Breaking Changes:
|
|
84
|
+
|
|
85
|
+
## [4.0.2] - 2023-08-03
|
|
86
|
+
- [#660](https://github.com/boltops-tools/jets/pull/660) Fix prewarming
|
|
87
|
+
|
|
88
|
+
## [4.0.1] - 2023-06-06
|
|
89
|
+
- [#655](https://github.com/boltops-tools/jets/pull/655) fix cors when using authorizers
|
|
90
|
+
- [#656](https://github.com/boltops-tools/jets/pull/656) fix prewarming iam permission
|
|
91
|
+
|
|
92
|
+
## [4.0.0] - 2023-05-27
|
|
93
|
+
- [#641](https://github.com/boltops-tools/jets/pull/641) bundle check and prevent error from getting to aws lambda
|
|
94
|
+
- [#642](https://github.com/boltops-tools/jets/pull/642) Fix rack mounted apps: update interface with removed meth
|
|
95
|
+
- [#643](https://github.com/boltops-tools/jets/pull/643) JETS_EXTRA support, deprecate JETS_ENV_EXTRA
|
|
96
|
+
- [#644](https://github.com/boltops-tools/jets/pull/644) remove docs to separate repo
|
|
97
|
+
- [#645](https://github.com/boltops-tools/jets/pull/645) PreheatJob: fix function lookups and iam function permission
|
|
98
|
+
- [#646](https://github.com/boltops-tools/jets/pull/646) log debug uploading and setting content type
|
|
99
|
+
- [#647](https://github.com/boltops-tools/jets/pull/647) fix Jets.logger call
|
|
100
|
+
- [#648](https://github.com/boltops-tools/jets/pull/648) make sure logger level info is default
|
|
101
|
+
- [#649](https://github.com/boltops-tools/jets/pull/649) Custom Domain: Hard fail on IAM permission error
|
|
102
|
+
- [#650](https://github.com/boltops-tools/jets/pull/650) Validate lambda function names
|
|
103
|
+
- [#651](https://github.com/boltops-tools/jets/pull/651) allow custom rake tasks with params to work with jets as well as rake command
|
|
104
|
+
- [#652](https://github.com/boltops-tools/jets/pull/652) Validate lambda function names: fix regexp
|
|
105
|
+
- [#653](https://github.com/boltops-tools/jets/pull/653) refactor cleanup: rename Jets::Naming to Jets::Names
|
|
106
|
+
- [#654](https://github.com/boltops-tools/jets/pull/654) Ruby 3.2 Support
|
|
107
|
+
- apigw routes state save: fix to_json infinite loop from Grape apps
|
|
108
|
+
- delete .python-version: more general approach. fixes specs when specific version of python is not installed
|
|
109
|
+
|
|
110
|
+
## [3.2.2] - 2023-05-19
|
|
111
|
+
- [#640](https://github.com/boltops-tools/jets/pull/640) Base path mapping CloudFormation custom resource and lambda function hardening
|
|
112
|
+
|
|
113
|
+
## [3.2.1] - 2023-05-03
|
|
114
|
+
- [#637](https://github.com/boltops-tools/jets/pull/637) Readme: Replace "splat out" with "had" a baby
|
|
115
|
+
- [#638](https://github.com/boltops-tools/jets/pull/638) feature: update an array of reserved variables in aws lambda
|
|
116
|
+
- [#639](https://github.com/boltops-tools/jets/pull/639) fix assets upload during deploy
|
|
117
|
+
|
|
118
|
+
## [3.2.0] - 2022-12-03
|
|
119
|
+
- [#631](https://github.com/boltops-tools/jets/pull/631) Implement vpc_endpoint_ids configuration
|
|
120
|
+
- [#634](https://github.com/boltops-tools/jets/pull/634) Custom domain messaging
|
|
121
|
+
- [#635](https://github.com/boltops-tools/jets/pull/635) smarter apigw routes paging calculation
|
|
122
|
+
- Introduce the storage of APIGW routes state in the jets managed s3 bucket under path jets/state/apigw/pages.json and jets/state/apigw/routes.json
|
|
123
|
+
- This speeds up deployment for apps with a large number of routes. Depending on the internet connection this can be minutes faster.
|
|
124
|
+
- Update internationalization.md
|
|
125
|
+
- fix domain.name check when APIGW changes
|
|
126
|
+
- improve change apigw endpoint change messaging
|
|
127
|
+
|
|
128
|
+
## [3.1.5] - 2022-08-08
|
|
129
|
+
- [#628](https://github.com/boltops-tools/jets/pull/628) Multiple Databases
|
|
130
|
+
- [#629](https://github.com/boltops-tools/jets/pull/629) loosen zeitwerk dependency in generated project Gemfile
|
|
131
|
+
- [#630](https://github.com/boltops-tools/jets/pull/630) compile assets with WEBPACKER_ASSET_HOST as s3 endpoint url
|
|
132
|
+
|
|
133
|
+
## [3.1.4] - 2022-07-02
|
|
134
|
+
- [#627](https://github.com/boltops-tools/jets/pull/627) use >= for most gem dependencies
|
|
135
|
+
|
|
136
|
+
## [3.1.3] - 2022-06-29
|
|
137
|
+
- [#626](https://github.com/boltops-tools/jets/pull/626) aws options to better handle rate limit for base path mapping
|
|
138
|
+
|
|
139
|
+
## [3.1.2] - 2022-04-24
|
|
140
|
+
- [#618](https://github.com/boltops-tools/jets/pull/618) Jets Console accepts environment cli argument
|
|
141
|
+
- [#621](https://github.com/boltops-tools/jets/pull/621) Add SQS and SNS event helpers for jobs
|
|
142
|
+
- [#624](https://github.com/boltops-tools/jets/pull/624) Add lambda.function.ephemeral_storage function property support
|
|
143
|
+
|
|
144
|
+
## [3.1.1] - 2022-01-18
|
|
145
|
+
- [#615](https://github.com/boltops-tools/jets/pull/615) adjust required_ruby_version
|
|
146
|
+
|
|
6
147
|
## [3.1.0] - 2022-01-08
|
|
7
148
|
- [#614](https://github.com/boltops-tools/jets/pull/614) support zeitwerk 2.5
|
|
8
149
|
- clean command alias -y for --yes option
|
data/Gemfile
CHANGED
|
@@ -4,11 +4,7 @@ source "https://rubygems.org"
|
|
|
4
4
|
gemspec
|
|
5
5
|
|
|
6
6
|
# required here for specs
|
|
7
|
-
# TODO: Only require webpacker in Gemfile of project if possible.
|
|
8
|
-
# Need both because of jets/application.rb and jets/webpacker/middleware_setup.rb
|
|
9
7
|
group :development, :test do
|
|
10
8
|
gem "mysql2", "~> 0.5.2"
|
|
11
|
-
gem "dynomite"
|
|
12
|
-
gem "jetpacker"
|
|
13
|
-
gem "rspec_junit_formatter"
|
|
9
|
+
gem "dynomite", "~> 2.0.0"
|
|
14
10
|
end
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
<a href="http://rubyonjets.com"><img src="http://rubyonjets.com/img/logos/jets-logo-full.png" /></a>
|
|
3
3
|
</div>
|
|
4
4
|
|
|
5
|
-
Ruby and Lambda
|
|
5
|
+
Ruby and Lambda had a baby and that child's name is [Jets](http://rubyonjets.com/).
|
|
6
6
|
|
|
7
7
|

|
|
8
|
-
[](https://circleci.com/gh/boltops-tools/jets)
|
|
9
8
|
[](https://badge.fury.io/rb/jets)
|
|
10
9
|
[](http://rubyonjets.com/support/)
|
|
11
|
-
[](https://gitter.im/boltops-tools/jets)
|
|
12
10
|
|
|
13
11
|
[](https://www.boltops.com)
|
|
14
12
|
|
|
@@ -16,18 +14,15 @@ Please **watch/star** this repo to help grow and support the project.
|
|
|
16
14
|
|
|
17
15
|
**Upgrading**: If you are upgrading Jets, please check on the [Upgrading Notes](http://rubyonjets.com/docs/extras/upgrading/).
|
|
18
16
|
|
|
19
|
-
## Sponsors
|
|
20
|
-
|
|
21
|
-
[](https://arist.co/)
|
|
22
|
-
|
|
23
17
|
## What is Ruby on Jets?
|
|
24
18
|
|
|
25
|
-
Jets is a Ruby Serverless Framework.
|
|
19
|
+
Jets is a Ruby Serverless Framework. Jets allows you to create serverless applications with a beautiful language: Ruby. It includes everything required to build and deploy an application to AWS Lambda.
|
|
26
20
|
|
|
27
|
-
|
|
21
|
+
Understanding AWS Lambda and API Gateway is key to understanding Jets conceptually. Jets map your code to Lambda functions and other AWS Resources like API Gateway and Event Rules.
|
|
28
22
|
|
|
29
|
-
* **AWS Lambda** is
|
|
23
|
+
* **AWS Lambda** is functions as a service. It allows you to upload and run functions without worrying about the underlying infrastructure.
|
|
30
24
|
* **API Gateway** is the routing layer for Lambda. It is used to route REST URL endpoints to Lambda functions.
|
|
25
|
+
* **EventBridge Rules** are events as a service. You can automatically run Lambda functions triggered from AWS services. You decide what events to catch and how to react to them.
|
|
31
26
|
|
|
32
27
|
The official documentation is at [Ruby on Jets](http://rubyonjets.com).
|
|
33
28
|
|
|
@@ -48,14 +43,14 @@ end
|
|
|
48
43
|
|
|
49
44
|
Here's the function in the Lambda console:
|
|
50
45
|
|
|
51
|
-

|
|
52
47
|
|
|
53
48
|
|
|
54
|
-
Though simple functions are supported by Jets, they do not add much value as other ways to write Ruby code with Jets. Classes like [Controllers](http://rubyonjets.com/docs/controllers/) and [Jobs](http://rubyonjets.com/docs/jobs/) add many conveniences and are more powerful to use. We’ll cover them next.
|
|
49
|
+
Though simple functions are supported by Jets, they do not add as much value as other ways to write Ruby code with Jets. Classes like [Controllers](http://rubyonjets.com/docs/controllers/) and [Jobs](http://rubyonjets.com/docs/jobs/) add many conveniences and are more powerful to use. We’ll cover them next.
|
|
55
50
|
|
|
56
51
|
### Jets Controllers
|
|
57
52
|
|
|
58
|
-
A Jets controller handles a web request and renders a response.
|
|
53
|
+
A Jets controller handles a web request and renders a response. Here's an example:
|
|
59
54
|
|
|
60
55
|
app/controllers/posts_controller.rb:
|
|
61
56
|
|
|
@@ -75,11 +70,9 @@ class PostsController < ApplicationController
|
|
|
75
70
|
end
|
|
76
71
|
```
|
|
77
72
|
|
|
78
|
-
Helper methods like `params` provide the parameters from the API Gateway event. The `render` method
|
|
79
|
-
|
|
80
|
-
Jets creates Lambda functions for each public method in your controller. Here they are in the Lambda console:
|
|
73
|
+
Helper methods like `params` provide the parameters from the API Gateway event. The `render` method returns a Lambda Proxy structure that API Gateway understands.
|
|
81
74
|
|
|
82
|
-
|
|
75
|
+
Jets creates single Lambda functions to handle your Jets Controller requests. The Lambda Function handler is a shim that routes to your controller action.
|
|
83
76
|
|
|
84
77
|
### Jets Routing
|
|
85
78
|
|
|
@@ -89,23 +82,14 @@ config/routes.rb:
|
|
|
89
82
|
|
|
90
83
|
```ruby
|
|
91
84
|
Jets.application.routes.draw do
|
|
92
|
-
|
|
93
|
-
get "posts/new", to: "posts#new"
|
|
94
|
-
get "posts/:id", to: "posts#show"
|
|
95
|
-
post "posts", to: "posts#create"
|
|
96
|
-
get "posts/:id/edit", to: "posts#edit"
|
|
97
|
-
put "posts", to: "posts#update"
|
|
98
|
-
delete "posts", to: "posts#delete"
|
|
99
|
-
|
|
100
|
-
resources :comments # expands to the RESTful routes above
|
|
101
|
-
|
|
85
|
+
resources :posts
|
|
102
86
|
any "posts/hot", to: "posts#hot" # GET, POST, PUT, etc request all work
|
|
103
87
|
end
|
|
104
88
|
```
|
|
105
89
|
|
|
106
90
|
The `routes.rb` gets translated to API Gateway resources:
|
|
107
91
|
|
|
108
|
-

|
|
109
93
|
|
|
110
94
|
Test your API Gateway endpoints with curl or postman. Note, replace the URL endpoint with the one that is created:
|
|
111
95
|
|
|
@@ -117,7 +101,7 @@ Test your API Gateway endpoints with curl or postman. Note, replace the URL endp
|
|
|
117
101
|
|
|
118
102
|
### Jets Jobs
|
|
119
103
|
|
|
120
|
-
A Jets job handles asynchronous background jobs
|
|
104
|
+
A Jets job handles asynchronous background jobs outside the web request/response cycle. Here's an example:
|
|
121
105
|
|
|
122
106
|
app/jobs/hard_job.rb:
|
|
123
107
|
|
|
@@ -135,9 +119,13 @@ class HardJob < ApplicationJob
|
|
|
135
119
|
end
|
|
136
120
|
```
|
|
137
121
|
|
|
138
|
-
|
|
122
|
+

|
|
123
|
+
|
|
124
|
+
`HardJob#dig` runs every 10 hours, and `HardJob#lift` runs every 12 hours. The `rate` and `cron` methods created CloudWatch Event Rules. Example:
|
|
139
125
|
|
|
140
|
-

|
|
127
|
+
|
|
128
|
+
This simple example uses Scheduled Events. There are many more possibilities, see the [Events Docs](https://docs.rubyonjets.com/docs/events/).
|
|
141
129
|
|
|
142
130
|
### Jets Deployment
|
|
143
131
|
|
|
@@ -147,29 +135,19 @@ You can test your application with a local server that mimics API Gateway: [Jets
|
|
|
147
135
|
|
|
148
136
|
After deployment, you can test the Lambda functions with the AWS Lambda console or the CLI.
|
|
149
137
|
|
|
150
|
-
### AWS Lambda Console
|
|
151
|
-
|
|
152
|
-

|
|
153
|
-
|
|
154
138
|
### Live Demos
|
|
155
139
|
|
|
156
140
|
Here are some demos of Jets applications:
|
|
157
141
|
|
|
158
142
|
* [Quintessential CRUD Jets app](https://demo.rubyonjets.com/)
|
|
159
143
|
* [API Demo](https://api.demo.rubyonjets.com/)
|
|
160
|
-
* [Jets Afterburner: Easy Rails Support](https://afterburner.demo.rubyonjets.com/)
|
|
161
|
-
* [Mega Mode: Jets and Rails Combined](https://mega.demo.rubyonjets.com/)
|
|
162
144
|
* [Image Upload with CarrierWave](https://upload.demo.rubyonjets.com/)
|
|
163
145
|
|
|
164
|
-
Please feel free to add your
|
|
165
|
-
|
|
166
|
-
### Rails Support
|
|
167
|
-
|
|
168
|
-
[Jets Afterburner Mode](http://rubyonjets.com/docs/rails-support/) provides Rails support with little effort. This allows you to run a Rails application on AWS Lambda. Also here's a Tutorial Blog Post: [Jets Afterburner: Rails Support](https://blog.boltops.com/2018/12/21/jets-afterburner-serverless-rails-on-aws-lambda-in-5-minutes).
|
|
146
|
+
Please feel free to add your examples to the [rubyonjets/examples](https://github.com/rubyonjets/examples) repo.
|
|
169
147
|
|
|
170
148
|
### More Info
|
|
171
149
|
|
|
172
|
-
For more documentation, check out the official docs: [Ruby on Jets](http://rubyonjets.com/).
|
|
150
|
+
For more documentation, check out the official docs: [Ruby on Jets](http://rubyonjets.com/). Here's a list of useful links:
|
|
173
151
|
|
|
174
152
|
* [Quick Start](http://rubyonjets.com/quick-start/)
|
|
175
153
|
* [Local Jets Server](http://rubyonjets.com/docs/local-server/)
|
data/Rakefile
CHANGED
|
@@ -8,10 +8,11 @@ task :default => :spec
|
|
|
8
8
|
RSpec::Core::RakeTask.new
|
|
9
9
|
|
|
10
10
|
require_relative "lib/jets"
|
|
11
|
+
|
|
11
12
|
desc "Generates cli reference docs as markdown"
|
|
12
13
|
task :docs do
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
require "cli_markdown_jets"
|
|
15
|
+
CliMarkdown::Creator.new.create_all
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
# Thanks: https://docs.ruby-lang.org/en/2.1.0/RDoc/Task.html
|
|
@@ -21,4 +22,3 @@ require 'jets/rdoc'
|
|
|
21
22
|
RDoc::Task.new do |rdoc|
|
|
22
23
|
rdoc.options += Jets::Rdoc.options
|
|
23
24
|
end
|
|
24
|
-
|
data/backers.md
CHANGED
|
@@ -11,10 +11,5 @@ Funds donated via Patreon go directly to support Tung Nguyen's full-time work on
|
|
|
11
11
|
<h2 align="center">Backers via Patreon</h2>
|
|
12
12
|
|
|
13
13
|
<!--10 start-->
|
|
14
|
-
- Erlend Finvåg
|
|
15
|
-
- Nate Clark
|
|
16
|
-
- Hirokatsu Endo
|
|
17
|
-
- Michael Choi
|
|
18
|
-
- Phan Lam
|
|
19
14
|
- Theron Welch
|
|
20
15
|
<!--10 end-->
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Jets::ApplicationController < Jets::Controller::Base # :nodoc:
|
|
4
|
+
prepend_view_path File.expand_path("../../../app/views", __dir__)
|
|
5
|
+
layout "application"
|
|
6
|
+
|
|
7
|
+
before_action :disable_content_security_policy_nonce!
|
|
8
|
+
|
|
9
|
+
content_security_policy do |policy|
|
|
10
|
+
policy.script_src :self, :unsafe_inline
|
|
11
|
+
policy.style_src :self, :unsafe_inline
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
def require_local!
|
|
16
|
+
unless local_request?
|
|
17
|
+
render html: "<p>For security purposes, this information is only available to local requests.</p>".html_safe, status: :forbidden
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def local_request?
|
|
22
|
+
Jets.application.config.consider_all_requests_local || request.local?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def disable_content_security_policy_nonce!
|
|
26
|
+
request.content_security_policy_nonce_generator = nil
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
# Built-in Health Check Endpoint
|
|
5
|
+
#
|
|
6
|
+
# \Jets also comes with a built-in health check endpoint that is reachable at
|
|
7
|
+
# the +/up+ path. This endpoint will return a 200 status code if the app has
|
|
8
|
+
# booted with no exceptions, and a 500 status code otherwise.
|
|
9
|
+
#
|
|
10
|
+
# In production, many applications are required to report their status upstream,
|
|
11
|
+
# whether it's to an uptime monitor that will page an engineer when things go
|
|
12
|
+
# wrong, or a load balancer or Kubernetes controller used to determine a pod's
|
|
13
|
+
# health. This health check is designed to be a one-size fits all that will work
|
|
14
|
+
# in many situations.
|
|
15
|
+
#
|
|
16
|
+
# While any newly generated \Jets applications will have the health check at
|
|
17
|
+
# +/up+, you can configure the path to be anything you'd like in your
|
|
18
|
+
# <tt>"config/routes.rb"</tt>:
|
|
19
|
+
#
|
|
20
|
+
# Jets.application.routes.draw do
|
|
21
|
+
# get "healthz" => "jets/health#show", as: :jets_health_check
|
|
22
|
+
# end
|
|
23
|
+
#
|
|
24
|
+
# The health check will now be accessible via the +/healthz+ path.
|
|
25
|
+
#
|
|
26
|
+
# NOTE: This endpoint does not reflect the status of all of your application's
|
|
27
|
+
# dependencies, such as the database or redis cluster. Replace
|
|
28
|
+
# <tt>"jets/health#show"</tt> with your own controller action if you have
|
|
29
|
+
# application specific needs.
|
|
30
|
+
#
|
|
31
|
+
# Think carefully about what you want to check as it can lead to situations
|
|
32
|
+
# where your application is being restarted due to a third-party service going
|
|
33
|
+
# bad. Ideally, you should design your application to handle those outages
|
|
34
|
+
# gracefully.
|
|
35
|
+
class HealthController < Jets::Controller::Base
|
|
36
|
+
rescue_from(Exception) { render_down }
|
|
37
|
+
|
|
38
|
+
def show
|
|
39
|
+
render_up
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
def render_up
|
|
44
|
+
render html: html_status(color: "green")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def render_down
|
|
48
|
+
render html: html_status(color: "red"), status: 500
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def html_status(color:)
|
|
52
|
+
%(<!DOCTYPE html><html><body style="background-color: #{color}"></body></html>).html_safe
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Jets::InfoController < Jets::ApplicationController # :nodoc:
|
|
4
|
+
prepend_view_path ActionDispatch::DebugView::RESCUES_TEMPLATE_PATH
|
|
5
|
+
layout -> { request.xhr? ? false : "application" }
|
|
6
|
+
|
|
7
|
+
before_action :require_local!
|
|
8
|
+
|
|
9
|
+
def index
|
|
10
|
+
redirect_to action: :routes
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def properties
|
|
14
|
+
@info = Jets::Info.to_html
|
|
15
|
+
@page_title = "Properties"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def routes
|
|
19
|
+
if path = params[:path]
|
|
20
|
+
path = URI::DEFAULT_PARSER.escape path
|
|
21
|
+
normalized_path = with_leading_slash path
|
|
22
|
+
render json: {
|
|
23
|
+
exact: match_route { |it| it.match normalized_path },
|
|
24
|
+
fuzzy: match_route { |it| it.spec.to_s.match path }
|
|
25
|
+
}
|
|
26
|
+
else
|
|
27
|
+
@routes_table = routes_table
|
|
28
|
+
@page_title = "Routes"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
def routes_table
|
|
34
|
+
text = Jets::Router::Help.new(format: "markdown").text
|
|
35
|
+
Kramdown::Document.new(text).to_html
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def match_route
|
|
39
|
+
_routes.routes.filter_map { |route| route.path.spec.to_s if yield route.path }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def with_leading_slash(path)
|
|
43
|
+
("/" + path).squeeze("/")
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
class Jets::MailersController < Jets::Controller::Base # :nodoc:
|
|
4
|
+
around_action :set_locale, only: :preview
|
|
4
5
|
before_action :find_preview, only: [:preview]
|
|
5
|
-
before_action :
|
|
6
|
-
# TODO: allow multiple actions
|
|
7
|
-
# before_action :find_preview, :set_locale, only: :preview
|
|
6
|
+
before_action :require_local!, unless: :show_previews?
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
# helper_method :part_query, :locale_query
|
|
8
|
+
helper_method :part_query, :locale_query
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
# content_security_policy(false)
|
|
10
|
+
content_security_policy(false)
|
|
14
11
|
|
|
15
12
|
def index
|
|
16
13
|
@previews = ActionMailer::Preview.all
|
|
@@ -20,25 +17,26 @@ class Jets::MailersController < Jets::Controller::Base # :nodoc:
|
|
|
20
17
|
def preview
|
|
21
18
|
if params[:path] == @preview.preview_name
|
|
22
19
|
@page_title = "Mailer Previews for #{@preview.preview_name}"
|
|
23
|
-
render :mailer
|
|
20
|
+
render action: "mailer"
|
|
24
21
|
else
|
|
25
22
|
@email_action = File.basename(params[:path])
|
|
26
23
|
|
|
27
24
|
if @preview.email_exists?(@email_action)
|
|
25
|
+
@page_title = "Mailer Preview for #{@preview.preview_name}##{@email_action}"
|
|
28
26
|
@email = @preview.call(@email_action, params)
|
|
29
27
|
|
|
30
28
|
if params[:part]
|
|
31
29
|
part_type = Mime::Type.lookup(params[:part])
|
|
32
30
|
|
|
33
31
|
if part = find_part(part_type)
|
|
34
|
-
response.
|
|
32
|
+
response.content_type = part_type
|
|
35
33
|
render plain: part.respond_to?(:decoded) ? part.decoded : part
|
|
36
34
|
else
|
|
37
35
|
raise AbstractController::ActionNotFound, "Email part '#{part_type}' not found in #{@preview.name}##{@email_action}"
|
|
38
36
|
end
|
|
39
37
|
else
|
|
40
|
-
@part = find_preferred_part(Mime[:html], Mime[:text])
|
|
41
|
-
render :email, layout: false, formats:
|
|
38
|
+
@part = find_preferred_part(request.format, Mime[:html], Mime[:text])
|
|
39
|
+
render action: "email", layout: false, formats: [:html]
|
|
42
40
|
end
|
|
43
41
|
else
|
|
44
42
|
raise AbstractController::ActionNotFound, "Email '#{@email_action}' not found in #{@preview.name}"
|
|
@@ -53,7 +51,7 @@ class Jets::MailersController < Jets::Controller::Base # :nodoc:
|
|
|
53
51
|
|
|
54
52
|
def find_preview # :doc:
|
|
55
53
|
candidates = []
|
|
56
|
-
params[:path].to_s.scan(%r{/|$}) { candidates << $` }
|
|
54
|
+
params[:path].to_s.scan(%r{/|$}) { candidates << $` }
|
|
57
55
|
preview = candidates.detect { |candidate| ActionMailer::Preview.exists?(candidate) }
|
|
58
56
|
|
|
59
57
|
if preview
|
|
@@ -91,7 +89,7 @@ class Jets::MailersController < Jets::Controller::Base # :nodoc:
|
|
|
91
89
|
request.query_parameters.merge(locale: locale).to_query
|
|
92
90
|
end
|
|
93
91
|
|
|
94
|
-
def set_locale
|
|
95
|
-
I18n.
|
|
92
|
+
def set_locale(&block)
|
|
93
|
+
I18n.with_locale(params[:locale] || I18n.default_locale, &block)
|
|
96
94
|
end
|
|
97
95
|
end
|
|
@@ -15,11 +15,8 @@ class Jets::MountController < Jets::BareController
|
|
|
15
15
|
|
|
16
16
|
status, headers, io = mount_class.call(env)
|
|
17
17
|
body = read_body(io)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
headers: headers,
|
|
21
|
-
body: body,
|
|
22
|
-
)
|
|
18
|
+
self.headers.merge!(headers)
|
|
19
|
+
render body: body, status: status
|
|
23
20
|
end
|
|
24
21
|
|
|
25
22
|
private
|
|
@@ -32,15 +29,14 @@ private
|
|
|
32
29
|
result.join
|
|
33
30
|
end
|
|
34
31
|
|
|
35
|
-
# Locally Jets::Router::
|
|
36
|
-
# On Lambda, Jets::Router::
|
|
37
|
-
# TODO: Maybe add caching improvement.
|
|
32
|
+
# Locally Jets::Router::Matcher gets called in Jets::Controller::Middleware::Mimic
|
|
33
|
+
# On Lambda, Jets::Router::Matcher in handlers.
|
|
38
34
|
def find_route
|
|
39
|
-
Jets::Router::
|
|
35
|
+
Jets::Router::Matcher.new.find_by_request(request, "ANY")
|
|
40
36
|
end
|
|
41
37
|
|
|
42
38
|
def build_env(path)
|
|
43
|
-
env = Jets::Controller::
|
|
39
|
+
env = Jets::Controller::RackAdapter::Env.new(event, context, adapter: true).convert
|
|
44
40
|
# remap path info
|
|
45
41
|
mount_at = mount_at(path)
|
|
46
42
|
path_info = env["PATH_INFO"]
|
|
@@ -3,7 +3,6 @@ require "mini_mime"
|
|
|
3
3
|
|
|
4
4
|
class Jets::PublicController < Jets::Controller::Base
|
|
5
5
|
layout false
|
|
6
|
-
internal true
|
|
7
6
|
|
|
8
7
|
def show
|
|
9
8
|
catchall = params[:catchall].blank? ? 'index.html' : params[:catchall]
|
|
@@ -25,7 +24,12 @@ class Jets::PublicController < Jets::Controller::Base
|
|
|
25
24
|
render file: catchall_path, content_type: content_type
|
|
26
25
|
end
|
|
27
26
|
else
|
|
28
|
-
|
|
27
|
+
not_found_path = "#{public_path}/404.html"
|
|
28
|
+
if File.exist?(not_found_path)
|
|
29
|
+
render file: not_found_path, status: 404
|
|
30
|
+
else
|
|
31
|
+
render plain: "404 Not Found", status: 404
|
|
32
|
+
end
|
|
29
33
|
end
|
|
30
34
|
end
|
|
31
35
|
end
|