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,61 @@
|
|
|
1
|
+
class Jets::Commands::RakeCommand
|
|
2
|
+
class << self
|
|
3
|
+
# Same signature as Jets::Commands::Base.perform.
|
|
4
|
+
def perform(namespaced_command, thor_args)
|
|
5
|
+
if thor_args.first == "help"
|
|
6
|
+
puts help_message(namespaced_command)
|
|
7
|
+
return
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
require_rake
|
|
11
|
+
|
|
12
|
+
ARGV.unshift(namespaced_command) # Prepend the task, so Rake knows how to run it.
|
|
13
|
+
|
|
14
|
+
rake.standard_exception_handling do
|
|
15
|
+
rake.init("jets")
|
|
16
|
+
rake.load_rakefile
|
|
17
|
+
rake.top_level
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Useful for CLI.lookup.
|
|
22
|
+
def namespaced_commands
|
|
23
|
+
formatted_rake_tasks(true).map(&:first)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def formatted_rake_tasks(all=false)
|
|
27
|
+
rake_tasks(all).map do |t|
|
|
28
|
+
comment = "# #{t.comment}" if t.comment
|
|
29
|
+
[ t.name_with_args, comment ]
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def rake_tasks(all=false)
|
|
34
|
+
require_rake
|
|
35
|
+
|
|
36
|
+
Rake::TaskManager.record_task_metadata = true
|
|
37
|
+
rake.instance_variable_set(:@name, "jets")
|
|
38
|
+
Jets::Commands::RakeTasks.load!
|
|
39
|
+
tasks = rake.tasks
|
|
40
|
+
tasks = tasks.select(&:comment) unless all
|
|
41
|
+
tasks
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def help_message(namespaced_command)
|
|
45
|
+
task = rake_tasks(true).find { |t| t.name == namespaced_command }
|
|
46
|
+
message = "Help provided by rake task:\n\n"
|
|
47
|
+
message << "jets #{task.name_with_args.dup}\n"
|
|
48
|
+
message << " #{task.full_comment}"
|
|
49
|
+
message
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
def rake
|
|
54
|
+
Rake.application
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def require_rake
|
|
58
|
+
require "rake" # Defer booting Rake until we know it's needed.
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
|
|
3
|
+
class Jets::Commands::RakeTasks
|
|
4
|
+
class << self
|
|
5
|
+
# Will only load the tasks once. Just in case the user has already loaded
|
|
6
|
+
# Jets rake tasks in their Rakefile. Example Rakefile that does this:
|
|
7
|
+
#
|
|
8
|
+
# require 'jets'
|
|
9
|
+
# Jets.load_tasks
|
|
10
|
+
#
|
|
11
|
+
@@loaded = false
|
|
12
|
+
def load!
|
|
13
|
+
return if @@loaded # prevent loading twice
|
|
14
|
+
# Run Bundler.setup so all project rake tasks also show up in `jets help`
|
|
15
|
+
Jets::Bundle.setup
|
|
16
|
+
|
|
17
|
+
Jets::Commands::Db::Tasks.load!
|
|
18
|
+
load_webpacker_tasks
|
|
19
|
+
|
|
20
|
+
@@loaded = true
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Handles load errors gracefuly per Booter.required_bundle_gems comments.
|
|
24
|
+
def load_webpacker_tasks
|
|
25
|
+
begin
|
|
26
|
+
require "webpacker"
|
|
27
|
+
rescue LoadError
|
|
28
|
+
# puts "WARN: unable to load gem. #{$!}. Running with 'bundle exec' might fix this warning."
|
|
29
|
+
# Happens whne user calls jets help outside the jets project folder.
|
|
30
|
+
return
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Webpacker::RakeTasks.load!
|
|
34
|
+
# Thanks: https://coderwall.com/p/qhdhgw/adding-a-post-execution-hook-to-the-rails-db-migrate-task
|
|
35
|
+
# Enchancing in case the user runs webpacker:install afterwards
|
|
36
|
+
# instead of jets new.
|
|
37
|
+
Rake::Task['webpacker:install'].enhance do
|
|
38
|
+
# FORCE from rake webpacker:install FORCE=1
|
|
39
|
+
# using ENV because rake webpacker:install is a rake task
|
|
40
|
+
args ||= []
|
|
41
|
+
args += ["--force"] if ENV['FORCE']
|
|
42
|
+
Jets::Commands::WebpackerTemplate.start(args)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Jets::Commands::Runner
|
|
2
|
+
def self.run(code)
|
|
3
|
+
if code =~ %r{^file://}
|
|
4
|
+
path = code.sub('file://', '')
|
|
5
|
+
full_path = "#{Jets.root}/#{path}"
|
|
6
|
+
if File.exist?(full_path)
|
|
7
|
+
code = IO.read(full_path)
|
|
8
|
+
else
|
|
9
|
+
puts "ERROR: file not found at #{full_path}".color(:red)
|
|
10
|
+
exit 1
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
eval(code) # inline script
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'thor'
|
|
3
|
+
require 'bundler'
|
|
4
|
+
|
|
5
|
+
class Jets::Commands::Sequence < Thor::Group
|
|
6
|
+
include Thor::Actions
|
|
7
|
+
|
|
8
|
+
def self.source_root
|
|
9
|
+
File.expand_path("templates/skeleton", File.dirname(__FILE__))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
def clone_project
|
|
14
|
+
unless git_installed?
|
|
15
|
+
abort "Unable to detect git installation on your system. Git needs to be installed in order to use the --repo option."
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if File.exist?(project_folder)
|
|
19
|
+
abort "The folder #{project_folder} already exists."
|
|
20
|
+
else
|
|
21
|
+
run "git clone https://github.com/#{options[:repo]} #{project_folder}"
|
|
22
|
+
end
|
|
23
|
+
confirm_jets_project
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def confirm_jets_project
|
|
27
|
+
jets_project = File.exist?("#{project_folder}/config/application.rb")
|
|
28
|
+
unless jets_project
|
|
29
|
+
puts "#{options[:repo]} does not look like a Jets project. Double check your repo!".color(:red)
|
|
30
|
+
exit 1
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def copy_project
|
|
35
|
+
puts "Creating a new Jets project called #{@project_name}."
|
|
36
|
+
directory ".", project_folder, copy_options
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def copy_options
|
|
40
|
+
excludes = case @options[:mode]
|
|
41
|
+
when 'job'
|
|
42
|
+
# For job mode: list of words to include in the exclude pattern and will not be generated.
|
|
43
|
+
%w[
|
|
44
|
+
Procfile
|
|
45
|
+
controllers
|
|
46
|
+
helpers
|
|
47
|
+
javascript
|
|
48
|
+
models/application_
|
|
49
|
+
views
|
|
50
|
+
config.ru
|
|
51
|
+
database.yml
|
|
52
|
+
dynamodb.yml
|
|
53
|
+
routes
|
|
54
|
+
db/
|
|
55
|
+
spec
|
|
56
|
+
yarn
|
|
57
|
+
public
|
|
58
|
+
]
|
|
59
|
+
when 'api'
|
|
60
|
+
%w[
|
|
61
|
+
views
|
|
62
|
+
]
|
|
63
|
+
else # html
|
|
64
|
+
[]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
unless @database
|
|
68
|
+
# Do not even generate the config/database.yml because
|
|
69
|
+
# Jets webpacker:install bombs and tries to load the db since it sees a
|
|
70
|
+
# config/database.yml but there's no database pg gem configured.
|
|
71
|
+
excludes += %w[
|
|
72
|
+
database.yml
|
|
73
|
+
models/application_record
|
|
74
|
+
]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
if excludes.empty?
|
|
78
|
+
{}
|
|
79
|
+
else
|
|
80
|
+
pattern = Regexp.new(excludes.join('|'))
|
|
81
|
+
{exclude_pattern: pattern }
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def git_installed?
|
|
86
|
+
system("type git > /dev/null 2>&1")
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# In order to automatically create first commit
|
|
90
|
+
# the user needs to have their credentials set
|
|
91
|
+
def git_credentials_set?
|
|
92
|
+
configs = `git config --list`.split("\n")
|
|
93
|
+
configs.any? { |c| c.start_with? 'user.name=' } && configs.any? { |c| c.start_with? 'user.email=' }
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def yarn_installed?
|
|
97
|
+
system("type yarn > /dev/null 2>&1")
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# The important methods in this class are stack_type, s3_bucket and first_run?
|
|
2
|
+
# We use stack_type and s3_bucket to get info for both the build and deploy CLI
|
|
3
|
+
# commands.
|
|
4
|
+
# first_run? will always make an API call.
|
|
5
|
+
module Jets::Commands::StackInfo
|
|
6
|
+
include Jets::AwsServices
|
|
7
|
+
|
|
8
|
+
def stack_type
|
|
9
|
+
first_run? ? :minimal : :full
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def s3_bucket
|
|
13
|
+
return @s3_bucket if @s3_bucket
|
|
14
|
+
|
|
15
|
+
return nil if first_run?
|
|
16
|
+
|
|
17
|
+
resp = cfn.describe_stacks(stack_name: parent_stack_name)
|
|
18
|
+
output = resp.stacks[0].outputs.find {|o| o.output_key == 'S3Bucket'}
|
|
19
|
+
@s3_bucket = output.output_value # once an s3 bucket is found, cache it
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Always call API
|
|
23
|
+
def first_run?
|
|
24
|
+
!stack_exists?(parent_stack_name)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def parent_stack_name
|
|
28
|
+
Jets::Naming.parent_stack_name
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pack
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
source "https://rubygems.org"
|
|
2
|
+
|
|
3
|
+
gem "jets"
|
|
4
|
+
|
|
5
|
+
<% if @webpacker -%>
|
|
6
|
+
# Include webpacker if you are you are building html pages
|
|
7
|
+
gem "webpacker", git: "https://github.com/tongueroo/webpacker.git", branch: "jets"
|
|
8
|
+
<% end -%>
|
|
9
|
+
<% if @database == 'postgresql' %>
|
|
10
|
+
# Include pg gem if you are using ActiveRecord, remove next line
|
|
11
|
+
# and config/database.yml file if you are not
|
|
12
|
+
gem "pg", "~> 1.1.3"
|
|
13
|
+
<% elsif @database == 'mysql' %>
|
|
14
|
+
# Include mysql2 gem if you are using ActiveRecord, remove next line
|
|
15
|
+
# and config/database.yml file if you are not
|
|
16
|
+
gem "mysql2", "~> 0.5.2"
|
|
17
|
+
<% end %>
|
|
18
|
+
<% unless options[:mode] == 'job' -%>
|
|
19
|
+
gem "dynomite"
|
|
20
|
+
<% end -%>
|
|
21
|
+
|
|
22
|
+
group :development, :test do
|
|
23
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
|
24
|
+
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
|
|
25
|
+
<% unless options[:mode] == 'job' -%>
|
|
26
|
+
gem 'shotgun'
|
|
27
|
+
gem 'rack'
|
|
28
|
+
gem 'puma'
|
|
29
|
+
<% end -%>
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
group :test do
|
|
33
|
+
gem 'rspec' # rspec test group only or we get the "irb: warn: can't alias context from irb_context warning" when starting jets console
|
|
34
|
+
<% unless options[:mode] == 'job' -%>
|
|
35
|
+
gem 'launchy'
|
|
36
|
+
gem 'capybara'
|
|
37
|
+
<% end -%>
|
|
38
|
+
end
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
local: dynamodb-local # port 8000
|
|
2
|
+
admin: env AWS_ACCESS_KEY_ID=$DYNAMODB_ADMIN_AWS_ACCESS_KEY_ID PORT=8001 dynamodb-admin # port 8001
|
|
3
|
+
# web: jets server # port 8888
|
|
4
|
+
|
|
5
|
+
# Using Procfile to just start local dynamodb services for now.
|
|
6
|
+
# To start jets server for now use:
|
|
7
|
+
# jets server
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Jets Project
|
|
2
|
+
|
|
3
|
+
This README would normally document whatever steps are necessary to get the application up and running.
|
|
4
|
+
|
|
5
|
+
Things you might want to cover:
|
|
6
|
+
|
|
7
|
+
* Dependencies
|
|
8
|
+
* Configuration
|
|
9
|
+
* Database setup
|
|
10
|
+
* How to run the test suite
|
|
11
|
+
* Deployment instructions
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
6
|
+
<meta name="theme-color" content="#000000">
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
8
|
+
<title>Jets App</title>
|
|
9
|
+
<%%= javascript_pack_tag "application" %>
|
|
10
|
+
<%%= stylesheet_pack_tag "theme" %>
|
|
11
|
+
<link rel="shortcut icon" href="<%%= favicon_path %>">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<section class="starter">
|
|
15
|
+
<div class="container">
|
|
16
|
+
<div class="row">
|
|
17
|
+
<div class="col-md-9 content-body">
|
|
18
|
+
<%% if @title %><h1><%%= @title %></h1><%% end %>
|
|
19
|
+
<%%= yield %>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</section>
|
|
24
|
+
</body>
|
|
25
|
+
</html>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Jets.application.configure do
|
|
2
|
+
config.project_name = "<%= @project_name %>"
|
|
3
|
+
config.mode = "<%= @options[:mode] %>"
|
|
4
|
+
|
|
5
|
+
<% if @options[:mode] == 'job' -%>
|
|
6
|
+
config.prewarm.enable = false
|
|
7
|
+
<% else -%>
|
|
8
|
+
config.prewarm.enable = true # default is true
|
|
9
|
+
# config.prewarm.rate = '30 minutes' # default is '30 minutes'
|
|
10
|
+
# config.prewarm.concurrency = 2 # default is 2
|
|
11
|
+
# config.prewarm.public_ratio = 3 # default is 3
|
|
12
|
+
<% end -%>
|
|
13
|
+
|
|
14
|
+
# config.env_extra = 2 # can also set this with JETS_ENV_EXTRA
|
|
15
|
+
# config.extra_autoload_paths = []
|
|
16
|
+
|
|
17
|
+
# config.asset_base_url = 'https://cloudfront.domain.com/assets' # example
|
|
18
|
+
|
|
19
|
+
# config.cors = true # for '*'' # defaults to false
|
|
20
|
+
# config.cors = '*.mydomain.com' # for specific domain
|
|
21
|
+
|
|
22
|
+
# config.function.timeout = 30 # defaults to 30
|
|
23
|
+
# config.function.role = "arn:aws:iam::#{Jets.aws.account}:role/service-role/pre-created"
|
|
24
|
+
# config.function.memory_size = 1536
|
|
25
|
+
|
|
26
|
+
# config.api.endpoint_type = 'PRIVATE' # Default is 'EDGE' (https://docs.aws.amazon.com/apigateway/api-reference/link-relation/restapi-create/#endpointConfiguration)
|
|
27
|
+
|
|
28
|
+
# config.function.environment = {
|
|
29
|
+
# global_app_key1: "global_app_value1",
|
|
30
|
+
# global_app_key2: "global_app_value2",
|
|
31
|
+
# }
|
|
32
|
+
# More examples:
|
|
33
|
+
# config.function.dead_letter_config = { target_arn: "arn" }
|
|
34
|
+
# config.function.vpc_config = {
|
|
35
|
+
# security_group_ids: %w[sg-1 sg-2],
|
|
36
|
+
# subnet_ids: %w[subnet-1 subnet-2],
|
|
37
|
+
# }
|
|
38
|
+
# The config.function settings to the CloudFormation Lambda Function properties.
|
|
39
|
+
# http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
|
|
40
|
+
# Underscored format can be used for keys to make it look more ruby-ish.
|
|
41
|
+
|
|
42
|
+
# Assets settings
|
|
43
|
+
# The config.assets.folders are folders within the public folder that will be set
|
|
44
|
+
# to public-read on s3 and served directly. IE: public/assets public/images public/packs
|
|
45
|
+
# config.assets.folders = %w[assets images packs]
|
|
46
|
+
# config.assets.max_age = 3600 # when to expire assets
|
|
47
|
+
# config.assets.cache_control = nil # IE: "public, max-age=3600" # override max_age for more fine-grain control.
|
|
48
|
+
# config.assets.base_url = nil # IE: https://cloudfront.com/my/base/path, defaults to the s3 bucket url
|
|
49
|
+
# IE: https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1inlzkvujq8zb
|
|
50
|
+
|
|
51
|
+
# config.api.endpoint_type = 'PRIVATE' # Default is 'EDGE' https://amzn.to/2r0Iu2L
|
|
52
|
+
# config.api.authorization_type = "AWS_IAM" # default is 'NONE' https://amzn.to/2qZ7zLh
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# More info: http://rubyonjets.com/docs/routing/custom-domain/
|
|
56
|
+
# config.domain.hosted_zone_name = "example.com"
|
|
57
|
+
# us-west-2 REGIONAL endpoint - takes 2 minutes
|
|
58
|
+
# config.domain.cert_arn = "arn:aws:acm:us-west-2:112233445566:certificate/8d8919ce-a710-4050-976b-b33da991e123"
|
|
59
|
+
# us-east-1 EDGE endpoint - takes 10-15 minutes
|
|
60
|
+
# config.domain.cert_arn = "arn:aws:acm:us-east-1:112233445566:certificate/d68472ba-04f8-45ba-b9db-14f839d57123"
|
|
61
|
+
# config.domain.endpoint_type = "EDGE"
|
|
62
|
+
|
|
63
|
+
# By default logger needs to log to $stderr for CloudWatch to receive Lambda messages, but for
|
|
64
|
+
# local testing environment you may want to log these messages to 'test.log' file to keep your
|
|
65
|
+
# testing suite output readable.
|
|
66
|
+
# config.logger = Jets::Logger.new($strerr)
|
|
67
|
+
end
|