jets_bb_fork 0.0.4
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 +7 -0
- data/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +126 -0
- data/.codebuild/README.md +68 -0
- data/.codebuild/bin/jets +3 -0
- data/.codebuild/buildspec-base.yml +14 -0
- data/.codebuild/integration.sh +72 -0
- data/.codebuild/jets.postman_collection.json +323 -0
- data/.codebuild/scripts/install-docker.sh +12 -0
- data/.codebuild/scripts/install-dynamodb-local.sh +22 -0
- data/.codebuild/scripts/install-java.sh +22 -0
- data/.codebuild/scripts/install-node.sh +4 -0
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +84 -0
- data/.github/ISSUE_TEMPLATE/documentation.md +27 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +64 -0
- data/.github/ISSUE_TEMPLATE/question.md +16 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- data/.gitignore +24 -0
- data/.gitmodules +0 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +734 -0
- data/CONDUCT.md +1 -0
- data/CONTRIBUTING.md +1 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +24 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets_bb_fork +14 -0
- data/jets.gemspec +68 -0
- data/lib/jets.rb +27 -0
- data/lib/jets/application.rb +216 -0
- data/lib/jets/application/defaults.rb +172 -0
- data/lib/jets/autoloaders.rb +97 -0
- data/lib/jets/aws_info.rb +113 -0
- data/lib/jets/aws_services.rb +65 -0
- data/lib/jets/aws_services/global_memoist.rb +57 -0
- data/lib/jets/aws_services/s3_bucket.rb +34 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +119 -0
- data/lib/jets/builders/code_builder.rb +399 -0
- data/lib/jets/builders/code_size.rb +57 -0
- data/lib/jets/builders/gem_replacer.rb +76 -0
- data/lib/jets/builders/handler_generator.rb +186 -0
- data/lib/jets/builders/lambda_layer.rb +69 -0
- data/lib/jets/builders/md5.rb +60 -0
- data/lib/jets/builders/md5_zip.rb +61 -0
- data/lib/jets/builders/purger.rb +35 -0
- data/lib/jets/builders/rack_packager.rb +51 -0
- data/lib/jets/builders/rackup_wrappers/rackup +19 -0
- data/lib/jets/builders/rackup_wrappers/rackup.rb +7 -0
- data/lib/jets/builders/reconfigure_rails.rb +114 -0
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +16 -0
- data/lib/jets/builders/ruby_packager.rb +207 -0
- data/lib/jets/builders/shim_vars/app.rb +78 -0
- data/lib/jets/builders/shim_vars/base.rb +25 -0
- data/lib/jets/builders/shim_vars/shared.rb +37 -0
- data/lib/jets/builders/templates/handler.rb +12 -0
- data/lib/jets/builders/tidy.rb +107 -0
- data/lib/jets/builders/util.rb +31 -0
- data/lib/jets/bundle.rb +82 -0
- data/lib/jets/camelizer.rb +71 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +63 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +157 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +75 -0
- data/lib/jets/cfn/builders/controller_builder.rb +42 -0
- data/lib/jets/cfn/builders/function_builder.rb +14 -0
- data/lib/jets/cfn/builders/interface.rb +137 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/paged.rb +37 -0
- data/lib/jets/cfn/builders/parent_builder.rb +100 -0
- data/lib/jets/cfn/builders/rule_builder.rb +24 -0
- data/lib/jets/cfn/builders/shared_builder.rb +14 -0
- data/lib/jets/cfn/ship.rb +185 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +194 -0
- data/lib/jets/commands/base.rb +146 -0
- data/lib/jets/commands/build.rb +234 -0
- data/lib/jets/commands/call.rb +169 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +136 -0
- data/lib/jets/commands/call/base_guesser.rb +60 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +19 -0
- data/lib/jets/commands/clean/base.rb +24 -0
- data/lib/jets/commands/clean/build.rb +13 -0
- data/lib/jets/commands/clean/log.rb +107 -0
- data/lib/jets/commands/console.rb +12 -0
- data/lib/jets/commands/db.rb +13 -0
- data/lib/jets/commands/db/environment-task.rake +3 -0
- data/lib/jets/commands/db/tasks.rb +44 -0
- data/lib/jets/commands/dbconsole.rb +131 -0
- data/lib/jets/commands/delete.rb +143 -0
- data/lib/jets/commands/deploy.rb +141 -0
- data/lib/jets/commands/dynamodb.rb +19 -0
- data/lib/jets/commands/dynamodb/migrate.rb +9 -0
- data/lib/jets/commands/dynamodb/migrator.rb +36 -0
- data/lib/jets/commands/gems.rb +21 -0
- data/lib/jets/commands/help.rb +9 -0
- data/lib/jets/commands/help/build.md +6 -0
- data/lib/jets/commands/help/call.md +61 -0
- data/lib/jets/commands/help/clean/build.md +5 -0
- data/lib/jets/commands/help/clean/log.md +5 -0
- data/lib/jets/commands/help/console.md +18 -0
- data/lib/jets/commands/help/db/generate.md +8 -0
- data/lib/jets/commands/help/dbconsole.md +9 -0
- data/lib/jets/commands/help/delete.md +22 -0
- data/lib/jets/commands/help/deploy.md +32 -0
- data/lib/jets/commands/help/destroy.md +16 -0
- data/lib/jets/commands/help/dynamodb/generate.md +52 -0
- data/lib/jets/commands/help/dynamodb/migrate.md +4 -0
- data/lib/jets/commands/help/gems/check.md +8 -0
- data/lib/jets/commands/help/generate.md +22 -0
- data/lib/jets/commands/help/import/rack.md +13 -0
- data/lib/jets/commands/help/import/rails.md +11 -0
- data/lib/jets/commands/help/new.md +42 -0
- data/lib/jets/commands/help/routes.md +16 -0
- data/lib/jets/commands/help/runner.md +17 -0
- data/lib/jets/commands/help/server.md +15 -0
- data/lib/jets/commands/help/status.md +14 -0
- data/lib/jets/commands/help/upgrade.md +5 -0
- data/lib/jets/commands/help/url.md +6 -0
- data/lib/jets/commands/import.rb +12 -0
- data/lib/jets/commands/import/base.rb +49 -0
- data/lib/jets/commands/import/cheatsheet.rb +35 -0
- data/lib/jets/commands/import/rack.rb +16 -0
- data/lib/jets/commands/import/rails.rb +74 -0
- data/lib/jets/commands/import/sequence.rb +90 -0
- data/lib/jets/commands/import/templates/config/database.yml +26 -0
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +89 -0
- data/lib/jets/commands/main.rb +157 -0
- data/lib/jets/commands/markdown/creator.rb +58 -0
- data/lib/jets/commands/markdown/index.rb +27 -0
- data/lib/jets/commands/markdown/page.rb +125 -0
- data/lib/jets/commands/markdown/shell.rb +11 -0
- data/lib/jets/commands/new.rb +157 -0
- data/lib/jets/commands/rake_command.rb +61 -0
- data/lib/jets/commands/rake_tasks.rb +46 -0
- data/lib/jets/commands/runner.rb +16 -0
- data/lib/jets/commands/sequence.rb +99 -0
- data/lib/jets/commands/stack_info.rb +30 -0
- data/lib/jets/commands/templates/skeleton/.gitignore +12 -0
- data/lib/jets/commands/templates/skeleton/.jetskeep +1 -0
- data/lib/jets/commands/templates/skeleton/.rspec +3 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +38 -0
- data/lib/jets/commands/templates/skeleton/Procfile +7 -0
- data/lib/jets/commands/templates/skeleton/README.md +11 -0
- data/lib/jets/commands/templates/skeleton/Rakefile +2 -0
- data/lib/jets/commands/templates/skeleton/app/controllers/application_controller.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/helpers/application_helper.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +4 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_record.rb +3 -0
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +25 -0
- data/lib/jets/commands/templates/skeleton/config.ru +5 -0
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +67 -0
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +26 -0
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +22 -0
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +7 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +9 -0
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +7 -0
- data/lib/jets/commands/templates/skeleton/config/routes.rb +9 -0
- data/lib/jets/commands/templates/skeleton/db/.gitkeep +0 -0
- data/lib/jets/commands/templates/skeleton/public/404.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/422.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/500.html +66 -0
- data/lib/jets/commands/templates/skeleton/public/favicon.ico +0 -0
- data/lib/jets/commands/templates/skeleton/public/index.html.tt +91 -0
- data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +15 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-index.json +51 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-show.json +53 -0
- data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +30 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +14 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/src/jets/crud.js +87 -0
- data/lib/jets/commands/upgrade.rb +145 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack +19 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +19 -0
- data/lib/jets/commands/url.rb +68 -0
- data/lib/jets/commands/webpacker_template.rb +18 -0
- data/lib/jets/controller.rb +3 -0
- data/lib/jets/controller/base.rb +108 -0
- data/lib/jets/controller/callbacks.rb +68 -0
- data/lib/jets/controller/cookies.rb +38 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +116 -0
- data/lib/jets/controller/middleware/local/api_gateway.rb +93 -0
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +38 -0
- data/lib/jets/controller/middleware/local/route_matcher.rb +106 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/reloader.rb +15 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack/adapter.rb +88 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +79 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +250 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/controller/stage.rb +33 -0
- data/lib/jets/core.rb +149 -0
- data/lib/jets/core_ext/kernel.rb +13 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +48 -0
- data/lib/jets/dotenv/ssm.rb +48 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +48 -0
- data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
- data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +39 -0
- data/lib/jets/generator/templates/erb/scaffold/edit.html.erb +6 -0
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +29 -0
- data/lib/jets/generator/templates/erb/scaffold/new.html.erb +5 -0
- data/lib/jets/generator/templates/erb/scaffold/show.html.erb +9 -0
- data/lib/jets/generator/templates/rails/assets/javascript.js +2 -0
- data/lib/jets/generator/templates/rails/assets/stylesheet.css +4 -0
- data/lib/jets/generator/templates/rails/controller/controller.rb +13 -0
- data/lib/jets/generator/templates/rails/helper/helper.rb +4 -0
- data/lib/jets/generator/templates/rails/scaffold/scaffold.css +80 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb +62 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +79 -0
- data/lib/jets/inflections.rb +32 -0
- data/lib/jets/internal/app/controllers/jets/mailers_controller.rb +97 -0
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +31 -0
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +25 -0
- data/lib/jets/internal/app/functions/jets/base_path.rb +157 -0
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +9 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +70 -0
- data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +43 -0
- data/lib/jets/internal/app/views/jets/mailers/email.html.erb +145 -0
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/lib/jets/internal/turbines/jets/mailer.rb +51 -0
- data/lib/jets/job/base.rb +39 -0
- data/lib/jets/job/dsl.rb +40 -0
- data/lib/jets/job/dsl/dynamodb_event.rb +65 -0
- data/lib/jets/job/dsl/event_source_mapping.rb +11 -0
- data/lib/jets/job/dsl/iot_event.rb +24 -0
- data/lib/jets/job/dsl/kinesis_event.rb +46 -0
- data/lib/jets/job/dsl/log_event.rb +15 -0
- data/lib/jets/job/dsl/rule_event.rb +75 -0
- data/lib/jets/job/dsl/s3_event.rb +36 -0
- data/lib/jets/job/dsl/sns_event.rb +54 -0
- data/lib/jets/job/dsl/sqs_event.rb +96 -0
- data/lib/jets/job/helpers/kinesis_event_helper.rb +13 -0
- data/lib/jets/job/helpers/log_event_helper.rb +17 -0
- data/lib/jets/job/helpers/s3_event_helper.rb +13 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda/dsl.rb +419 -0
- data/lib/jets/lambda/function.rb +29 -0
- data/lib/jets/lambda/function_constructor.rb +55 -0
- data/lib/jets/lambda/functions.rb +34 -0
- data/lib/jets/lambda/task.rb +111 -0
- data/lib/jets/logger.rb +21 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +139 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +33 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +51 -0
- data/lib/jets/middleware/layer.rb +34 -0
- data/lib/jets/middleware/stack.rb +77 -0
- data/lib/jets/naming.rb +49 -0
- data/lib/jets/overrides/lambda.rb +1 -0
- data/lib/jets/overrides/lambda/marshaller.rb +31 -0
- data/lib/jets/overrides/rails.rb +4 -0
- data/lib/jets/overrides/rails/asset_tag_helper.rb +114 -0
- data/lib/jets/overrides/rails/common_methods.rb +13 -0
- data/lib/jets/overrides/rails/rendering_helper.rb +26 -0
- data/lib/jets/overrides/rails/url_helper.rb +25 -0
- data/lib/jets/poly_fun.rb +73 -0
- data/lib/jets/poly_fun/base_executor.rb +125 -0
- data/lib/jets/poly_fun/lambda_executor.rb +16 -0
- data/lib/jets/poly_fun/node_error.rb +8 -0
- data/lib/jets/poly_fun/node_executor.rb +54 -0
- data/lib/jets/poly_fun/python_error.rb +8 -0
- data/lib/jets/poly_fun/python_executor.rb +23 -0
- data/lib/jets/preheat.rb +117 -0
- data/lib/jets/processors/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +61 -0
- data/lib/jets/rack_server.rb +86 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +71 -0
- data/lib/jets/resource/api_gateway/base_path/function.rb +42 -0
- data/lib/jets/resource/api_gateway/base_path/mapping.rb +44 -0
- data/lib/jets/resource/api_gateway/base_path/role.rb +76 -0
- data/lib/jets/resource/api_gateway/cors.rb +61 -0
- data/lib/jets/resource/api_gateway/deployment.rb +78 -0
- data/lib/jets/resource/api_gateway/domain_name.rb +59 -0
- data/lib/jets/resource/api_gateway/method.rb +98 -0
- data/lib/jets/resource/api_gateway/resource.rb +101 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +56 -0
- data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +42 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +63 -0
- data/lib/jets/resource/api_gateway/rest_api/routes.rb +7 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +8 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +130 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/to.rb +29 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/variable.rb +39 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision.rb +121 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +37 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +53 -0
- data/lib/jets/resource/child_stack/app_class.rb +107 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +92 -0
- data/lib/jets/resource/config/config_rule.rb +74 -0
- data/lib/jets/resource/config/managed_rule.rb +15 -0
- data/lib/jets/resource/events/rule.rb +31 -0
- data/lib/jets/resource/iam/application_role.rb +27 -0
- data/lib/jets/resource/iam/base_role_definition.rb +47 -0
- data/lib/jets/resource/iam/class_role.rb +74 -0
- data/lib/jets/resource/iam/function_role.rb +54 -0
- data/lib/jets/resource/iam/managed_policy.rb +22 -0
- data/lib/jets/resource/iam/policy_document.rb +41 -0
- data/lib/jets/resource/iot/topic_rule.rb +34 -0
- data/lib/jets/resource/lambda/event_source_mapping.rb +31 -0
- data/lib/jets/resource/lambda/function.rb +214 -0
- data/lib/jets/resource/lambda/function/environment.rb +62 -0
- data/lib/jets/resource/lambda/gem_layer.rb +17 -0
- data/lib/jets/resource/lambda/layer_version.rb +44 -0
- data/lib/jets/resource/logs/subscription_filter.rb +31 -0
- data/lib/jets/resource/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +85 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3/bucket.rb +24 -0
- data/lib/jets/resource/sns/subscription.rb +29 -0
- data/lib/jets/resource/sns/topic.rb +35 -0
- data/lib/jets/resource/sns/topic_policy.rb +40 -0
- data/lib/jets/resource/sqs/queue.rb +21 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +177 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +54 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +78 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +88 -0
- data/lib/jets/stack/builder.rb +43 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/depends.rb +34 -0
- data/lib/jets/stack/depends/item.rb +9 -0
- data/lib/jets/stack/function.rb +69 -0
- data/lib/jets/stack/main.rb +4 -0
- data/lib/jets/stack/main/dsl.rb +28 -0
- data/lib/jets/stack/main/dsl/base.rb +49 -0
- data/lib/jets/stack/main/dsl/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/dsl/iam.rb +8 -0
- data/lib/jets/stack/main/dsl/lambda.rb +83 -0
- data/lib/jets/stack/main/dsl/s3.rb +12 -0
- data/lib/jets/stack/main/dsl/sns.rb +16 -0
- data/lib/jets/stack/main/dsl/sqs.rb +10 -0
- data/lib/jets/stack/output.rb +35 -0
- data/lib/jets/stack/output/dsl.rb +19 -0
- data/lib/jets/stack/output/lookup.rb +36 -0
- data/lib/jets/stack/parameter.rb +37 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +31 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/stack/s3_event.rb +87 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +41 -0
- data/lib/jets/turbo.rb +55 -0
- data/lib/jets/turbo/database_yaml.rb +41 -0
- data/lib/jets/turbo/project/.gitignore +12 -0
- data/lib/jets/turbo/project/.jetskeep +1 -0
- data/lib/jets/turbo/project/Gemfile +16 -0
- data/lib/jets/turbo/project/Rakefile +2 -0
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +2 -0
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +2 -0
- data/lib/jets/turbo/project/app/jobs/application_job.rb +4 -0
- data/lib/jets/turbo/project/config.ru +5 -0
- data/lib/jets/turbo/project/config/application.rb +4 -0
- data/lib/jets/turbo/project/config/routes.rb +4 -0
- data/lib/jets/turbo/rails.rb +127 -0
- data/lib/jets/turbo/templates/config/database.yml +26 -0
- data/lib/jets/util.rb +38 -0
- data/lib/jets/version.rb +3 -0
- data/readme/prerelease.md +6 -0
- data/readme/testing.md +60 -0
- metadata +1004 -0
|
@@ -0,0 +1,84 @@
|
|
|
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
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Jets::Middleware
|
|
2
|
+
class DefaultStack
|
|
3
|
+
attr_reader :config, :app
|
|
4
|
+
def initialize(app, config)
|
|
5
|
+
@app = app
|
|
6
|
+
@config = config
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def build_stack
|
|
10
|
+
Stack.new do |middleware|
|
|
11
|
+
middleware.use Shotgun::Static if Jets.env.development?
|
|
12
|
+
middleware.use Rack::Runtime
|
|
13
|
+
middleware.use Jets::Controller::Middleware::Cors if cors_enabled?
|
|
14
|
+
middleware.use Rack::MethodOverride # must come before Middleware::Local for multipart post forms to work
|
|
15
|
+
middleware.use Jets::Controller::Middleware::Reloader if Jets.env.development?
|
|
16
|
+
middleware.use Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only
|
|
17
|
+
middleware.use session_store, session_options
|
|
18
|
+
middleware.use Rack::Head
|
|
19
|
+
middleware.use Rack::ConditionalGet
|
|
20
|
+
middleware.use Rack::ETag
|
|
21
|
+
use_webpacker(middleware)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
def cors_enabled?
|
|
27
|
+
Jets.config.cors
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Written as method to easily not include webpacker for case when either
|
|
31
|
+
# webpacker not installed at all or disabled upon `jets deploy`.
|
|
32
|
+
def use_webpacker(middleware)
|
|
33
|
+
return unless Jets.webpacker? # checks for local development if webpacker installed
|
|
34
|
+
# Different check for middleware because we need webpacker helpers for url helpers.
|
|
35
|
+
# But we dont want to actually serve via webpacker middleware when running on AWS.
|
|
36
|
+
# By this time the url helpers are serving assets out of s3.
|
|
37
|
+
return if File.exist?("#{Jets.root}/config/disable-webpacker-middleware.txt") # created as part of `jets deploy`
|
|
38
|
+
require "jets/controller/middleware/webpacker_setup"
|
|
39
|
+
middleware.use Webpacker::DevServerProxy
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def session_store
|
|
43
|
+
Jets.config.session[:store] # do not use dot notation. session.store is a method on ActiveSupport::OrderedOptions.new
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def session_options
|
|
47
|
+
defaults = { secret: ENV['SECRET_KEY_BASE'] }
|
|
48
|
+
defaults.merge(Jets.config.session.options)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Jets::Middleware
|
|
2
|
+
class Layer
|
|
3
|
+
attr_reader :args, :block, :klass
|
|
4
|
+
|
|
5
|
+
def initialize(klass, args, block)
|
|
6
|
+
@klass = klass
|
|
7
|
+
@args = args
|
|
8
|
+
@block = block
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def name; klass.name; end
|
|
12
|
+
|
|
13
|
+
def ==(middleware)
|
|
14
|
+
case middleware
|
|
15
|
+
when Layer
|
|
16
|
+
klass == middleware.klass
|
|
17
|
+
when Class
|
|
18
|
+
klass == middleware
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def inspect
|
|
23
|
+
if klass.is_a?(Class)
|
|
24
|
+
klass.to_s
|
|
25
|
+
else
|
|
26
|
+
klass.class.to_s
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def build(app)
|
|
31
|
+
klass.new(app, *args, &block)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module Jets::Middleware
|
|
2
|
+
class Stack
|
|
3
|
+
include Enumerable
|
|
4
|
+
|
|
5
|
+
attr_accessor :middlewares
|
|
6
|
+
def initialize(*args)
|
|
7
|
+
@middlewares = []
|
|
8
|
+
yield(self) if block_given?
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def each
|
|
12
|
+
@middlewares.each { |x| yield x }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def size
|
|
16
|
+
middlewares.size
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def last
|
|
20
|
+
middlewares.last
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def [](i)
|
|
24
|
+
middlewares[i]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def unshift(klass, *args, &block)
|
|
28
|
+
middlewares.unshift(build_middleware(klass, args, block))
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def initialize_copy(other)
|
|
32
|
+
self.middlewares = other.middlewares.dup
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def insert(index, klass, *args, &block)
|
|
36
|
+
index = assert_index(index, :before)
|
|
37
|
+
middlewares.insert(index, build_middleware(klass, args, block))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
alias_method :insert_before, :insert
|
|
41
|
+
|
|
42
|
+
def insert_after(index, *args, &block)
|
|
43
|
+
index = assert_index(index, :after)
|
|
44
|
+
insert(index + 1, *args, &block)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def swap(target, *args, &block)
|
|
48
|
+
index = assert_index(target, :before)
|
|
49
|
+
insert(index, *args, &block)
|
|
50
|
+
middlewares.delete_at(index + 1)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def delete(target)
|
|
54
|
+
middlewares.delete_if { |m| m.klass == target }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def use(klass, *args, &block)
|
|
58
|
+
middlewares.push(build_middleware(klass, args, block))
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def build(app = Proc.new)
|
|
62
|
+
middlewares.freeze.reverse.inject(app) { |a, e| e.build(a) }
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
|
|
67
|
+
def assert_index(index, where)
|
|
68
|
+
i = index.is_a?(Integer) ? index : middlewares.index { |m| m.klass == index }
|
|
69
|
+
raise "No such middleware to insert #{where}: #{index.inspect}" unless i
|
|
70
|
+
i
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def build_middleware(klass, args, block)
|
|
74
|
+
Layer.new(klass, args, block)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
data/lib/jets/naming.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# This class groups the naming in one place.
|
|
2
|
+
# Some naming is for CloudFormation
|
|
3
|
+
# Some are for the Build process
|
|
4
|
+
class Jets::Naming
|
|
5
|
+
# Mainly used by build.rb
|
|
6
|
+
class << self
|
|
7
|
+
extend Memoist
|
|
8
|
+
|
|
9
|
+
def app_template_path(app_class)
|
|
10
|
+
underscored = app_class.to_s.underscore.gsub('/','-')
|
|
11
|
+
"#{template_path_prefix}-app-#{underscored}.yml"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def shared_template_path(shared_class)
|
|
15
|
+
underscored = shared_class.to_s.underscore.gsub('/','-')
|
|
16
|
+
"#{template_path_prefix}-shared-#{underscored}.yml"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def template_path_prefix
|
|
20
|
+
"#{Jets.build_root}/templates/#{Jets.config.project_namespace}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# consider moving these methods into cfn/builder/helpers.rb or that area.
|
|
24
|
+
def parent_template_path
|
|
25
|
+
"#{template_path_prefix}.yml"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# consider moving these methods into cfn/builder/helpers.rb or that area.
|
|
29
|
+
def api_gateway_template_path(suffix)
|
|
30
|
+
"#{template_path_prefix}-api-gateway#{suffix}.yml"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def api_deployment_template_path
|
|
34
|
+
"#{template_path_prefix}-api-deployment.yml"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def shared_resources_template_path
|
|
38
|
+
"#{template_path_prefix}-shared-resources.yml"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def parent_stack_name
|
|
42
|
+
File.basename(parent_template_path, ".yml")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def gateway_api_name
|
|
46
|
+
"#{Jets.config.project_namespace}"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "jets/overrides/lambda/marshaller"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
# Hack AwsLambda Ruby Runtime to fix .to_json issue collision with ActiveSupport.
|
|
4
|
+
# To reproduce:
|
|
5
|
+
# Create a shared resource from the docs and call sns.publish
|
|
6
|
+
#
|
|
7
|
+
# Causes an infinite loop when calling sns.publish somehow.
|
|
8
|
+
# Overriding with JSON.dump and follow up with AWS ticket.
|
|
9
|
+
module AwsLambda
|
|
10
|
+
class Marshaller
|
|
11
|
+
class << self
|
|
12
|
+
# By default, just runs #to_json on the method's response value.
|
|
13
|
+
# This can be overwritten by users who know what they are doing.
|
|
14
|
+
# The response is an array of response, content-type.
|
|
15
|
+
# If returned without a content-type, it is assumed to be application/json
|
|
16
|
+
# Finally, StringIO/IO is used to signal a response that shouldn't be
|
|
17
|
+
# formatted as JSON, and should get a different content-type header.
|
|
18
|
+
def marshall_response(method_response)
|
|
19
|
+
case method_response
|
|
20
|
+
when StringIO, IO
|
|
21
|
+
[method_response, 'application/unknown']
|
|
22
|
+
else
|
|
23
|
+
# Orignal method calls .to_json but this collides with ActiveSupport's to_json
|
|
24
|
+
# method_response.to_json # application/json is assumed
|
|
25
|
+
JSON.dump(method_response)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Override to prepend stage name when on AWS.
|
|
2
|
+
module Jets::AssetTagHelper
|
|
3
|
+
extend Memoist
|
|
4
|
+
include Jets::CommonMethods
|
|
5
|
+
include Jets::AwsServices
|
|
6
|
+
|
|
7
|
+
def javascript_include_tag(*sources, **options)
|
|
8
|
+
sources = sources.map { |s| s3_public_url(s, :javascripts) }
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def stylesheet_link_tag(*sources, **options)
|
|
13
|
+
sources = sources.map { |s| s3_public_url(s, :stylesheets) }
|
|
14
|
+
super
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Locally:
|
|
18
|
+
#
|
|
19
|
+
# image_tag("jets.png") => /images/jets.png
|
|
20
|
+
# image_tag("/images/jets.png") => /images/jets.png
|
|
21
|
+
#
|
|
22
|
+
# Remotely:
|
|
23
|
+
#
|
|
24
|
+
# image_tag("jets.png") => https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1kih4n2te0n66/jets/public/images/jets.png
|
|
25
|
+
def image_tag(source, options = {})
|
|
26
|
+
source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
|
|
27
|
+
|
|
28
|
+
# mimic original behavior to get /images in source
|
|
29
|
+
source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
|
|
30
|
+
if on_aws? && !source.starts_with?('http')
|
|
31
|
+
source = "#{s3_public}#{source}"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
super
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def asset_path(source, options = {})
|
|
38
|
+
source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
|
|
39
|
+
# mimic original behavior to get /images in source
|
|
40
|
+
source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
|
|
41
|
+
|
|
42
|
+
# Examples to help understand:
|
|
43
|
+
#
|
|
44
|
+
# puts "AssetTagHelper#asset_path source #{source}"
|
|
45
|
+
# puts "AssetTagHelper#asset_path asset_folder?(source) #{asset_folder?(source).inspect}"
|
|
46
|
+
# AssetTagHelper#asset_path source /packs/images/myimage-e5f675d1ba26865fd65e919beb5bb86b.png
|
|
47
|
+
# AssetTagHelper#asset_path asset_folder?(source) "images"
|
|
48
|
+
#
|
|
49
|
+
if on_aws? && asset_folder?(source) && !source.starts_with?('http')
|
|
50
|
+
source = "#{s3_public}#{source}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
super
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Serves favicon out of s3 when on API gateway.
|
|
57
|
+
#
|
|
58
|
+
# Useful helper for API Gateway since serving binary data like images without
|
|
59
|
+
# an Accept header doesnt work well. You can changed Media Types to '*/*'
|
|
60
|
+
# but then that messes up form data.
|
|
61
|
+
def favicon_path(path='favicon.ico')
|
|
62
|
+
on_aws? ? "#{s3_public}/#{path}" : "/#{path}"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
# Whatever is configured in Jets.config.assets.folders
|
|
67
|
+
# Example: packs, images, assets
|
|
68
|
+
def asset_folder?(url)
|
|
69
|
+
Jets.config.assets.folders.detect do |folder|
|
|
70
|
+
url.include?(folder)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# User can use:
|
|
75
|
+
# javascript_include_tag "assets/test"
|
|
76
|
+
#
|
|
77
|
+
# Rails automatically adds "javscript" in front, to become:
|
|
78
|
+
#
|
|
79
|
+
# /javascripts/assets/test
|
|
80
|
+
#
|
|
81
|
+
# We want to add the API Gateway stage name in front for this:
|
|
82
|
+
#
|
|
83
|
+
# /stag/javascript/asset/test
|
|
84
|
+
#
|
|
85
|
+
# But adding it in front results in this:
|
|
86
|
+
#
|
|
87
|
+
# /javascript/stag/asset/test
|
|
88
|
+
#
|
|
89
|
+
# If there's a / in front then rails will not add the "javascript":
|
|
90
|
+
# So we can add the javascript ourselves and then add the stag with a
|
|
91
|
+
# / in front.
|
|
92
|
+
def s3_public_url(url, asset_type)
|
|
93
|
+
unless url.starts_with?('/') or url.starts_with?('http')
|
|
94
|
+
url = "/#{asset_type}/#{url}" # /javascript/asset/test
|
|
95
|
+
end
|
|
96
|
+
add_s3_public(url)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Example:
|
|
100
|
+
# Url: /packs/application-e7654c50abd78161b641.js
|
|
101
|
+
# Returns: https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1jg5o076egkk4/jets/public/packs/application-e7654c50abd78161b641.js
|
|
102
|
+
def add_s3_public(url)
|
|
103
|
+
return url unless on_aws?
|
|
104
|
+
"#{s3_public}#{url}"
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def s3_public
|
|
108
|
+
# s3_base_url.txt is created as part of the build process
|
|
109
|
+
s3_base_url = IO.read("#{Jets.root}/config/s3_base_url.txt").strip
|
|
110
|
+
"#{s3_base_url}/public"
|
|
111
|
+
end
|
|
112
|
+
memoize :s3_public
|
|
113
|
+
end
|
|
114
|
+
ActionView::Helpers.send(:include, Jets::AssetTagHelper)
|