jets-fs 1.6.10
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 +73 -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 +6 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +533 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +190 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +21 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets +14 -0
- data/jets.gemspec +61 -0
- data/lib/jets.rb +71 -0
- data/lib/jets/application.rb +308 -0
- data/lib/jets/aws_info.rb +111 -0
- data/lib/jets/aws_services.rb +60 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +130 -0
- data/lib/jets/builders.rb +16 -0
- data/lib/jets/builders/code_builder.rb +379 -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 +172 -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.rb +5 -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/camelizer.rb +67 -0
- data/lib/jets/cfn.rb +6 -0
- data/lib/jets/cfn/builders.rb +20 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +58 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +80 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +82 -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 +127 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/parent_builder.rb +93 -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 +189 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +189 -0
- data/lib/jets/commands.rb +27 -0
- data/lib/jets/commands/base.rb +164 -0
- data/lib/jets/commands/build.rb +217 -0
- data/lib/jets/commands/call.rb +174 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +112 -0
- data/lib/jets/commands/call/base_guesser.rb +33 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +23 -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 +13 -0
- data/lib/jets/commands/db.rb +15 -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 +131 -0
- data/lib/jets/commands/dynamodb.rb +22 -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/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 +18 -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/rail.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 +152 -0
- data/lib/jets/commands/markdown.rb +8 -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 +45 -0
- data/lib/jets/commands/runner.rb +18 -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 +35 -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 +66 -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 +4 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +4 -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 +146 -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 +16 -0
- data/lib/jets/controller/base.rb +103 -0
- data/lib/jets/controller/callbacks.rb +62 -0
- data/lib/jets/controller/cookies.rb +40 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware.rb +5 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +119 -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 +97 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack.rb +5 -0
- data/lib/jets/controller/rack/adapter.rb +63 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +84 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +238 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/core.rb +211 -0
- data/lib/jets/core_ext/kernel.rb +56 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +39 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +41 -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/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 +153 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +62 -0
- data/lib/jets/io.rb +14 -0
- data/lib/jets/job.rb +4 -0
- data/lib/jets/job/base.rb +29 -0
- data/lib/jets/job/dsl.rb +108 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda.rb +18 -0
- data/lib/jets/lambda/dsl.rb +384 -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 +24 -0
- data/lib/jets/mega.rb +7 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +140 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +38 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +49 -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 +20 -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 +82 -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.rb +4 -0
- data/lib/jets/processors/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +59 -0
- data/lib/jets/rack_server.rb +80 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +74 -0
- data/lib/jets/resource/api_gateway.rb +9 -0
- data/lib/jets/resource/api_gateway/base_path.rb +5 -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 +78 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +60 -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 +11 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +12 -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 +123 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +26 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack.rb +7 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +29 -0
- data/lib/jets/resource/child_stack/app_class.rb +112 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +90 -0
- data/lib/jets/resource/config.rb +4 -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.rb +3 -0
- data/lib/jets/resource/events/rule.rb +31 -0
- data/lib/jets/resource/iam.rb +8 -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/lambda.rb +5 -0
- data/lib/jets/resource/lambda/function.rb +216 -0
- data/lib/jets/resource/lambda/function/environment.rb +61 -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/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +77 -0
- data/lib/jets/resource/route53.rb +3 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3.rb +17 -0
- data/lib/jets/resource/sns.rb +3 -0
- data/lib/jets/resource/sqs.rb +3 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +175 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule.rb +4 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +52 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +98 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +103 -0
- data/lib/jets/stack/builder.rb +38 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/function.rb +60 -0
- data/lib/jets/stack/main.rb +5 -0
- data/lib/jets/stack/main/dsl.rb +33 -0
- data/lib/jets/stack/main/extensions/base.rb +45 -0
- data/lib/jets/stack/main/extensions/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/extensions/lambda.rb +71 -0
- data/lib/jets/stack/main/extensions/sns.rb +12 -0
- data/lib/jets/stack/main/extensions/sqs.rb +36 -0
- data/lib/jets/stack/output.rb +38 -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 +38 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +32 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +30 -0
- data/lib/jets/turbo.rb +47 -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/rail.rb +113 -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 +859 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'rack/request'
|
|
2
|
+
|
|
3
|
+
class Jets::Controller
|
|
4
|
+
class Request < ::Rack::Request
|
|
5
|
+
def initialize(event, context)
|
|
6
|
+
@event, @context = event, context
|
|
7
|
+
super(env)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def env
|
|
11
|
+
@env ||= Jets::Controller::Rack::Env.new(@event, @context).convert # convert to Rack env
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# When request hits the middleware Controller::Rack::Middleware::Main endpoint
|
|
15
|
+
# We set the it with the updated env since it could had been mutated down the
|
|
16
|
+
# middleware stack.
|
|
17
|
+
def set_env!(env)
|
|
18
|
+
@env = env
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# API Gateway is inconsistent about how it cases it keys.
|
|
22
|
+
# Sometimes it is "x-requested-with" vs "X-Requested-With"
|
|
23
|
+
# Normalize it with downcase.
|
|
24
|
+
def headers
|
|
25
|
+
headers = @event["headers"] || {}
|
|
26
|
+
headers.transform_keys { |key| key.downcase }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'rack/response'
|
|
2
|
+
|
|
3
|
+
class Jets::Controller
|
|
4
|
+
# The response object. See Rack::Response and Rack::Response::Helpers for
|
|
5
|
+
# more info:
|
|
6
|
+
# http://rubydoc.info/github/rack/rack/master/Rack/Response
|
|
7
|
+
# http://rubydoc.info/github/rack/rack/master/Rack/Response/Helpers
|
|
8
|
+
class Response < ::Rack::Response
|
|
9
|
+
DROP_BODY_RESPONSES = [204, 304]
|
|
10
|
+
def initialize(*)
|
|
11
|
+
super
|
|
12
|
+
# headers['Content-Type'] ||= 'text/html'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# TODO: unsure if we should even have these methods. We dont really use them.
|
|
16
|
+
def body=(value)
|
|
17
|
+
value = value.body while Rack::Response === value
|
|
18
|
+
@body = String === value ? [value.to_str] : value
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def each
|
|
22
|
+
block_given? ? super : enum_for(:each)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def finish
|
|
26
|
+
result = body
|
|
27
|
+
|
|
28
|
+
if drop_content_info?
|
|
29
|
+
headers.delete "Content-Length"
|
|
30
|
+
headers.delete "Content-Type"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
if drop_body?
|
|
34
|
+
close
|
|
35
|
+
result = []
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
if calculate_content_length?
|
|
39
|
+
# if some other code has already set Content-Length, don't muck with it
|
|
40
|
+
# currently, this would be the static file-handler
|
|
41
|
+
headers["Content-Length"] = body.inject(0) { |l, p| l + p.bytesize }.to_s
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
[status.to_i, headers, result]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def calculate_content_length?
|
|
50
|
+
headers["Content-Type"] and not headers["Content-Length"] and Array === body
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def drop_content_info?
|
|
54
|
+
status.to_i / 100 == 1 or drop_body?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def drop_body?
|
|
58
|
+
DROP_BODY_RESPONSES.include?(status.to_i)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
data/lib/jets/core.rb
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
module Jets::Core
|
|
2
|
+
extend Memoist
|
|
3
|
+
|
|
4
|
+
def application
|
|
5
|
+
Jets::Application.instance
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def config
|
|
9
|
+
application.config
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def aws
|
|
13
|
+
application.aws
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Load all application base classes and project classes
|
|
17
|
+
def boot(options={})
|
|
18
|
+
Jets::Booter.boot!(options)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def root
|
|
22
|
+
# Do not memoize this method. Turbo mode can change it
|
|
23
|
+
root = ENV['JETS_ROOT'].to_s
|
|
24
|
+
root = Dir.pwd if root == ''
|
|
25
|
+
Pathname.new(root)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def env
|
|
29
|
+
env = ENV['JETS_ENV'] || 'development'
|
|
30
|
+
ENV['RAILS_ENV'] = ENV['RACK_ENV'] = env
|
|
31
|
+
ActiveSupport::StringInquirer.new(env)
|
|
32
|
+
end
|
|
33
|
+
memoize :env
|
|
34
|
+
|
|
35
|
+
def build_root
|
|
36
|
+
"/tmp/jets/#{config.project_name}".freeze
|
|
37
|
+
end
|
|
38
|
+
memoize :build_root
|
|
39
|
+
|
|
40
|
+
def logger
|
|
41
|
+
Jets.application.config.logger
|
|
42
|
+
end
|
|
43
|
+
memoize :logger
|
|
44
|
+
|
|
45
|
+
def webpacker?
|
|
46
|
+
Gem.loaded_specs.keys.include?("webpacker")
|
|
47
|
+
end
|
|
48
|
+
memoize :webpacker?
|
|
49
|
+
|
|
50
|
+
def load_tasks
|
|
51
|
+
Jets::Commands::RakeTasks.load!
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def version
|
|
55
|
+
Jets::VERSION
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def eager_load!
|
|
59
|
+
eager_load_jets
|
|
60
|
+
eager_load_app
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Eager load jet's lib and classes
|
|
64
|
+
def eager_load_jets
|
|
65
|
+
lib_jets = File.expand_path(".", File.dirname(__FILE__))
|
|
66
|
+
Dir.glob("#{lib_jets}/**/*.rb").select do |path|
|
|
67
|
+
next if !File.file?(path)
|
|
68
|
+
next if skip_eager_load_paths?(path)
|
|
69
|
+
|
|
70
|
+
path = path.sub("#{lib_jets}/","jets/")
|
|
71
|
+
class_name = path
|
|
72
|
+
.sub(/\.rb$/,'') # remove .rb
|
|
73
|
+
.sub(/^\.\//,'') # remove ./
|
|
74
|
+
.sub(/app\/\w+\//,'') # remove app/controllers or app/jobs etc
|
|
75
|
+
.camelize
|
|
76
|
+
# special class mappings
|
|
77
|
+
class_name = class_mappings(class_name)
|
|
78
|
+
class_name.constantize # use constantize instead of require so dont have to worry about order.
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Skip these paths because eager loading doesnt work for them.
|
|
83
|
+
def skip_eager_load_paths?(path)
|
|
84
|
+
path =~ %r{/cli} ||
|
|
85
|
+
path =~ %r{/core_ext} ||
|
|
86
|
+
path =~ %r{/default/application} ||
|
|
87
|
+
path =~ %r{/functions} ||
|
|
88
|
+
path =~ %r{/internal/app} ||
|
|
89
|
+
path =~ %r{/jets/stack} ||
|
|
90
|
+
path =~ %r{/overrides} ||
|
|
91
|
+
path =~ %r{/rackup_wrappers} ||
|
|
92
|
+
path =~ %r{/reconfigure_rails} ||
|
|
93
|
+
path =~ %r{/templates/} ||
|
|
94
|
+
path =~ %r{/turbo/project/} ||
|
|
95
|
+
path =~ %r{/version} ||
|
|
96
|
+
path =~ %r{/webpacker} ||
|
|
97
|
+
path =~ %r{/jets/spec}
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def class_mappings(class_name)
|
|
101
|
+
map = {
|
|
102
|
+
"Jets::Io" => "Jets::IO",
|
|
103
|
+
}
|
|
104
|
+
map[class_name] || class_name
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Eager load user's application
|
|
108
|
+
def eager_load_app
|
|
109
|
+
Dir.glob("#{Jets.root}/app/**/*.rb").select do |path|
|
|
110
|
+
next if !File.file?(path) or path =~ %r{/javascript/} or path =~ %r{/views/}
|
|
111
|
+
next if path.include?('app/functions') || path.include?('app/shared/functions') || path.include?('app/internal/functions')
|
|
112
|
+
|
|
113
|
+
class_name = path
|
|
114
|
+
.sub(/\.rb$/,'') # remove .rb
|
|
115
|
+
.sub(%{^\./},'') # remove ./
|
|
116
|
+
.sub("#{Jets.root}/",'')
|
|
117
|
+
.sub(%r{app/shared/\w+/},'') # remove shared/resources or shared/extensions
|
|
118
|
+
.sub(%r{app/\w+/},'') # remove app/controllers or app/jobs etc
|
|
119
|
+
class_name = class_name.classify
|
|
120
|
+
class_name.constantize # use constantize instead of require so dont have to worry about order.
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# NOTE: In development this will always be 1 because the app gets reloaded.
|
|
125
|
+
# On AWS Lambda, this will be ever increasing until the container gets replaced.
|
|
126
|
+
@@call_count = 0
|
|
127
|
+
def increase_call_count
|
|
128
|
+
@@call_count += 1
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def call_count
|
|
132
|
+
@@call_count
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
@@prewarm_count = 0
|
|
136
|
+
def increase_prewarm_count
|
|
137
|
+
@@prewarm_count += 1
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def prewarm_count
|
|
141
|
+
@@prewarm_count
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def project_namespace
|
|
145
|
+
[config.project_name, config.short_env, config.env_extra].compact.join('-').gsub('_','-')
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def rack?
|
|
149
|
+
path = "#{Jets.root}/rack"
|
|
150
|
+
File.exist?(path) || File.symlink?(path)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def poly_only?
|
|
154
|
+
return true if ENV['JETS_POLY_ONLY'] # bypass to allow rapid development of handlers
|
|
155
|
+
Jets::Commands::Build.poly_only?
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def report_exception(exception)
|
|
159
|
+
puts "DEPRECATED: report_exception. Use on_exception instead.".color(:yellow)
|
|
160
|
+
on_exception(exception)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def on_exception(exception)
|
|
164
|
+
Jets::Turbine.subclasses.each do |subclass|
|
|
165
|
+
reporters = subclass.on_exceptions || []
|
|
166
|
+
reporters.each do |label, block|
|
|
167
|
+
block.call(exception)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def custom_domain?
|
|
173
|
+
Jets.config.domain.hosted_zone_name
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def process(event, context, handler)
|
|
177
|
+
if event['_prewarm']
|
|
178
|
+
Jets.increase_prewarm_count
|
|
179
|
+
Jets.logger.info("Prewarm request")
|
|
180
|
+
{prewarmed_at: Time.now.to_s}
|
|
181
|
+
else
|
|
182
|
+
Jets::Processors::MainProcessor.new(event, context, handler).run
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def once
|
|
187
|
+
boot
|
|
188
|
+
override_lambda_ruby_runtime
|
|
189
|
+
tmp_load!
|
|
190
|
+
start_rack_server
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def tmp_load!
|
|
194
|
+
Jets::TmpLoader.load!
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Megamode support
|
|
198
|
+
def start_rack_server(options={})
|
|
199
|
+
rack = Jets::RackServer.new(options)
|
|
200
|
+
rack.start
|
|
201
|
+
rack.wait_for_socket
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def default_gems_source
|
|
205
|
+
"https://gems2.lambdagems.com"
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def override_lambda_ruby_runtime
|
|
209
|
+
require "jets/overrides/lambda"
|
|
210
|
+
end
|
|
211
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Works with io.rb
|
|
2
|
+
# IO.flush # flush output and write to disk for node shim
|
|
3
|
+
module Kernel
|
|
4
|
+
JETS_OUTPUT = "/tmp/jets-output.log"
|
|
5
|
+
@@io_buffer = []
|
|
6
|
+
|
|
7
|
+
# List from https://ruby-doc.org/core-2.5.1/Kernel.html
|
|
8
|
+
# Note, will lose pp format in the @io_buffer but looks like a lot of work to keep the pp format.
|
|
9
|
+
# Must override stdout which can be messy quick: https://www.ruby-forum.com/topic/43725
|
|
10
|
+
OVERRIDE_METHODS = %w[
|
|
11
|
+
p
|
|
12
|
+
pp
|
|
13
|
+
print
|
|
14
|
+
printf
|
|
15
|
+
putc
|
|
16
|
+
puts
|
|
17
|
+
]
|
|
18
|
+
# NOTE adding sprintf produces #<%s: %s:%s/%s> with puma? So not including sprintf
|
|
19
|
+
OVERRIDE_METHODS.each do |meth|
|
|
20
|
+
# Example of generated code:
|
|
21
|
+
#
|
|
22
|
+
# alias_method :original_puts, :puts
|
|
23
|
+
# def puts(*args, &block)
|
|
24
|
+
# @@io_buffer << args.first # message
|
|
25
|
+
# original_puts(*args, &block)
|
|
26
|
+
# end
|
|
27
|
+
#
|
|
28
|
+
class_eval <<~CODE
|
|
29
|
+
alias_method :original_#{meth}, :#{meth}
|
|
30
|
+
def #{meth}(*args, &block)
|
|
31
|
+
@@io_buffer << args.first # message
|
|
32
|
+
original_#{meth}(*args, &block)
|
|
33
|
+
end
|
|
34
|
+
CODE
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def io_buffer
|
|
38
|
+
@@io_buffer
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Note: Writing binary data to the log will crash the process with an error like this:
|
|
42
|
+
# jets/lib/jets/core_ext/kernel.rb:20:in `write': "\x89" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
|
|
43
|
+
# Rescue and discard it to keep the process alive.
|
|
44
|
+
def io_flush
|
|
45
|
+
chunk = @@io_buffer.join("\n")
|
|
46
|
+
chunk += "\n" unless chunk == ''
|
|
47
|
+
begin
|
|
48
|
+
# since we always append to the file, the node shim is responsible for truncating the file
|
|
49
|
+
IO.write(JETS_OUTPUT, chunk, mode: 'a') if chunk
|
|
50
|
+
# Writing to log with binary content will crash the process so rescuing it and writing an info message.
|
|
51
|
+
rescue Encoding::UndefinedConversionError
|
|
52
|
+
IO.write(JETS_OUTPUT, "[BINARY DATA]\n", mode: 'a')
|
|
53
|
+
end
|
|
54
|
+
@@io_buffer = []
|
|
55
|
+
end
|
|
56
|
+
end
|
data/lib/jets/db.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Jets::Db ; end
|
|
2
|
+
|
|
3
|
+
# Thanks: https://makandracards.com/makandra/42521-detecting-if-a-ruby-gem-is-loaded
|
|
4
|
+
if File.exist?("#{Jets.root}/config/database.yml")
|
|
5
|
+
require "active_record"
|
|
6
|
+
specs = Gem.loaded_specs
|
|
7
|
+
require "mysql2" if specs.key?('mysql2')
|
|
8
|
+
require "pg" if specs.key?('pg')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
if File.exist?("#{Jets.root}/config/dynamodb.yml")
|
|
12
|
+
specs = Gem.loaded_specs
|
|
13
|
+
specs.key?('dynomite')
|
|
14
|
+
require "dynomite" if specs.key?('dynomite')
|
|
15
|
+
end
|
data/lib/jets/dotenv.rb
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'dotenv'
|
|
2
|
+
|
|
3
|
+
class Jets::Dotenv
|
|
4
|
+
def self.load!(remote=false)
|
|
5
|
+
new(remote).load!
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def initialize(remote=false)
|
|
9
|
+
@remote = remote
|
|
10
|
+
@remote = ENV['JETS_ENV_REMOTE'] if ENV['JETS_ENV_REMOTE']
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def load!
|
|
14
|
+
::Dotenv.load(*dotenv_files)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# dotenv files with the following precedence:
|
|
18
|
+
#
|
|
19
|
+
# - .env.development.remote (highest)
|
|
20
|
+
# - .env.development.local
|
|
21
|
+
# - .env.development
|
|
22
|
+
# - .env.local - This file is loaded for all environments _except_ `test`.
|
|
23
|
+
# - .env` - The original (lowest)
|
|
24
|
+
#
|
|
25
|
+
def dotenv_files
|
|
26
|
+
files = [
|
|
27
|
+
root.join(".env"),
|
|
28
|
+
(root.join(".env.local") unless Jets.env.test?),
|
|
29
|
+
root.join(".env.#{Jets.env}"),
|
|
30
|
+
root.join(".env.#{Jets.env}.local"),
|
|
31
|
+
]
|
|
32
|
+
files << root.join(".env.#{Jets.env}.remote") if @remote
|
|
33
|
+
files.reverse.compact # reverse so the precedence is right
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def root
|
|
37
|
+
Jets.root || Pathname.new(ENV["JETS_ROOT"] || Dir.pwd)
|
|
38
|
+
end
|
|
39
|
+
end
|
data/lib/jets/erb.rb
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
|
|
3
|
+
# Renders Erb and provide better backtrace where there's an error
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
#
|
|
7
|
+
# result = Jets::Erb.result(path, key1: "val1", key2: "val2")
|
|
8
|
+
#
|
|
9
|
+
class Jets::Erb
|
|
10
|
+
class << self
|
|
11
|
+
def result(path, variables={})
|
|
12
|
+
set_template_variables(variables)
|
|
13
|
+
template = IO.read(path)
|
|
14
|
+
begin
|
|
15
|
+
ERB.new(template, nil, "-").result(binding)
|
|
16
|
+
rescue Exception => e
|
|
17
|
+
puts e
|
|
18
|
+
puts e.backtrace if ENV['JETS_DEBUG']
|
|
19
|
+
|
|
20
|
+
# how to know where ERB stopped? - https://www.ruby-forum.com/topic/182051
|
|
21
|
+
# syntax errors have the (erb):xxx info in e.message
|
|
22
|
+
# undefined variables have (erb):xxx info in e.backtrac
|
|
23
|
+
error_info = e.message.split("\n").grep(/\(erb\)/)[0]
|
|
24
|
+
error_info ||= e.backtrace.grep(/\(erb\)/)[0]
|
|
25
|
+
raise unless error_info # unable to find the (erb):xxx: error line
|
|
26
|
+
line = error_info.split(':')[1].to_i
|
|
27
|
+
puts "Error evaluating ERB template on line #{line.to_s.color(:red)} of: #{path.sub(/^\.\//, '').color(:green)}"
|
|
28
|
+
|
|
29
|
+
template_lines = template.split("\n")
|
|
30
|
+
context = 5 # lines of context
|
|
31
|
+
top, bottom = [line-context-1, 0].max, line+context-1
|
|
32
|
+
spacing = template_lines.size.to_s.size
|
|
33
|
+
template_lines[top..bottom].each_with_index do |line_content, index|
|
|
34
|
+
line_number = top+index+1
|
|
35
|
+
if line_number == line
|
|
36
|
+
printf("%#{spacing}d %s\n".color(:red), line_number, line_content)
|
|
37
|
+
else
|
|
38
|
+
printf("%#{spacing}d %s\n", line_number, line_content)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
exit 1 unless ENV['TEST']
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def set_template_variables(variables)
|
|
46
|
+
variables.each do |key, value|
|
|
47
|
+
instance_variable_set(:"@#{key}", value)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|