jets_bb_fork 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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,19 @@
|
|
1
|
+
module Jets::Commands
|
2
|
+
class Dynamodb < Jets::Commands::Base
|
3
|
+
desc "migrate [path]", "Runs migrations"
|
4
|
+
long_desc Help.text('dynamodb:migrate')
|
5
|
+
def migrate(path)
|
6
|
+
Migrator.new(path, options).run
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "generate [name]", "Creates a migration for a DynamoDB table"
|
10
|
+
long_desc Help.text('dynamodb:generate')
|
11
|
+
option :partition_key, default: "id:string:hash", desc: "table's partition key"
|
12
|
+
option :sort_key, default: nil, desc: "table's sort key"
|
13
|
+
option :table_name, desc: "override the the conventional table name"
|
14
|
+
option :table_action, desc: "create_table or update_table. Defaults to convention based on the name of the migration."
|
15
|
+
def generate(name)
|
16
|
+
Dynomite::Migration::Generator.new(name, options).generate
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class Jets::Commands::Dynamodb::Migrate < Jets::Commands::Base
|
2
|
+
desc "down", "Runs migrations down"
|
3
|
+
# desc "migrate:down [path]", "Runs migrations down"
|
4
|
+
# long_desc Help.migrate
|
5
|
+
def down#(path)
|
6
|
+
# Migrate.new(path, options).run
|
7
|
+
puts "Jets::Commands::Dynamodb::Down ran"
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
begin
|
2
|
+
require "dynomite"
|
3
|
+
rescue LoadError # Commands::Base.eager_load
|
4
|
+
nil
|
5
|
+
end
|
6
|
+
|
7
|
+
class Jets::Commands::Dynamodb::Migrator
|
8
|
+
def initialize(path, options)
|
9
|
+
@path = path
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
puts "Running database migrations"
|
15
|
+
return if @options[:noop]
|
16
|
+
migrate
|
17
|
+
end
|
18
|
+
|
19
|
+
def migrate
|
20
|
+
path = "#{Jets.root}/#{@path}"
|
21
|
+
unless File.exist?(path)
|
22
|
+
puts "Unable to find the migration file: #{path}"
|
23
|
+
exit 1 unless ENV['TEST']
|
24
|
+
end
|
25
|
+
|
26
|
+
require path
|
27
|
+
migration_class = get_migration_class
|
28
|
+
migration_class.new.up
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_migration_class
|
32
|
+
filename = File.basename(@path, '.rb')
|
33
|
+
filename = filename.sub(/\d+[-_]/, '') # strip leading timestsamp
|
34
|
+
filename.camelize.constantize
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Jets::Commands
|
2
|
+
class Gems < Jets::Commands::Base
|
3
|
+
desc "check", "Check if pre-built Lambda gems are available from the sources"
|
4
|
+
long_desc Help.text("gems:check")
|
5
|
+
def check
|
6
|
+
check = Jets::Gems::Check.new(cli: true)
|
7
|
+
check.run! # exits early if missing gems found
|
8
|
+
# If reach here, means all gems are ok.
|
9
|
+
puts "Congrats! All gems are available in as pre-built Lambda gems 👍"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "sources", "List pre-built Lambda gem sources"
|
13
|
+
long_desc Help.text("gems:sources")
|
14
|
+
def sources
|
15
|
+
puts "Your pre-built Lambda gem sources are:"
|
16
|
+
Jets.config.gems.sources.each do |source|
|
17
|
+
puts " #{source}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
Builds a zip file package to be uploaded to AWS Lambda. This allows you to build the project without deploying and inspect the zip file that gets deployed to AWS Lambda. The package contains:
|
2
|
+
|
3
|
+
* your application code
|
4
|
+
* generated shims
|
5
|
+
|
6
|
+
If the application has no Ruby code and only uses Polymorphic functions, then gems are not bundled up.
|
@@ -0,0 +1,61 @@
|
|
1
|
+
## Remote mode
|
2
|
+
|
3
|
+
Invoke the lambda function on AWS. The `jets call` command does a few extra things for your convenience:
|
4
|
+
|
5
|
+
It adds the function namespace to the function name. So, you pass in `posts_controller-index` and the Lambda function is `demo-dev-posts_controller-index`.
|
6
|
+
|
7
|
+
CLI Name | Lambda Function
|
8
|
+
--- | ---
|
9
|
+
posts_controller-index | demo-dev-posts_controller-index
|
10
|
+
|
11
|
+
The `jets call` command can also print out the last 4KB of the lambda logs with the `--show-logs` option. The logging output is directed to stderr and the response output from the lambda function itself is directed to stdout so you can safely pipe the results of the call command to other tools like `jq`.
|
12
|
+
|
13
|
+
For [controllers](http://rubyonjets.com/docs/controllers/), the event you pass at the CLI is automatically transformed into [Lambda Proxy](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html) payload that contains the params as the `queryStringParameters`. For example:
|
14
|
+
|
15
|
+
{"test":1}
|
16
|
+
|
17
|
+
Gets changed to:
|
18
|
+
|
19
|
+
{"queryStringParameters":{"test":1}}
|
20
|
+
|
21
|
+
This spares you from assembling the event payload manually to the payload that Jets controllers normally receive. If you would like to disable this Lambda Proxy transformation then use the `--no-lambda-proxy` flag.
|
22
|
+
|
23
|
+
For [jobs](http://rubyonjets.com/docs/jobs/), the event is passed through untouched.
|
24
|
+
|
25
|
+
## Examples
|
26
|
+
|
27
|
+
jets call hard_job-drive '{"test":1}'
|
28
|
+
jets call hard_job-drive '{"test":1}' | jq .
|
29
|
+
jets call hard_job-drive file://event.json | jq . # load event with a file
|
30
|
+
jets call posts_controller-index # event payload is optional
|
31
|
+
jets call posts_controller-index '{"path":"/posts"}' --show-log | jq .
|
32
|
+
jets call posts_controller-index 'file://event.json' --show-log | jq .
|
33
|
+
|
34
|
+
The equivalent AWS Lambda CLI command:
|
35
|
+
|
36
|
+
aws lambda invoke --function-name demo-dev-hard_job-dig --payload '{"path":"/posts","test":1}' outfile.txt
|
37
|
+
cat outfile.txt | jq '.'
|
38
|
+
|
39
|
+
aws lambda invoke --function-name demo-dev-posts_controller-index --payload '{"queryStringParameters":{"path":"/posts",test":1}}' outfile.txt
|
40
|
+
cat outfile.txt | jq '.'
|
41
|
+
|
42
|
+
For convenience, you can also provide the function name with only dashes and `jets call` figures out what function you intend to call. Examples:
|
43
|
+
|
44
|
+
jets call posts-controller-index
|
45
|
+
jets call admin-related-pages-controller-index
|
46
|
+
|
47
|
+
Are the same as:
|
48
|
+
|
49
|
+
aws lambda invoke --function-name demo-dev-posts_controller-index
|
50
|
+
aws lambda invoke --function-name demo-dev-admin/related_pages_controller-index
|
51
|
+
|
52
|
+
Jets figures out what functions to call by evaluating the app code and finds if the controller and method exists. If you want to turn guess mode off and want to always explicitly provide the method name use the `--no-guess` option. The function name will then have to match the lambda function without the namespace. Example:
|
53
|
+
|
54
|
+
jets call admin-related_pages_controller-index --no-guess
|
55
|
+
|
56
|
+
## Local mode
|
57
|
+
|
58
|
+
Instead of calling AWS lambda remote, you can also have `jets call` use the code directly on your machine. To enable this, use the `--local` flag. Example:
|
59
|
+
|
60
|
+
jets call hard_job-drive --local
|
61
|
+
|
@@ -0,0 +1,5 @@
|
|
1
|
+
Removes the build files that jets creates. Essentially, deletes `/tmp/jets`. This will remove all build files for all jets projects. This is safe as jets uses `/tmp/jets` merely as a cache to speed up incrementally builds. Cleaning this out can clean up cruft in the `/tmp/jets` directory that builds over time.
|
2
|
+
|
3
|
+
## Example
|
4
|
+
|
5
|
+
jets clean:build
|
@@ -0,0 +1,18 @@
|
|
1
|
+
## Example
|
2
|
+
|
3
|
+
$ jets console
|
4
|
+
>> Post.table_name
|
5
|
+
=> "posts"
|
6
|
+
>> ActiveRecord::Base.connection.tables
|
7
|
+
=> ["schema_migrations", "ar_internal_metadata", "posts"]
|
8
|
+
>> Jets.env
|
9
|
+
=> "development"
|
10
|
+
>>
|
11
|
+
|
12
|
+
## Use .env.development.remote
|
13
|
+
|
14
|
+
To use the remote values also in the `jets console` you can use the `JETS_ENV_REMOTE=1` env variable. Example:
|
15
|
+
|
16
|
+
JETS_ENV_REMOTE=1 jets console
|
17
|
+
|
18
|
+
More info at [Env Files](http://rubyonjets.com/docs/env-files/)
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Generates migration in `db/migrate`
|
2
|
+
|
3
|
+
## Examples
|
4
|
+
|
5
|
+
jets db:generate create_articles title:string user_id:integer
|
6
|
+
jets db:generate AddTitleBodyToPost title:string body:text published:boolean
|
7
|
+
|
8
|
+
This task delegates to Rails `rails generate migration`. For more examples, refer to the [Active Record Migrations Rails Guide](https://edgeguides.rubyonrails.org/active_record_migrations.html).
|
@@ -0,0 +1,22 @@
|
|
1
|
+
This deletes the all the contents in the internal s3 bucket that jets uses and the associated CloudFormation stacks.
|
2
|
+
|
3
|
+
## Examples
|
4
|
+
|
5
|
+
$ jets delete
|
6
|
+
Deleting project...
|
7
|
+
Are you sure you want to want to delete the 'demo-dev' project? (y/N)
|
8
|
+
y
|
9
|
+
First, deleting objects in s3 bucket demo-dev-s3bucket-89jrrj60c7bj
|
10
|
+
Deleting demo-dev...
|
11
|
+
05:14:09AM DELETE_IN_PROGRESS AWS::CloudFormation::Stack demo-dev User Initiated
|
12
|
+
...
|
13
|
+
05:14:23AM DELETE_IN_PROGRESS AWS::CloudFormation::Stack PostsController
|
14
|
+
05:15:31AM DELETE_COMPLETE AWS::S3::Bucket S3Bucket
|
15
|
+
Stack demo-dev deleted.
|
16
|
+
Time took for deletion: 1m 27s.
|
17
|
+
Project demo-dev deleted!
|
18
|
+
$
|
19
|
+
|
20
|
+
You can bypass the are you sure prompt with the `--sure` flag.
|
21
|
+
|
22
|
+
$ jets delete --sure
|
@@ -0,0 +1,32 @@
|
|
1
|
+
This builds the project and deploys it AWS Lambda. The deployment is mainly handled by CloudFormation. To check on the status of the deploy you can also check the CloudFormation console.
|
2
|
+
|
3
|
+
![](http://rubyonjets.com/img/cli/deploy-cloudformation-status.png)
|
4
|
+
|
5
|
+
## Example
|
6
|
+
|
7
|
+
$ jets deploy
|
8
|
+
Deploying to Lambda demo-dev environment...
|
9
|
+
=> Compling assets in current project directory
|
10
|
+
=> Copying current project directory to temporary build area: /tmp/jets/demo/app_root
|
11
|
+
=> Tidying project: removing ignored files to reduce package size.
|
12
|
+
=> Generating node shims in the handlers folder.
|
13
|
+
=> Bundling: running bundle install in cache area: /tmp/jets/demo/cache.
|
14
|
+
=> Setting up a vendored copy of ruby.
|
15
|
+
=> Replacing compiled gems with AWS Lambda Linux compiled versions.
|
16
|
+
Creating zip file.
|
17
|
+
=> cd /tmp/jets/demo/app_root && zip --symlinks -rq /tmp/jets/demo/code/code-temp.zip .
|
18
|
+
Building CloudFormation templates.
|
19
|
+
Deploying CloudFormation stack with jets app!
|
20
|
+
Uploading /tmp/jets/demo/code/code-7169d0ac.zip (88.8 MB) to S3
|
21
|
+
Time to upload code to s3: 1s
|
22
|
+
Deploying CloudFormation stack with jets app!
|
23
|
+
02:08:20AM UPDATE_IN_PROGRESS AWS::CloudFormation::Stack demo-dev User Initiated
|
24
|
+
02:08:23AM CREATE_IN_PROGRESS AWS::CloudFormation::Stack ApiGateway
|
25
|
+
...
|
26
|
+
02:08:48AM CREATE_IN_PROGRESS AWS::CloudFormation::Stack PostsController
|
27
|
+
02:10:03AM UPDATE_COMPLETE AWS::CloudFormation::Stack demo-dev
|
28
|
+
Stack success status: UPDATE_COMPLETE
|
29
|
+
Time took for stack deployment: 1m 46s.
|
30
|
+
Prewarming application.
|
31
|
+
API Gateway Endpoint: https://ewwnealfk0.execute-api.us-west-2.amazonaws.com/dev/
|
32
|
+
$
|
@@ -0,0 +1,16 @@
|
|
1
|
+
This piggy backs off of the [rails scaffold destroy](https://guides.rubyonrails.org/command_line.html#rails-destroy).
|
2
|
+
|
3
|
+
## Example
|
4
|
+
|
5
|
+
$ jets destroy scaffold Post title:string body:text published:boolean
|
6
|
+
invoke active_record
|
7
|
+
remove db/migrate/20190225231821_create_posts.rb
|
8
|
+
remove app/models/post.rb
|
9
|
+
invoke resource_route
|
10
|
+
route resources :posts
|
11
|
+
invoke scaffold_controller
|
12
|
+
remove app/controllers/posts_controller.rb
|
13
|
+
invoke erb
|
14
|
+
invoke helper
|
15
|
+
remove app/helpers/posts_helper.rb
|
16
|
+
$
|
@@ -0,0 +1,52 @@
|
|
1
|
+
Generates a migration file which can be used to create a DynamoDB table. To run the migration file use `jets dynamodb:migrate`.
|
2
|
+
|
3
|
+
The table name will have a namespace. For example, if your project is called `demo`, the environment is `development`, and you create a table called `posts`. The DynamoDB full table name will be `demo-dev-posts`. You can change this behavior by editing your `config/dynamodb.yml` and adjusting the `table_namespace` value.
|
4
|
+
|
5
|
+
DynamoDB tables support certain types of attribute types. The CLI will parse the `--partition-key` option and use the second part of the option to map it to the underlying DynamoDB type using this mapping.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
ATTRIBUTE_TYPE_MAP = {
|
9
|
+
'string' => 'S',
|
10
|
+
'number' => 'N',
|
11
|
+
'binary' => 'B',
|
12
|
+
's' => 'S',
|
13
|
+
'n' => 'N',
|
14
|
+
'b' => 'B',
|
15
|
+
}
|
16
|
+
```
|
17
|
+
|
18
|
+
For example, `--partition-key id:string` maps 'string' to 's'. More info on DynamoDB types is available at the ruby aws-sdk docs: [Aws::DynamoDB::Types::AttributeDefinition](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/DynamoDB/Types/AttributeDefinition.html)
|
19
|
+
|
20
|
+
## Examples
|
21
|
+
|
22
|
+
$ jets dynamodb:generate create_posts --partition-key id # default attribute type is string
|
23
|
+
$ jets dynamodb:generate create_posts --partition-key id:number # attribute type will be number
|
24
|
+
$ jets dynamodb:generate create_comments --partition-key post_id:string --sort-key created_at:string
|
25
|
+
|
26
|
+
## Running migrations
|
27
|
+
|
28
|
+
$ jets dynamodb:migrate path/to/migration
|
29
|
+
$ jets dynamodb:migrate dynamodb/migrate/20171112162404-create_articles_migration.rb
|
30
|
+
|
31
|
+
To add global secondary indexes:
|
32
|
+
|
33
|
+
$ jets dynamodb:generate update_comments --partition-key user_id:string --sort-key created_at:string
|
34
|
+
|
35
|
+
To run:
|
36
|
+
|
37
|
+
$ jets dynamodb:migrate dynamodb/migrate/20171112161530-create_posts_migration.rb
|
38
|
+
|
39
|
+
## Conventions
|
40
|
+
|
41
|
+
A create_table or update_table migration file is generated based name you provide. If `update` is included in the name then an update_table migration table is generated. If `create` is included in the name then a create_table migration table is generated.
|
42
|
+
|
43
|
+
The table_name is also inferred from the migration name you provide. Examples:
|
44
|
+
|
45
|
+
$ jets dynamodb:generate create_posts # table_name: posts
|
46
|
+
$ jets dynamodb:generate update_comments # table_name: comments
|
47
|
+
|
48
|
+
You can override both of these conventions:
|
49
|
+
|
50
|
+
$ jets dynamodb:generate create_my_posts --table-name posts
|
51
|
+
$ jets dynamodb:generate my_posts --table-action create_table --table-name posts
|
52
|
+
$ jets dynamodb:generate my_posts --table-action update_table --table-name posts
|
@@ -0,0 +1,22 @@
|
|
1
|
+
This piggy backs off of the [rails scaffold generator](https://guides.rubyonrails.org/command_line.html#rails-generate).
|
2
|
+
|
3
|
+
## Example
|
4
|
+
|
5
|
+
$ jets generate scaffold post title:string body:text published:boolean
|
6
|
+
invoke active_record
|
7
|
+
create db/migrate/20180817052529_create_posts.rb
|
8
|
+
create app/models/post.rb
|
9
|
+
invoke resource_route
|
10
|
+
route resources :posts
|
11
|
+
invoke scaffold_controller
|
12
|
+
create app/controllers/posts_controller.rb
|
13
|
+
invoke erb
|
14
|
+
create app/views/posts
|
15
|
+
create app/views/posts/index.html.erb
|
16
|
+
create app/views/posts/edit.html.erb
|
17
|
+
create app/views/posts/show.html.erb
|
18
|
+
create app/views/posts/new.html.erb
|
19
|
+
create app/views/posts/_form.html.erb
|
20
|
+
invoke helper
|
21
|
+
create app/helpers/posts_helper.rb
|
22
|
+
$
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Imports a generic Rack application into a Jets project and configures it for [Mega Mode](http://rubyonjets.com/docs/megamode/).
|
2
|
+
|
3
|
+
Note, generic rack projects will likely need some adjustments to take into account API Gateway stages and logging. For more info refer to [Mega Mode Considerations](http://rubyonjets.com//megamode-details/).
|
4
|
+
|
5
|
+
## Example
|
6
|
+
|
7
|
+
jets import:rack http://github.com/tongueroo/jets-mega-rails.git
|
8
|
+
|
9
|
+
## More Examples
|
10
|
+
|
11
|
+
jets import:rack tongueroo/jets-mega-rails # expands to github
|
12
|
+
jets import:rack git@github.com:tongueroo/jets-mega-rails.git
|
13
|
+
jets import:rack /path/to/folder/jets-mega-rails
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Imports a Rails application into a Jets project and configures it for [Mega Mode](http://rubyonjets.com/docs/rails-support/).
|
2
|
+
|
3
|
+
## Example
|
4
|
+
|
5
|
+
jets import:rails http://github.com/tongueroo/demo-rails.git
|
6
|
+
|
7
|
+
## More Examples
|
8
|
+
|
9
|
+
jets import:rails tongueroo/demo-rails # expands to github
|
10
|
+
jets import:rails git@github.com:tongueroo/demo-rails.git
|
11
|
+
jets import:rails /path/to/folder/jets-examples-rails
|
@@ -0,0 +1,42 @@
|
|
1
|
+
## Examples
|
2
|
+
|
3
|
+
$ jets new demo
|
4
|
+
Creating a new Jets project called demo.
|
5
|
+
create demo/app/controllers/application_controller.rb
|
6
|
+
create demo/app/helpers/application_helper.rb
|
7
|
+
create demo/app/jobs/application_job.rb
|
8
|
+
...
|
9
|
+
================================================================
|
10
|
+
Congrats You have successfully created a Jets project.
|
11
|
+
|
12
|
+
Cd into the project directory:
|
13
|
+
cd demo
|
14
|
+
|
15
|
+
To start a server and test locally:
|
16
|
+
jets server # localhost:8888 should have the Jets welcome page
|
17
|
+
|
18
|
+
Scaffold example:
|
19
|
+
jets generate scaffold post title:string body:text published:boolean
|
20
|
+
|
21
|
+
To deploy to AWS Lambda:
|
22
|
+
jets deploy
|
23
|
+
$
|
24
|
+
|
25
|
+
## Mode Option
|
26
|
+
|
27
|
+
The `--mode` is a notable option. With it, you can generate different starter Jets projects. Examples:
|
28
|
+
|
29
|
+
jets new demo --mode html # default
|
30
|
+
jets new api --mode api
|
31
|
+
jets new cron --mode job
|
32
|
+
|
33
|
+
* The html mode generates a starter app useful for html web application.
|
34
|
+
* The api mode is useful for building an API.
|
35
|
+
* The job mode creates a very lightweight project. It is useful when you just need to run a Lambda function.
|
36
|
+
|
37
|
+
## Repo Option
|
38
|
+
Use the `--repo` flag to clone an example project from GitHub instead. With this flag, jets new command clones a jets project repo from GitHub:
|
39
|
+
|
40
|
+
$ jets new blog --repo tongueroo/tutorial
|
41
|
+
$ jets new todos --repo tongueroo/todos
|
42
|
+
$ jets new whatever --repo user/repo # any github repo
|