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
data/Rakefile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
2
|
+
require "rspec/core/rake_task"
|
|
3
|
+
|
|
4
|
+
task :default => :spec
|
|
5
|
+
|
|
6
|
+
RSpec::Core::RakeTask.new
|
|
7
|
+
|
|
8
|
+
require_relative "lib/jets"
|
|
9
|
+
desc "Generates cli reference docs as markdown"
|
|
10
|
+
task :docs do
|
|
11
|
+
Jets::Commands::Markdown::Creator.create_all
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Thanks: https://docs.ruby-lang.org/en/2.1.0/RDoc/Task.html
|
|
15
|
+
require 'rdoc/task'
|
|
16
|
+
require 'jets/rdoc'
|
|
17
|
+
|
|
18
|
+
RDoc::Task.new do |rdoc|
|
|
19
|
+
rdoc.options += Jets::Rdoc.options
|
|
20
|
+
end
|
|
21
|
+
|
data/backers.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<h1 align="center">Backers</h1>
|
|
2
|
+
|
|
3
|
+
[Jets](http://rubyonjets.com/) is an MIT-licensed open source project. It's an independent project with its ongoing development made possible entirely thanks to the support by these awesome [backers](https://github.com/tongueroo/jets/blob/master/backers.md). If you'd like to join them, please consider:
|
|
4
|
+
|
|
5
|
+
- [Become a backer or sponsor on Patreon](https://www.patreon.com/tongueroo).
|
|
6
|
+
|
|
7
|
+
Funds donated via Patreon go directly to support Tung Nguyen's full-time work on Jets.
|
|
8
|
+
|
|
9
|
+
<br><br>
|
|
10
|
+
|
|
11
|
+
<h2 align="center">Backers via Patreon</h2>
|
|
12
|
+
|
|
13
|
+
<!--10 start-->
|
|
14
|
+
- Erlend Finvåg
|
|
15
|
+
- Nate Clark
|
|
16
|
+
<!--10 end-->
|
data/bin/release
ADDED
data/buildspec.yml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
version: 0.2
|
|
2
|
+
|
|
3
|
+
phases:
|
|
4
|
+
build:
|
|
5
|
+
commands:
|
|
6
|
+
- echo Build started on `date`
|
|
7
|
+
# sync vendor
|
|
8
|
+
- git submodule sync
|
|
9
|
+
- git submodule update --init
|
|
10
|
+
- /usr/local/bin/dynamodb-local &
|
|
11
|
+
- bundle install
|
|
12
|
+
- bundle exec rspec # unit tests
|
|
13
|
+
# uncomment integration test for now
|
|
14
|
+
# - bash -eux .codebuild/integration.sh # test with newman and postman
|
|
15
|
+
|
|
16
|
+
artifacts:
|
|
17
|
+
files:
|
|
18
|
+
- README.md
|
data/exe/jets
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# traps: INT - ^C
|
|
4
|
+
['INT', 'TERM', 'QUIT'].each do |signal|
|
|
5
|
+
trap(signal) do
|
|
6
|
+
puts "Detected stop signal"
|
|
7
|
+
sleep 0.2
|
|
8
|
+
exit
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
$:.unshift(File.expand_path("../../lib", __FILE__))
|
|
13
|
+
require "jets"
|
|
14
|
+
Jets::CLI.start
|
data/jets.gemspec
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require "jets/version"
|
|
5
|
+
require "jets/rdoc"
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = "jets-fs"
|
|
9
|
+
spec.version = Jets::VERSION
|
|
10
|
+
spec.authors = ["Tung Nguyen"]
|
|
11
|
+
spec.email = ["tongueroo@gmail.com"]
|
|
12
|
+
spec.summary = "Ruby Serverless Framework on AWS Lambda"
|
|
13
|
+
spec.description = "Jets is a framework that allows you to create serverless applications with a beautiful language: Ruby. It includes everything required to build an application and deploy it to AWS Lambda. Jets makes serverless accessible to everyone."
|
|
14
|
+
spec.homepage = "http://rubyonjets.com"
|
|
15
|
+
spec.license = "MIT"
|
|
16
|
+
|
|
17
|
+
spec.required_ruby_version = '~> 2.5'
|
|
18
|
+
spec.rdoc_options += Jets::Rdoc.options
|
|
19
|
+
|
|
20
|
+
vendor_files = Dir.glob("vendor/**/*")
|
|
21
|
+
gem_files = `git -C "#{File.dirname(__FILE__)}" ls-files -z`.split("\x0").reject do |f|
|
|
22
|
+
f.match(%r{^(test|spec|features|docs)/})
|
|
23
|
+
end
|
|
24
|
+
spec.files = gem_files + vendor_files
|
|
25
|
+
spec.bindir = "exe"
|
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
27
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
28
|
+
spec.require_paths = ["lib"]
|
|
29
|
+
|
|
30
|
+
# spec.add_dependency "actionpack", "~> 5.2.1" # using vendor/rails version
|
|
31
|
+
# spec.add_dependency "actionview", "~> 5.2.1" # using vendor/rails version
|
|
32
|
+
spec.add_dependency "activerecord", "~> 5.2.1"
|
|
33
|
+
spec.add_dependency "activesupport", "~> 5.2.1"
|
|
34
|
+
spec.add_dependency "aws-sdk-apigateway"
|
|
35
|
+
spec.add_dependency "aws-sdk-cloudformation"
|
|
36
|
+
spec.add_dependency "aws-sdk-cloudwatchlogs"
|
|
37
|
+
spec.add_dependency "aws-sdk-dynamodb"
|
|
38
|
+
spec.add_dependency "aws-sdk-lambda"
|
|
39
|
+
spec.add_dependency "aws-sdk-s3"
|
|
40
|
+
spec.add_dependency "aws-sdk-sns"
|
|
41
|
+
spec.add_dependency "aws-sdk-sqs"
|
|
42
|
+
spec.add_dependency "dotenv"
|
|
43
|
+
spec.add_dependency "gems" # jets-gems dependency
|
|
44
|
+
spec.add_dependency "hashie"
|
|
45
|
+
spec.add_dependency "jets-html-sanitizer"
|
|
46
|
+
spec.add_dependency "json"
|
|
47
|
+
spec.add_dependency "kramdown"
|
|
48
|
+
spec.add_dependency "memoist"
|
|
49
|
+
spec.add_dependency "mimemagic"
|
|
50
|
+
spec.add_dependency "rack"
|
|
51
|
+
spec.add_dependency "railties", "~> 5.2.1" # ActiveRecord database_tasks.rb require this
|
|
52
|
+
spec.add_dependency "rainbow"
|
|
53
|
+
spec.add_dependency "recursive-open-struct"
|
|
54
|
+
spec.add_dependency "text-table"
|
|
55
|
+
spec.add_dependency "thor"
|
|
56
|
+
|
|
57
|
+
spec.add_development_dependency "byebug"
|
|
58
|
+
spec.add_development_dependency "bundler"
|
|
59
|
+
spec.add_development_dependency "rake"
|
|
60
|
+
spec.add_development_dependency "rspec"
|
|
61
|
+
end
|
data/lib/jets.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
$:.unshift(File.expand_path("../", __FILE__))
|
|
2
|
+
require "active_support"
|
|
3
|
+
require "active_support/concern"
|
|
4
|
+
require "active_support/core_ext"
|
|
5
|
+
require "active_support/dependencies"
|
|
6
|
+
require "active_support/ordered_hash"
|
|
7
|
+
require "active_support/ordered_options"
|
|
8
|
+
require "fileutils"
|
|
9
|
+
require "jets/camelizer"
|
|
10
|
+
require "jets/version"
|
|
11
|
+
require "memoist"
|
|
12
|
+
require "rainbow/ext/string"
|
|
13
|
+
|
|
14
|
+
module Jets
|
|
15
|
+
RUBY_VERSION = "2.5.3"
|
|
16
|
+
class Error < StandardError; end
|
|
17
|
+
|
|
18
|
+
autoload :Application, "jets/application"
|
|
19
|
+
autoload :AwsInfo, "jets/aws_info"
|
|
20
|
+
autoload :AwsServices, "jets/aws_services"
|
|
21
|
+
autoload :Booter, 'jets/booter'
|
|
22
|
+
autoload :Builders, 'jets/builders'
|
|
23
|
+
autoload :Call, "jets/call"
|
|
24
|
+
autoload :Cfn, 'jets/cfn'
|
|
25
|
+
autoload :CLI, "jets/cli"
|
|
26
|
+
autoload :Commands, "jets/commands"
|
|
27
|
+
autoload :Controller, 'jets/controller'
|
|
28
|
+
autoload :Core, "jets/core"
|
|
29
|
+
autoload :Db, 'jets/db'
|
|
30
|
+
autoload :Dotenv, 'jets/dotenv'
|
|
31
|
+
autoload :Erb, "jets/erb"
|
|
32
|
+
autoload :Generator, "jets/generator"
|
|
33
|
+
autoload :Inflections, "jets/inflections"
|
|
34
|
+
autoload :IO, "jets/io"
|
|
35
|
+
autoload :Job, 'jets/job'
|
|
36
|
+
autoload :Klass, 'jets/klass'
|
|
37
|
+
autoload :Lambda, 'jets/lambda'
|
|
38
|
+
autoload :Logger, "jets/logger"
|
|
39
|
+
autoload :Mega, "jets/mega"
|
|
40
|
+
autoload :Middleware, "jets/middleware"
|
|
41
|
+
autoload :Naming, 'jets/naming'
|
|
42
|
+
autoload :PolyFun, 'jets/poly_fun'
|
|
43
|
+
autoload :Preheat, "jets/preheat"
|
|
44
|
+
autoload :Processors, 'jets/processors'
|
|
45
|
+
autoload :RackServer, "jets/rack_server"
|
|
46
|
+
autoload :Rdoc, "jets/rdoc"
|
|
47
|
+
autoload :Resource, "jets/resource"
|
|
48
|
+
autoload :Route, "jets/route"
|
|
49
|
+
autoload :Router, "jets/router"
|
|
50
|
+
autoload :Rule, 'jets/rule'
|
|
51
|
+
autoload :Stack, "jets/stack"
|
|
52
|
+
autoload :TmpLoader, "jets/tmp_loader"
|
|
53
|
+
autoload :Turbine, 'jets/turbine'
|
|
54
|
+
autoload :Turbo, 'jets/turbo'
|
|
55
|
+
autoload :Util, "jets/util"
|
|
56
|
+
|
|
57
|
+
extend Core # root, logger, etc
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
require "jets/core_ext/kernel"
|
|
61
|
+
|
|
62
|
+
root = File.expand_path("..", File.dirname(__FILE__))
|
|
63
|
+
|
|
64
|
+
$:.unshift("#{root}/vendor/jets-gems/lib")
|
|
65
|
+
require "jets-gems"
|
|
66
|
+
|
|
67
|
+
$:.unshift("#{root}/vendor/rails/actionpack/lib")
|
|
68
|
+
$:.unshift("#{root}/vendor/rails/actionview/lib")
|
|
69
|
+
# will require action_controller, action_pack, etc later when needed
|
|
70
|
+
|
|
71
|
+
Jets::Db # trigger autoload
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
require "singleton"
|
|
2
|
+
require "rack"
|
|
3
|
+
|
|
4
|
+
class Jets::Application
|
|
5
|
+
include Singleton
|
|
6
|
+
extend Memoist
|
|
7
|
+
autoload :Middleware, "jets/middleware"
|
|
8
|
+
include Jets::Middleware
|
|
9
|
+
|
|
10
|
+
def configure(&block)
|
|
11
|
+
instance_eval(&block) if block
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def setup!
|
|
15
|
+
load_configs
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def finish!
|
|
19
|
+
load_inflections
|
|
20
|
+
setup_auto_load_paths
|
|
21
|
+
load_routes
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def load_inflections
|
|
25
|
+
Jets::Inflections.load!
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def config
|
|
29
|
+
@config ||= ActiveSupport::OrderedOptions.new # dont use memoize since we reset @config later
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def default_config
|
|
33
|
+
config = ActiveSupport::OrderedOptions.new
|
|
34
|
+
config.project_name = parse_project_name # must set early because other configs requires this
|
|
35
|
+
config.cors = false
|
|
36
|
+
config.autoload_paths = default_autoload_paths
|
|
37
|
+
config.extra_autoload_paths = []
|
|
38
|
+
config.logger = Jets::Logger.new($stderr)
|
|
39
|
+
|
|
40
|
+
# function properties defaults
|
|
41
|
+
config.function = ActiveSupport::OrderedOptions.new
|
|
42
|
+
config.function.timeout = 30
|
|
43
|
+
# default memory setting based on:
|
|
44
|
+
# https://medium.com/epsagon/how-to-make-lambda-faster-memory-performance-benchmark-be6ebc41f0fc
|
|
45
|
+
config.function.memory_size = 1536
|
|
46
|
+
|
|
47
|
+
config.prewarm = ActiveSupport::OrderedOptions.new
|
|
48
|
+
config.prewarm.enable = true
|
|
49
|
+
config.prewarm.rate = '30 minutes'
|
|
50
|
+
config.prewarm.concurrency = 2
|
|
51
|
+
config.prewarm.public_ratio = 3
|
|
52
|
+
config.prewarm.rack_ratio = 5
|
|
53
|
+
|
|
54
|
+
config.gems = ActiveSupport::OrderedOptions.new
|
|
55
|
+
config.gems.sources = [
|
|
56
|
+
Jets.default_gems_source
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
config.inflections = ActiveSupport::OrderedOptions.new
|
|
60
|
+
config.inflections.irregular = {}
|
|
61
|
+
|
|
62
|
+
config.assets = ActiveSupport::OrderedOptions.new
|
|
63
|
+
config.assets.folders = %w[assets images packs]
|
|
64
|
+
config.assets.base_url = nil # IE: https://cloudfront.com/my/base/path
|
|
65
|
+
config.assets.max_age = 3600
|
|
66
|
+
config.assets.cache_control = nil # IE: public, max-age=3600 , max_age is a shorter way to set cache_control.
|
|
67
|
+
|
|
68
|
+
config.ruby = ActiveSupport::OrderedOptions.new
|
|
69
|
+
|
|
70
|
+
config.middleware = Jets::Middleware::Configurator.new
|
|
71
|
+
|
|
72
|
+
config.session = ActiveSupport::OrderedOptions.new
|
|
73
|
+
config.session.store = Rack::Session::Cookie # note when accessing it use session[:store] since .store is an OrderedOptions method
|
|
74
|
+
config.session.options = {}
|
|
75
|
+
|
|
76
|
+
config.api = ActiveSupport::OrderedOptions.new
|
|
77
|
+
config.api.authorization_type = "NONE"
|
|
78
|
+
config.api.cors_authorization_type = nil # nil so ApiGateway::Cors#cors_authorization_type handles
|
|
79
|
+
config.api.binary_media_types = ['multipart/form-data']
|
|
80
|
+
config.api.endpoint_type = 'EDGE' # PRIVATE, EDGE, REGIONAL
|
|
81
|
+
|
|
82
|
+
config.domain = ActiveSupport::OrderedOptions.new
|
|
83
|
+
# config.domain.name = "#{Jets.project_namespace}.coolapp.com" # Default is nil
|
|
84
|
+
# config.domain.cert_arn = "..."
|
|
85
|
+
config.domain.endpoint_type = "REGIONAL" # EDGE or REGIONAL. Default to EDGE because CloudFormation update is faster
|
|
86
|
+
config.domain.route53 = true # controls whether or not to create the managed route53 record.
|
|
87
|
+
# Useful to disable this when user wants to manage the route themself like pointing
|
|
88
|
+
# it to CloudFront for blue-green deployments instead.
|
|
89
|
+
|
|
90
|
+
# Custom user lambda layers
|
|
91
|
+
config.lambda = ActiveSupport::OrderedOptions.new
|
|
92
|
+
config.lambda.layers = []
|
|
93
|
+
|
|
94
|
+
# Only used for Jets Afterburner, Mega Mode currently. This is a fallback default
|
|
95
|
+
# encoding. Usually, the Rails response will return a content-type header and
|
|
96
|
+
# the encoding in there is used when possible. Example Content-Type header:
|
|
97
|
+
# Content-Type text/html; charset=utf-8
|
|
98
|
+
config.encoding = ActiveSupport::OrderedOptions.new
|
|
99
|
+
config.encoding.default = "utf-8"
|
|
100
|
+
|
|
101
|
+
config
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Double evaling config/application.rb causes subtle issues:
|
|
105
|
+
# * double loading of shared resources: Jets::Stack.subclasses will have the same
|
|
106
|
+
# class twice when config is called when declaring a function
|
|
107
|
+
# * forces us to rescue all exceptions, which is a big hammer
|
|
108
|
+
#
|
|
109
|
+
# Lets parse for the project name instead for now.
|
|
110
|
+
#
|
|
111
|
+
def parse_project_name
|
|
112
|
+
return ENV['JETS_PROJECT_NAME'] if ENV['JETS_PROJECT_NAME'] # override
|
|
113
|
+
|
|
114
|
+
lines = IO.readlines("#{Jets.root}/config/application.rb")
|
|
115
|
+
project_name_line = lines.find { |l| l =~ /config\.project_name.*=/ }
|
|
116
|
+
project_name_line.gsub(/.*=/,'').strip.gsub(/["']/,'') # project_name
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def load_app_config
|
|
120
|
+
@config = default_config
|
|
121
|
+
set_dependent_configs! # things like project_namespace that need project_name
|
|
122
|
+
eval_app_config # this overwrites Jets.config.project_name
|
|
123
|
+
Jets.config.project_name = parse_project_name # Must set again because JETS_PROJECT_NAME is possible
|
|
124
|
+
|
|
125
|
+
set_iam_policy # relies on dependent values, must be called afterwards
|
|
126
|
+
normalize_env_vars!
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def eval_app_config
|
|
130
|
+
app_config = "#{Jets.root}/config/application.rb"
|
|
131
|
+
load app_config # use load instead of require so reload_configs! works
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# After the mimimal template gets build, we need to reload it for the full stack
|
|
135
|
+
# creation. This allows us to reference IAM policies configs that depend on the
|
|
136
|
+
# creation of the s3 bucket.
|
|
137
|
+
def reload_configs!
|
|
138
|
+
load_configs
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def load_environments_config
|
|
142
|
+
env_file = "#{Jets.root}/config/environments/#{Jets.env}.rb"
|
|
143
|
+
if File.exist?(env_file)
|
|
144
|
+
code = IO.read(env_file)
|
|
145
|
+
instance_eval(code)
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def load_configs
|
|
150
|
+
load_app_config
|
|
151
|
+
load_db_config
|
|
152
|
+
load_environments_config
|
|
153
|
+
deprecated_configs_message
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def deprecated_configs_message
|
|
157
|
+
unless config.ruby.lazy_load.nil?
|
|
158
|
+
puts "Detected config.ruby.lazy_load = #{config.ruby.lazy_load.inspect}".color(:yellow)
|
|
159
|
+
puts "Deprecated: config.ruby.lazy_load".color(:yellow)
|
|
160
|
+
puts "Gems are now bundled with with Lambda Layer and there's no need to lazy load them."
|
|
161
|
+
puts "Please remove the config in your config/application.rb or config/environments files."
|
|
162
|
+
puts "You can have Jets automatically do this by running:"
|
|
163
|
+
puts " jets upgrade"
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def setup_auto_load_paths
|
|
168
|
+
autoload_paths = config.autoload_paths + config.extra_autoload_paths
|
|
169
|
+
# internal_autoload_paths are last
|
|
170
|
+
autoload_paths += internal_autoload_paths
|
|
171
|
+
ActiveSupport::Dependencies.autoload_paths += autoload_paths
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Essentially folders under app folder will be the default_autoload_paths. Example:
|
|
175
|
+
# app/controllers
|
|
176
|
+
# app/helpers
|
|
177
|
+
# app/jobs
|
|
178
|
+
# app/models
|
|
179
|
+
# app/rules
|
|
180
|
+
# app/shared/resources
|
|
181
|
+
def default_autoload_paths
|
|
182
|
+
paths = []
|
|
183
|
+
Dir.glob("#{Jets.root}/app/*").each do |p|
|
|
184
|
+
p.sub!('./','')
|
|
185
|
+
paths << p unless exclude_autoload_path?(p)
|
|
186
|
+
end
|
|
187
|
+
paths
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def exclude_autoload_path?(path)
|
|
191
|
+
path =~ %r{app/javascript} || path =~ %r{app/views}
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def internal_autoload_paths
|
|
195
|
+
internal = File.expand_path("../internal", __FILE__)
|
|
196
|
+
paths = %w[
|
|
197
|
+
app/controllers
|
|
198
|
+
app/models
|
|
199
|
+
app/jobs
|
|
200
|
+
]
|
|
201
|
+
paths.map { |path| "#{internal}/#{path}" }
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# Use the shorter name in stack names, but use the full name when it
|
|
205
|
+
# comes to checking for the env.
|
|
206
|
+
#
|
|
207
|
+
# Example:
|
|
208
|
+
#
|
|
209
|
+
# Jets.env: 'development'
|
|
210
|
+
# Jets.config.project_namespace: 'demo-dev'
|
|
211
|
+
ENV_MAP = {
|
|
212
|
+
development: 'dev',
|
|
213
|
+
production: 'prod',
|
|
214
|
+
staging: 'stag',
|
|
215
|
+
}
|
|
216
|
+
def set_dependent_configs!
|
|
217
|
+
# env_extra can be also be set with JETS_ENV_EXTRA.
|
|
218
|
+
# JETS_ENV_EXTRA higher precedence than config.env_extra
|
|
219
|
+
config.env_extra = ENV['JETS_ENV_EXTRA'] if ENV['JETS_ENV_EXTRA']
|
|
220
|
+
# IE: With env_extra: project-dev-1
|
|
221
|
+
# Without env_extra: project-dev
|
|
222
|
+
config.short_env = ENV_MAP[Jets.env.to_sym] || Jets.env
|
|
223
|
+
# table_namespace does not have the env_extra, more common case desired.
|
|
224
|
+
config.table_namespace = [config.project_name, config.short_env].compact.join('-')
|
|
225
|
+
|
|
226
|
+
config.project_namespace = Jets.project_namespace
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def set_iam_policy
|
|
230
|
+
config.iam_policy ||= self.class.default_iam_policy
|
|
231
|
+
config.managed_policy_definitions ||= [] # default empty
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def self.default_iam_policy
|
|
235
|
+
project_namespace = Jets.project_namespace
|
|
236
|
+
logs = {
|
|
237
|
+
action: ["logs:*"],
|
|
238
|
+
effect: "Allow",
|
|
239
|
+
resource: "arn:aws:logs:#{Jets.aws.region}:#{Jets.aws.account}:log-group:/aws/lambda/#{project_namespace}-*",
|
|
240
|
+
}
|
|
241
|
+
s3_bucket = Jets.aws.s3_bucket
|
|
242
|
+
s3_readonly = {
|
|
243
|
+
action: ["s3:Get*", "s3:List*"],
|
|
244
|
+
effect: "Allow",
|
|
245
|
+
resource: "arn:aws:s3:::#{s3_bucket}*",
|
|
246
|
+
}
|
|
247
|
+
s3_bucket = {
|
|
248
|
+
action: ["s3:ListAllMyBuckets", "s3:HeadBucket"],
|
|
249
|
+
effect: "Allow",
|
|
250
|
+
resource: "arn:aws:s3:::*", # scoped to all buckets
|
|
251
|
+
}
|
|
252
|
+
policies = [logs, s3_readonly, s3_bucket]
|
|
253
|
+
|
|
254
|
+
if Jets::Stack.has_resources?
|
|
255
|
+
cloudformation = {
|
|
256
|
+
action: ["cloudformation:DescribeStacks"],
|
|
257
|
+
effect: "Allow",
|
|
258
|
+
resource: "arn:aws:cloudformation:#{Jets.aws.region}:#{Jets.aws.account}:stack/#{project_namespace}*",
|
|
259
|
+
}
|
|
260
|
+
policies << cloudformation
|
|
261
|
+
end
|
|
262
|
+
policies
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
# It is pretty easy to attempt to set environment variables without
|
|
266
|
+
# the correct AWS Environment.Variables path struture.
|
|
267
|
+
# Auto-fix it for convenience.
|
|
268
|
+
def normalize_env_vars!
|
|
269
|
+
environment = config.function.environment
|
|
270
|
+
if environment and !environment.to_h.key?(:variables)
|
|
271
|
+
config.function.environment = {
|
|
272
|
+
variables: environment.to_h
|
|
273
|
+
}
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def load_db_config
|
|
278
|
+
config.database = {}
|
|
279
|
+
|
|
280
|
+
Jets::Dotenv.load!
|
|
281
|
+
database_yml = "#{Jets.root}/config/database.yml"
|
|
282
|
+
if File.exist?(database_yml)
|
|
283
|
+
text = Jets::Erb.result(database_yml)
|
|
284
|
+
db_config = YAML.load(text)
|
|
285
|
+
config.database = db_config
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
# Naming it routes because config/routes.rb requires
|
|
290
|
+
#
|
|
291
|
+
# Jets.application.routes.draw do
|
|
292
|
+
#
|
|
293
|
+
# for scaffolding to work.
|
|
294
|
+
def routes
|
|
295
|
+
@router ||= Jets::Router.new
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
def load_routes
|
|
299
|
+
routes_file = "#{Jets.root}/config/routes.rb"
|
|
300
|
+
require routes_file if File.exist?(routes_file)
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
def aws
|
|
304
|
+
Jets::AwsInfo.new
|
|
305
|
+
end
|
|
306
|
+
memoize :aws
|
|
307
|
+
|
|
308
|
+
end
|