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
data/lib/jets/generator.rb
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
# Piggy back off of Rails Generators.
|
|
2
|
-
class Jets::Generator
|
|
3
|
-
class << self
|
|
4
|
-
def invoke(generator, *args)
|
|
5
|
-
new(generator, *args).run(:invoke)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def revoke(generator, *args)
|
|
9
|
-
new(generator, *args).run(:revoke)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def help(args=ARGV)
|
|
13
|
-
# `jets generate -h` results in:
|
|
14
|
-
#
|
|
15
|
-
# args = ["generate", "-h"]
|
|
16
|
-
#
|
|
17
|
-
args = args[1..-1] || []
|
|
18
|
-
help_flags = Thor::HELP_MAPPINGS + ["help"]
|
|
19
|
-
args.pop if help_flags.include?(args.last)
|
|
20
|
-
subcommand = args[0]
|
|
21
|
-
|
|
22
|
-
out = capture_stdout do
|
|
23
|
-
if subcommand
|
|
24
|
-
# Using invoke because it ensure the generator is configured properly
|
|
25
|
-
invoke(subcommand) # sub-level: jets generate scaffold -h
|
|
26
|
-
else
|
|
27
|
-
puts Jets::Commands::Help.text(:generate) # to trigger the regular Thor help
|
|
28
|
-
# Note: How to call the original top-level help menu from Rails. Keeping around in case its useful later:
|
|
29
|
-
# Rails::Generators.help # top-level: jets generate -h
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
out.gsub('rails','jets').gsub('Rails','Jets')
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def capture_stdout
|
|
36
|
-
stdout_old = $stdout
|
|
37
|
-
io = StringIO.new
|
|
38
|
-
$stdout = io
|
|
39
|
-
yield
|
|
40
|
-
$stdout = stdout_old
|
|
41
|
-
io.string
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def require_generators
|
|
45
|
-
# lazy require so Rails const is only defined when using generators
|
|
46
|
-
require "rails/generators"
|
|
47
|
-
require "rails/configuration"
|
|
48
|
-
require_active_job_generator
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def require_active_job_generator
|
|
52
|
-
require "active_job"
|
|
53
|
-
require "rails/generators/job/job_generator"
|
|
54
|
-
# Override the source_root
|
|
55
|
-
Rails::Generators::JobGenerator.class_eval do
|
|
56
|
-
def self.source_root
|
|
57
|
-
File.expand_path("../generator/templates/active_job/job/templates", __FILE__)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def initialize(generator, *args)
|
|
64
|
-
@generator, @args = generator, args
|
|
65
|
-
@args << '--pretend' if noop?
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Used to delegate noop option to Rails generator pretend option. Both work:
|
|
69
|
-
#
|
|
70
|
-
# jets generate scaffold user title:string --noop
|
|
71
|
-
# jets generate scaffold user title:string --pretend
|
|
72
|
-
#
|
|
73
|
-
# Grabbing directly from the ARGV because think its cleaner than passing options from
|
|
74
|
-
# Thor all the way down.
|
|
75
|
-
def noop?
|
|
76
|
-
ARGV.include?('--noop')
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def run(behavior=:invoke)
|
|
80
|
-
self.class.require_generators
|
|
81
|
-
|
|
82
|
-
Jets::Commands::Db::Tasks.load!
|
|
83
|
-
|
|
84
|
-
Rails::Generators.configure!(config)
|
|
85
|
-
Rails::Generators.invoke(@generator, @args, behavior: behavior, destination_root: Jets.root)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def config
|
|
89
|
-
g = Rails::Configuration::Generators.new
|
|
90
|
-
g.orm :active_record, migration: true, timestamps: true
|
|
91
|
-
# TODO: support g.orm :dynamodb
|
|
92
|
-
g.test_framework nil #:test_unit, fixture: false
|
|
93
|
-
# g.test_framework :rspec # TODO: load rspec configuration to use rspec
|
|
94
|
-
g.stylesheets false
|
|
95
|
-
g.javascripts false
|
|
96
|
-
g.assets false
|
|
97
|
-
if Jets.config.mode == 'api'
|
|
98
|
-
g.api_only = true
|
|
99
|
-
g.template_engine nil
|
|
100
|
-
else
|
|
101
|
-
g.template_engine :erb
|
|
102
|
-
end
|
|
103
|
-
g.resource_route true
|
|
104
|
-
g.templates.unshift(template_paths)
|
|
105
|
-
g
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def template_paths
|
|
109
|
-
templates_path = File.expand_path("../generator/templates", __FILE__)
|
|
110
|
-
[templates_path]
|
|
111
|
-
end
|
|
112
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Parent class for MountController and RackController
|
|
2
|
-
class Jets::BareController < Jets::Controller::Base
|
|
3
|
-
layout false
|
|
4
|
-
internal true
|
|
5
|
-
skip_forgery_protection
|
|
6
|
-
|
|
7
|
-
private
|
|
8
|
-
# Override process! so it doesnt go through the complete Jets project middleware stack which could interfer with
|
|
9
|
-
# the mounted Rack app.
|
|
10
|
-
def process!
|
|
11
|
-
status, headers, body = dispatch!
|
|
12
|
-
# Use the adapter only to convert the Rack triplet to a API Gateway hash structure
|
|
13
|
-
adapter = Jets::Controller::Rack::Adapter.new(event, context, meth)
|
|
14
|
-
adapter.convert_to_api_gateway(status, headers, body)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require 'bundler/setup'
|
|
2
|
-
require 'cfn_response'
|
|
3
|
-
require 'jets/internal/app/functions/jets/base_path_mapping'
|
|
4
|
-
|
|
5
|
-
STAGE_NAME = "<%= @stage_name %>"
|
|
6
|
-
|
|
7
|
-
def lambda_handler(event:, context:)
|
|
8
|
-
cfn = CfnResponse.new(event, context)
|
|
9
|
-
cfn.response do
|
|
10
|
-
mapping = BasePathMapping.new(event, STAGE_NAME)
|
|
11
|
-
case event['RequestType']
|
|
12
|
-
when "Create", "Update"
|
|
13
|
-
mapping.update
|
|
14
|
-
when "Delete"
|
|
15
|
-
mapping.delete(true) if mapping.should_delete?
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
require 'aws-sdk-apigateway'
|
|
2
|
-
require 'aws-sdk-cloudformation'
|
|
3
|
-
|
|
4
|
-
class BasePathMapping
|
|
5
|
-
def initialize(event, stage_name)
|
|
6
|
-
@event, @stage_name = event, stage_name
|
|
7
|
-
aws_config_update!
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
# Override the AWS retry settings. The aws-sdk-core has expondential backup with this formula:
|
|
11
|
-
#
|
|
12
|
-
# 2 ** c.retries * c.config.retry_base_delay
|
|
13
|
-
#
|
|
14
|
-
# So the max delay will be 2 ** 7 * 0.6 = 76.8s
|
|
15
|
-
#
|
|
16
|
-
# Useful links:
|
|
17
|
-
#
|
|
18
|
-
# https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb
|
|
19
|
-
# https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html
|
|
20
|
-
#
|
|
21
|
-
def aws_config_update!
|
|
22
|
-
Aws.config.update(
|
|
23
|
-
retry_limit: 7, # default: 3
|
|
24
|
-
retry_base_delay: 0.6, # default: 0.3
|
|
25
|
-
)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Cannot use update_base_path_mapping to update the base_mapping because it doesnt
|
|
29
|
-
# allow us to change the rest_api_id. So we delete and create.
|
|
30
|
-
def update
|
|
31
|
-
delete(true)
|
|
32
|
-
create
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Dont delete the newly created base path mapping unless this is an operation
|
|
36
|
-
# where we're fully deleting the stack
|
|
37
|
-
def should_delete?
|
|
38
|
-
deleting_parent?
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def delete(fail_silently=false)
|
|
42
|
-
apigateway.delete_base_path_mapping(
|
|
43
|
-
domain_name: domain_name, # required
|
|
44
|
-
base_path: base_path.empty? ? '(none)' : base_path,
|
|
45
|
-
)
|
|
46
|
-
# https://github.com/tongueroo/jets/issues/255
|
|
47
|
-
# Used to return: Aws::APIGateway::Errors::NotFoundException
|
|
48
|
-
# Now returns: Aws::APIGateway::Errors::InternalFailure
|
|
49
|
-
# So we'll use a more generic error
|
|
50
|
-
rescue Aws::APIGateway::Errors::ServiceError => e
|
|
51
|
-
raise(e) unless fail_silently
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def create
|
|
55
|
-
apigateway.create_base_path_mapping(
|
|
56
|
-
domain_name: domain_name, # required
|
|
57
|
-
base_path: base_path,
|
|
58
|
-
rest_api_id: rest_api_id, # required
|
|
59
|
-
stage: @stage_name,
|
|
60
|
-
)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def deployment_stack
|
|
64
|
-
@deployment_stack ||= cfn.describe_stacks(stack_name: @event['StackId']).stacks.first
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def rest_api_id
|
|
68
|
-
@rest_api_id ||= parameter_value('RestApi')
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def domain_name
|
|
72
|
-
@domain_name ||= parameter_value('DomainName')
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def base_path
|
|
76
|
-
@base_path ||= parameter_value('BasePath') || ''
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def parameter_value(parameter_key)
|
|
80
|
-
param = deployment_stack[:parameters].find { |p| p.parameter_key == parameter_key }
|
|
81
|
-
param&.parameter_value # possible for this to be nil when removing the config: IE: config.domain.name = nil
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def deleting_parent?
|
|
85
|
-
stack = cfn.describe_stacks(stack_name: parent_stack_name).stacks.first
|
|
86
|
-
stack.stack_status == 'DELETE_IN_PROGRESS'
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def parent_stack_name
|
|
90
|
-
deployment_stack[:root_id]
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def apigateway
|
|
94
|
-
@apigateway ||= Aws::APIGateway::Client.new
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def cfn
|
|
98
|
-
@cfn ||= Aws::CloudFormation::Client.new
|
|
99
|
-
end
|
|
100
|
-
end
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
class Jets::PreheatJob < ApplicationJob
|
|
2
|
-
ENABLED = Jets.config.prewarm.enable
|
|
3
|
-
CONCURRENCY = Jets.config.prewarm.concurrency
|
|
4
|
-
PREWARM_RATE = Jets.config.prewarm.rate
|
|
5
|
-
torching = ENABLED && CONCURRENCY > 1
|
|
6
|
-
warming = ENABLED && CONCURRENCY == 1
|
|
7
|
-
|
|
8
|
-
class_timeout 30
|
|
9
|
-
class_memory 1024
|
|
10
|
-
class_iam_policy(
|
|
11
|
-
{
|
|
12
|
-
sid: "Statement1",
|
|
13
|
-
action: ["logs:*"],
|
|
14
|
-
effect: "Allow",
|
|
15
|
-
resource: "arn:aws:logs:#{Jets.aws.region}:#{Jets.aws.account}:log-group:#{Jets.config.project_namespace}-*",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
sid: "Statement2",
|
|
19
|
-
action: ["lambda:InvokeFunction", "lambda:InvokeAsync"],
|
|
20
|
-
effect: "Allow",
|
|
21
|
-
resource: "arn:aws:lambda:#{Jets.aws.region}:#{Jets.aws.account}:function:#{Jets.config.project_namespace}-*",
|
|
22
|
-
}
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
rate(PREWARM_RATE) if torching
|
|
26
|
-
def torch
|
|
27
|
-
threads = []
|
|
28
|
-
CONCURRENCY.times do
|
|
29
|
-
threads << Thread.new do
|
|
30
|
-
# intentionally calling remote lambda for concurrency
|
|
31
|
-
# avoid passing the _prewarm=1 flag because we want the PreheatJob#warm
|
|
32
|
-
# to run it's normal workload.
|
|
33
|
-
# Do not use Jets::Preheat.warm(function_name) here as that passes the _prewarm=1.
|
|
34
|
-
function_name = "jets-preheat_job-warm"
|
|
35
|
-
event_json = JSON.dump(event)
|
|
36
|
-
options = call_options(event[:quiet])
|
|
37
|
-
Jets::Commands::Call.new(function_name, event_json, options).run unless Jets.env.test?
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
threads.each { |t| t.join }
|
|
41
|
-
"Finished prewarming your application with a concurrency of #{CONCURRENCY}."
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
rate(PREWARM_RATE) if warming
|
|
45
|
-
def warm
|
|
46
|
-
options = call_options(event[:quiet])
|
|
47
|
-
Jets::Preheat.warm_all(options)
|
|
48
|
-
"Finished prewarming your application."
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
class << self
|
|
52
|
-
# Can use this to prewarm post deploy
|
|
53
|
-
def prewarm!
|
|
54
|
-
meth = CONCURRENCY > 1 ? :torch : :warm
|
|
55
|
-
perform_now(meth, quiet: true)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
private
|
|
60
|
-
def call_options(quiet)
|
|
61
|
-
options = {}
|
|
62
|
-
options.merge!(mute: true, mute_output: true) if quiet
|
|
63
|
-
# All the methods in this Job class leads to Jets::Commands::Call.
|
|
64
|
-
# This is true for the Jets::Preheat.warm_all also.
|
|
65
|
-
# These jobs delegate out to Lambda function calls. We do not need/want
|
|
66
|
-
# the invocation type: RequestResponse in this case.
|
|
67
|
-
options.merge!(invocation_type: "Event")
|
|
68
|
-
options
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<% @previews.each do |preview| %>
|
|
2
|
-
<h3><%= link_to(preview.preview_name.titleize, "/jets/mailers/#{preview.preview_name}") %></h3>
|
|
3
|
-
<ul>
|
|
4
|
-
<% preview.emails.each do |email| %>
|
|
5
|
-
<li><%= link_to(email, "/jets/mailers/#{preview.preview_name}/#{email}") %></li>
|
|
6
|
-
<% end %>
|
|
7
|
-
</ul>
|
|
8
|
-
<% end %>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
module Jets
|
|
2
|
-
# Reference: https://github.com/rails/rails/blob/master/actionmailer/lib/action_mailer/railtie.rb
|
|
3
|
-
class Mailer < ::Jets::Turbine
|
|
4
|
-
config.action_mailer = ActiveSupport::OrderedOptions.new
|
|
5
|
-
|
|
6
|
-
initializer "action_mailer.logger" do
|
|
7
|
-
ActiveSupport.on_load(:action_mailer) { self.logger ||= Jets.logger }
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
initializer "action_mailer.set_configs" do |app|
|
|
11
|
-
app.config.action_mailer ||= ActiveSupport::OrderedOptions.new # TODO: temp fix. only happens sometimes?
|
|
12
|
-
options = app.config.action_mailer
|
|
13
|
-
options.default_url_options ||= {}
|
|
14
|
-
options.default_url_options[:protocol] ||= "https"
|
|
15
|
-
options.show_previews = false if options.show_previews.nil?
|
|
16
|
-
options.preview_path ||= "#{Jets.root}/app/previews" if options.show_previews
|
|
17
|
-
options.view_paths ||= "#{Jets.root}/app/views"
|
|
18
|
-
|
|
19
|
-
# TODO: Dont think Jets sets asset_host the same way
|
|
20
|
-
# make sure readers methods get compiled
|
|
21
|
-
# options.asset_host ||= app.config.asset_host
|
|
22
|
-
# options.relative_url_root ||= app.config.relative_url_root
|
|
23
|
-
|
|
24
|
-
ActiveSupport.on_load(:action_mailer) do
|
|
25
|
-
include AbstractController::UrlFor
|
|
26
|
-
# TODO: figure out rest of the helpers
|
|
27
|
-
# extend ::AbstractController::Railties::RoutesHelpers.with(app.routes, false)
|
|
28
|
-
# include app.routes.mounted_helpers
|
|
29
|
-
|
|
30
|
-
register_interceptors(options.delete(:interceptors))
|
|
31
|
-
register_preview_interceptors(options.delete(:preview_interceptors))
|
|
32
|
-
register_observers(options.delete(:observers))
|
|
33
|
-
|
|
34
|
-
options.each { |k, v| send("#{k}=", v) }
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
after_initializer "action_mailer.routes" do |app|
|
|
39
|
-
if app.config.action_mailer.show_previews
|
|
40
|
-
app.routes.draw do
|
|
41
|
-
get "jets/mailers", to: "jets/mailers#index"
|
|
42
|
-
get "jets/mailers/*path", to: "jets/mailers#preview"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
ActiveSupport.on_load :action_controller do
|
|
46
|
-
internal_views = File.expand_path("internal/app/views", File.dirname(__FILE__))
|
|
47
|
-
ActionController::Base.append_view_path(internal_views)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
data/lib/jets/lambda/task.rb
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
class Jets::Lambda::Task
|
|
2
|
-
attr_accessor :class_name, :type
|
|
3
|
-
attr_reader :meth, :properties, :iam_policy, :managed_iam_policy, :lang, :associated_resources
|
|
4
|
-
def initialize(class_name, meth, options={})
|
|
5
|
-
@class_name = class_name.to_s
|
|
6
|
-
@meth = meth
|
|
7
|
-
@options = options
|
|
8
|
-
@type = options[:type] || get_type # controller, job, or function
|
|
9
|
-
@properties = options[:properties] || {}
|
|
10
|
-
@iam_policy = options[:iam_policy]
|
|
11
|
-
@managed_iam_policy = options[:managed_iam_policy]
|
|
12
|
-
@lang = options[:lang] || :ruby
|
|
13
|
-
@associated_resources = options[:associated_resources] || {}
|
|
14
|
-
@replacements = options[:replacements] || {} # added to baseline replacements
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def name
|
|
18
|
-
@meth
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def public_meth?
|
|
22
|
-
# For anonymous classes (app/functions/hello.rb) the class name will be blank.
|
|
23
|
-
# These types of classes are treated specially and has only one handler method
|
|
24
|
-
# that is registered. So we know it is public.
|
|
25
|
-
return true if @class_name.nil? || @class_name == ''
|
|
26
|
-
|
|
27
|
-
# Consider all polymorphic methods public for now
|
|
28
|
-
return true if @lang != :ruby
|
|
29
|
-
|
|
30
|
-
klass = @class_name.constantize
|
|
31
|
-
public_methods = klass.public_instance_methods
|
|
32
|
-
public_methods.include?(meth.to_sym)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def build_function_iam?
|
|
36
|
-
!!(@iam_policy || @managed_iam_policy)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
@@lang_exts = {
|
|
40
|
-
ruby: '.rb',
|
|
41
|
-
python: '.py',
|
|
42
|
-
node: '.js',
|
|
43
|
-
}
|
|
44
|
-
def lang_ext
|
|
45
|
-
@@lang_exts[@lang]
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# The get_type method works for controller and job classes.
|
|
49
|
-
#
|
|
50
|
-
# Usually able to get the type from the class name. Examples:
|
|
51
|
-
#
|
|
52
|
-
# PostsController => controller
|
|
53
|
-
# HardJob => job
|
|
54
|
-
#
|
|
55
|
-
# However, for function types, we are not able to get the type for multiple of
|
|
56
|
-
# reasons. First, function types are allowed to be named with or without
|
|
57
|
-
# _function. Examples:
|
|
58
|
-
#
|
|
59
|
-
# path => class => type
|
|
60
|
-
# app/functions/hello.rb => Hello => function
|
|
61
|
-
# app/functions/hello_function.rb => HelloFunction => function
|
|
62
|
-
#
|
|
63
|
-
# The second reason is that functions are not regular ruby classes. Instead they
|
|
64
|
-
# are anonymous classes created with Class.new. When classes are created with
|
|
65
|
-
# Class.new the method_added hook has "" (blank string) as the self class name.
|
|
66
|
-
# We add the class_type to the task later on as we are constructing the class
|
|
67
|
-
# as part of the Class.new logic.
|
|
68
|
-
#
|
|
69
|
-
# For controller and job standard ruby classes though it can easily be
|
|
70
|
-
# determinated as part of initialization. So we get the type for convenience then.
|
|
71
|
-
#
|
|
72
|
-
# For anonymous function classes, we just set to nil and will later fix in
|
|
73
|
-
# FunctionConstructor.
|
|
74
|
-
#
|
|
75
|
-
# Returns: "controller", "job" or nil
|
|
76
|
-
def get_type
|
|
77
|
-
unless @class_name.empty? # when anonymous class is created with Class.new
|
|
78
|
-
@class_name.underscore.split('_').last # controller, job or rule
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def full_handler(handler_function)
|
|
83
|
-
"#{handler_base}.#{handler_function}"
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def handler_path
|
|
87
|
-
"#{handler_base}#{lang_ext}"
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def handler_base
|
|
91
|
-
base = "handlers/#{@type.pluralize}/#{@class_name.underscore}"
|
|
92
|
-
base += "/#{@lang}" if @lang != :ruby
|
|
93
|
-
base += "/#{@meth}"
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def poly_src_path
|
|
97
|
-
handler_path.sub("handlers/", "app/")
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def replacements
|
|
101
|
-
# Merge in the custom replacements specific to each app class: ConfigRule, Job, etc.
|
|
102
|
-
baseline_replacements.merge(@replacements)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def baseline_replacements
|
|
106
|
-
{
|
|
107
|
-
# camelized because used in not just keys but common used in values
|
|
108
|
-
namespace: @meth.to_s.camelize,
|
|
109
|
-
}
|
|
110
|
-
end
|
|
111
|
-
end
|
data/lib/jets/logger.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'logger'
|
|
2
|
-
|
|
3
|
-
module Jets
|
|
4
|
-
class Logger < ::Logger
|
|
5
|
-
# Only need to override the add method as the other calls all lead to it.
|
|
6
|
-
def add(severity, message = nil, progname = nil)
|
|
7
|
-
# Taken from Logger#add source
|
|
8
|
-
# https://ruby-doc.org/stdlib-2.5.1/libdoc/logger/rdoc/Logger.html#method-i-add
|
|
9
|
-
if message.nil?
|
|
10
|
-
if block_given?
|
|
11
|
-
message = yield
|
|
12
|
-
else
|
|
13
|
-
message = progname
|
|
14
|
-
progname = @progname
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
super # original logical
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# Based on Rails MiddlewareStackProxy
|
|
2
|
-
#
|
|
3
|
-
# Configurator is a recorder for the Jets middleware stack that allows
|
|
4
|
-
# you to configure middlewares in your application. It works basically as a
|
|
5
|
-
# command recorder, saving each command to be applied after initialization
|
|
6
|
-
# over the default middleware stack, so you can add, swap, or remove any
|
|
7
|
-
# middleware in Jets.
|
|
8
|
-
#
|
|
9
|
-
# You can add your own middlewares by using the +config.middleware.use+ method:
|
|
10
|
-
#
|
|
11
|
-
# config.middleware.use Magical::Unicorns
|
|
12
|
-
#
|
|
13
|
-
# This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
|
|
14
|
-
# You can use +insert_before+ if you wish to add a middleware before another:
|
|
15
|
-
#
|
|
16
|
-
# config.middleware.insert_before Rack::Head, Magical::Unicorns
|
|
17
|
-
#
|
|
18
|
-
# There's also +insert_after+ which will insert a middleware after another:
|
|
19
|
-
#
|
|
20
|
-
# config.middleware.insert_after Rack::Head, Magical::Unicorns
|
|
21
|
-
#
|
|
22
|
-
# Middlewares can also be completely swapped out and replaced with others:
|
|
23
|
-
#
|
|
24
|
-
# config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
|
|
25
|
-
#
|
|
26
|
-
# And finally they can also be removed from the stack completely:
|
|
27
|
-
#
|
|
28
|
-
# config.middleware.delete ActionDispatch::Flash
|
|
29
|
-
#
|
|
30
|
-
module Jets::Middleware
|
|
31
|
-
class Configurator
|
|
32
|
-
def initialize(operations = [], delete_operations = [])
|
|
33
|
-
@operations = operations
|
|
34
|
-
@delete_operations = delete_operations
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def insert_before(*args, &block)
|
|
38
|
-
@operations << [__method__, args, block]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
alias :insert :insert_before
|
|
42
|
-
|
|
43
|
-
def insert_after(*args, &block)
|
|
44
|
-
@operations << [__method__, args, block]
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def swap(*args, &block)
|
|
48
|
-
@operations << [__method__, args, block]
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def use(*args, &block)
|
|
52
|
-
@operations << [__method__, args, block]
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def delete(*args, &block)
|
|
56
|
-
@delete_operations << [__method__, args, block]
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def unshift(*args, &block)
|
|
60
|
-
@operations << [__method__, args, block]
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def merge_into(other) #:nodoc:
|
|
64
|
-
(@operations + @delete_operations).each do |operation, args, block|
|
|
65
|
-
other.send(operation, *args, &block)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
other
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def +(other) # :nodoc:
|
|
72
|
-
Configurator.new(@operations + other.operations, @delete_operations + other.delete_operations)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
protected
|
|
76
|
-
def operations
|
|
77
|
-
@operations
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def delete_operations
|
|
81
|
-
@delete_operations
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
require "shotgun"
|
|
2
|
-
|
|
3
|
-
module Jets::Middleware
|
|
4
|
-
class DefaultStack
|
|
5
|
-
attr_reader :config, :app
|
|
6
|
-
def initialize(app, config)
|
|
7
|
-
@app = app
|
|
8
|
-
@config = config
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def build_stack
|
|
12
|
-
Stack.new do |middleware|
|
|
13
|
-
middleware.use Shotgun::Static
|
|
14
|
-
middleware.use Rack::Runtime
|
|
15
|
-
middleware.use Jets::Controller::Middleware::Cors if cors_enabled?
|
|
16
|
-
middleware.use Rack::MethodOverride unless ENV['JETS_RACK_METHOD_OVERRIDE'] == '0' # must come before Middleware::Local for multipart post forms to work
|
|
17
|
-
middleware.use Jets::Controller::Middleware::Reloader if Jets.config.hot_reload
|
|
18
|
-
middleware.use Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only
|
|
19
|
-
middleware.use session_store, session_options
|
|
20
|
-
middleware.use Rack::Head
|
|
21
|
-
middleware.use Rack::ConditionalGet
|
|
22
|
-
middleware.use Rack::ETag
|
|
23
|
-
use_webpacker(middleware)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
def cors_enabled?
|
|
29
|
-
Jets.config.cors
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Written as method to easily not include webpacker for case when either
|
|
33
|
-
# webpacker not installed at all or disabled upon `jets deploy`.
|
|
34
|
-
def use_webpacker(middleware)
|
|
35
|
-
return unless Jets.webpacker? # checks for local development if webpacker installed
|
|
36
|
-
# Different check for middleware because we need webpacker helpers for url helpers.
|
|
37
|
-
# But we dont want to actually serve via webpacker middleware when running on AWS.
|
|
38
|
-
# By this time the url helpers are serving assets out of s3.
|
|
39
|
-
return if File.exist?("#{Jets.root}/config/disable-webpacker-middleware.txt") # created as part of `jets deploy`
|
|
40
|
-
require "jets/controller/middleware/webpacker_setup"
|
|
41
|
-
middleware.use Webpacker::DevServerProxy
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def session_store
|
|
45
|
-
Jets.config.session[:store] # do not use dot notation. session.store is a method on ActiveSupport::OrderedOptions.new
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def session_options
|
|
49
|
-
defaults = { secret: ENV['SECRET_KEY_BASE'] }
|
|
50
|
-
defaults.merge(Jets.config.session.options)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|