jets.benforeva 3.0.17.pre.mount.pre.fix
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +92 -0
- data/.cody/README.md +13 -0
- data/.cody/docs/bin/build.sh +7 -0
- data/.cody/docs/bin/bundler_setup.sh +8 -0
- data/.cody/docs/bin/cli_docs.sh +6 -0
- data/.cody/docs/bin/git_commit.sh +27 -0
- data/.cody/docs/bin/git_setup.sh +12 -0
- data/.cody/docs/bin/subnav.sh +14 -0
- data/.cody/docs/buildspec.yml +10 -0
- data/.cody/docs/project.rb +10 -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 +14 -0
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +50 -0
- data/.gitignore +24 -0
- data/.gitmodules +0 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +1035 -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 +212 -0
- data/Rakefile +24 -0
- data/backers.md +20 -0
- data/bin/release +9 -0
- data/exe/jets.benforeva +14 -0
- data/jets.benforeva.gemspec +71 -0
- data/lib/jets/application/defaults.rb +200 -0
- data/lib/jets/application.rb +240 -0
- data/lib/jets/authorizer/base.rb +36 -0
- data/lib/jets/authorizer/dsl.rb +69 -0
- data/lib/jets/authorizer/helpers/iam_helper.rb +47 -0
- data/lib/jets/autoloaders.rb +112 -0
- data/lib/jets/aws_info.rb +111 -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 +64 -0
- data/lib/jets/aws_services.rb +95 -0
- data/lib/jets/booter.rb +167 -0
- data/lib/jets/builders/code_builder.rb +410 -0
- data/lib/jets/builders/code_size.rb +57 -0
- data/lib/jets/builders/gem_replacer.rb +89 -0
- data/lib/jets/builders/handler_generator.rb +186 -0
- data/lib/jets/builders/lambda_layer.rb +68 -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/config/initializers/jets.rb +16 -0
- data/lib/jets/builders/reconfigure_rails.rb +114 -0
- data/lib/jets/builders/ruby_packager.rb +235 -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 +88 -0
- data/lib/jets/camelizer.rb +4 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +56 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +123 -0
- data/lib/jets/cfn/builders/api_resources_builder.rb +44 -0
- data/lib/jets/cfn/builders/authorizer_builder.rb +67 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +69 -0
- data/lib/jets/cfn/builders/controller_builder.rb +50 -0
- data/lib/jets/cfn/builders/function_builder.rb +14 -0
- data/lib/jets/cfn/builders/interface.rb +133 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/parent_builder/stagger.rb +34 -0
- data/lib/jets/cfn/builders/parent_builder.rb +130 -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/builders/util/source.rb +21 -0
- data/lib/jets/cfn/built_template.rb +15 -0
- data/lib/jets/cfn/ship.rb +188 -0
- data/lib/jets/cfn/status.rb +10 -0
- data/lib/jets/cfn/template_source.rb +61 -0
- data/lib/jets/cfn/upload.rb +157 -0
- data/lib/jets/cli.rb +208 -0
- data/lib/jets/commands/base.rb +145 -0
- data/lib/jets/commands/build.rb +252 -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 +62 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/call.rb +182 -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 +111 -0
- data/lib/jets/commands/clean.rb +19 -0
- data/lib/jets/commands/configure.rb +51 -0
- data/lib/jets/commands/console.rb +12 -0
- data/lib/jets/commands/db/environment-task.rake +3 -0
- data/lib/jets/commands/db/tasks/dummy/app.rb +25 -0
- data/lib/jets/commands/db/tasks/dummy/config.rb +14 -0
- data/lib/jets/commands/db/tasks.rb +34 -0
- data/lib/jets/commands/db.rb +13 -0
- data/lib/jets/commands/dbconsole.rb +134 -0
- data/lib/jets/commands/delete.rb +136 -0
- data/lib/jets/commands/deploy.rb +137 -0
- data/lib/jets/commands/dotenv.rb +9 -0
- data/lib/jets/commands/dynamodb/migrate.rb +9 -0
- data/lib/jets/commands/dynamodb/migrator.rb +36 -0
- data/lib/jets/commands/dynamodb.rb +19 -0
- data/lib/jets/commands/gems.rb +13 -0
- data/lib/jets/commands/help/build.md +6 -0
- data/lib/jets/commands/help/call.md +69 -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/degenerate.md +16 -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 +6 -0
- data/lib/jets/commands/help/generate.md +28 -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 +7 -0
- data/lib/jets/commands/help/url.md +6 -0
- data/lib/jets/commands/help.rb +9 -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 +30 -0
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +89 -0
- data/lib/jets/commands/import.rb +12 -0
- data/lib/jets/commands/main.rb +166 -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 +173 -0
- data/lib/jets/commands/rake_command.rb +61 -0
- data/lib/jets/commands/rake_tasks.rb +50 -0
- data/lib/jets/commands/runner.rb +16 -0
- data/lib/jets/commands/sequence.rb +105 -0
- data/lib/jets/commands/stack_info.rb +30 -0
- data/lib/jets/commands/templates/skeleton/.env.development.tt +3 -0
- data/lib/jets/commands/templates/skeleton/.env.test +3 -0
- data/lib/jets/commands/templates/skeleton/.env.tt +3 -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 +39 -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 +26 -0
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +71 -0
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +27 -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/config.ru +5 -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 +23 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -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/upgrade/version1.rb +136 -0
- data/lib/jets/commands/upgrade.rb +105 -0
- data/lib/jets/commands/url.rb +69 -0
- data/lib/jets/commands/webpacker_template.rb +18 -0
- data/lib/jets/controller/authorization.rb +91 -0
- data/lib/jets/controller/base.rb +175 -0
- data/lib/jets/controller/callbacks.rb +73 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/cookies.rb +38 -0
- data/lib/jets/controller/error/invalid_authenticity_token.rb +6 -0
- data/lib/jets/controller/error.rb +4 -0
- data/lib/jets/controller/forgery_protection.rb +43 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware/cors.rb +60 -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 +22 -0
- data/lib/jets/controller/middleware/local.rb +120 -0
- data/lib/jets/controller/middleware/main.rb +53 -0
- data/lib/jets/controller/middleware/reloader.rb +15 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/parameters_filter.rb +29 -0
- data/lib/jets/controller/params.rb +117 -0
- data/lib/jets/controller/rack/adapter.rb +94 -0
- data/lib/jets/controller/rack/env.rb +122 -0
- data/lib/jets/controller/redirection.rb +51 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +267 -0
- data/lib/jets/controller/rendering.rb +96 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/controller/stage.rb +34 -0
- data/lib/jets/controller.rb +3 -0
- data/lib/jets/core.rb +157 -0
- data/lib/jets/core_ext/bundler.rb +7 -0
- data/lib/jets/core_ext/kernel.rb +13 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv/show.rb +11 -0
- data/lib/jets/dotenv/ssm.rb +64 -0
- data/lib/jets/dotenv.rb +48 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator/templates/active_job/job/templates/application_job.rb.tt +6 -0
- data/lib/jets/generator/templates/active_job/job/templates/job.rb.tt +8 -0
- data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
- data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +34 -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/generator.rb +112 -0
- data/lib/jets/inflections.rb +32 -0
- data/lib/jets/internal/app/controllers/jets/bare_controller.rb +16 -0
- data/lib/jets/internal/app/controllers/jets/mailers_controller.rb +97 -0
- data/lib/jets/internal/app/controllers/jets/mount_controller.rb +63 -0
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +31 -0
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +12 -0
- data/lib/jets/internal/app/functions/jets/base_path.rb +18 -0
- data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +100 -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 +33 -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 +52 -0
- data/lib/jets/job/base.rb +49 -0
- data/lib/jets/job/dsl/dynamodb_event.rb +67 -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/dsl.rb +40 -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 +404 -0
- data/lib/jets/lambda/function.rb +29 -0
- data/lib/jets/lambda/function_constructor.rb +55 -0
- data/lib/jets/lambda/functions.rb +39 -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/source.rb +21 -0
- data/lib/jets/mega/request.rb +163 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +53 -0
- data/lib/jets/middleware/layer.rb +34 -0
- data/lib/jets/middleware/stack.rb +77 -0
- data/lib/jets/middleware.rb +33 -0
- data/lib/jets/naming.rb +63 -0
- data/lib/jets/overrides/lambda/marshaller.rb +31 -0
- data/lib/jets/overrides/lambda.rb +1 -0
- data/lib/jets/overrides/rails/action_controller.rb +13 -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/migration_checker.rb +34 -0
- data/lib/jets/overrides/rails/rendering_helper.rb +27 -0
- data/lib/jets/overrides/rails/url_helper.rb +88 -0
- data/lib/jets/overrides/rails.rb +6 -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/poly_fun.rb +73 -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/api_gateway/authorizer.rb +82 -0
- data/lib/jets/resource/api_gateway/base_path/function.rb +49 -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 +80 -0
- data/lib/jets/resource/api_gateway/domain_name.rb +65 -0
- data/lib/jets/resource/api_gateway/method/authorization.rb +41 -0
- data/lib/jets/resource/api_gateway/method.rb +102 -0
- data/lib/jets/resource/api_gateway/resource.rb +82 -0
- data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +10 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id/message.rb +49 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +98 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +136 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/media_types.rb +36 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/page.rb +93 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/to.rb +25 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/variable.rb +35 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +16 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision.rb +121 -0
- data/lib/jets/resource/api_gateway/rest_api/routes.rb +7 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +64 -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 +58 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +23 -0
- data/lib/jets/resource/child_stack/api_resource/page.rb +20 -0
- data/lib/jets/resource/child_stack/api_resource.rb +54 -0
- data/lib/jets/resource/child_stack/app_class.rb +149 -0
- data/lib/jets/resource/child_stack/authorizer.rb +40 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/common_parameters.rb +14 -0
- data/lib/jets/resource/child_stack/shared.rb +85 -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/environment.rb +62 -0
- data/lib/jets/resource/lambda/function.rb +221 -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 +98 -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/resource.rb +71 -0
- data/lib/jets/router/dsl/mount.rb +13 -0
- data/lib/jets/router/dsl.rb +144 -0
- data/lib/jets/router/error.rb +4 -0
- data/lib/jets/router/finder.rb +47 -0
- data/lib/jets/router/helpers/core_helper.rb +27 -0
- data/lib/jets/router/helpers/named_routes_helper.rb +8 -0
- data/lib/jets/router/helpers.rb +4 -0
- data/lib/jets/router/matcher.rb +81 -0
- data/lib/jets/router/method_creator/code.rb +99 -0
- data/lib/jets/router/method_creator/edit.rb +12 -0
- data/lib/jets/router/method_creator/generic.rb +11 -0
- data/lib/jets/router/method_creator/index.rb +48 -0
- data/lib/jets/router/method_creator/new.rb +12 -0
- data/lib/jets/router/method_creator/root.rb +15 -0
- data/lib/jets/router/method_creator/show.rb +12 -0
- data/lib/jets/router/method_creator.rb +50 -0
- data/lib/jets/router/resources/base.rb +7 -0
- data/lib/jets/router/resources/filter.rb +15 -0
- data/lib/jets/router/resources/options.rb +13 -0
- data/lib/jets/router/route/authorizer.rb +57 -0
- data/lib/jets/router/route.rb +230 -0
- data/lib/jets/router/scope.rb +95 -0
- data/lib/jets/router/util.rb +38 -0
- data/lib/jets/router.rb +180 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +109 -0
- data/lib/jets/spec_helpers/controllers/params.rb +8 -0
- data/lib/jets/spec_helpers/controllers/request.rb +101 -0
- data/lib/jets/spec_helpers/controllers/response.rb +10 -0
- data/lib/jets/spec_helpers/controllers.rb +47 -0
- data/lib/jets/spec_helpers/fixtures.rb +11 -0
- data/lib/jets/spec_helpers.rb +21 -0
- data/lib/jets/stack/builder.rb +43 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/depends/item.rb +26 -0
- data/lib/jets/stack/depends.rb +34 -0
- data/lib/jets/stack/function.rb +69 -0
- data/lib/jets/stack/main/dsl/base.rb +63 -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/kinesis.rb +15 -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/main/dsl.rb +17 -0
- data/lib/jets/stack/main.rb +4 -0
- data/lib/jets/stack/output/dsl.rb +19 -0
- data/lib/jets/stack/output/lookup.rb +36 -0
- data/lib/jets/stack/output.rb +35 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/parameter.rb +37 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/stack/resource.rb +31 -0
- data/lib/jets/stack/s3_event.rb +87 -0
- data/lib/jets/stack.rb +88 -0
- data/lib/jets/tmp_loader.rb +53 -0
- data/lib/jets/turbine.rb +41 -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/application.rb +5 -0
- data/lib/jets/turbo/project/config/routes.rb +4 -0
- data/lib/jets/turbo/project/config.ru +5 -0
- data/lib/jets/turbo/rails.rb +127 -0
- data/lib/jets/turbo/templates/config/database.yml +30 -0
- data/lib/jets/turbo.rb +56 -0
- data/lib/jets/util.rb +40 -0
- data/lib/jets/version.rb +3 -0
- data/lib/jets.rb +31 -0
- data/readme/prerelease.md +6 -0
- data/readme/testing.md +60 -0
- metadata +1105 -0
@@ -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,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,6 @@
|
|
1
|
+
Check if pre-built Lambda gems are available from the gems source. You can configure the gem in config/application.rb:
|
2
|
+
|
3
|
+
# Sources for check for pre-compiled Lambda gems. Checks the list in order.
|
4
|
+
Jets.application.configure do
|
5
|
+
config.gems.source = "https://api.serverlessgems.com/api/v1"
|
6
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
This piggy backs off of the [rails scaffold generator](https://guides.rubyonrails.org/command_line.html#rails-generate).
|
2
|
+
|
3
|
+
## General options
|
4
|
+
|
5
|
+
-h, [--help] # Print generator's options and usage
|
6
|
+
-p, [--pretend] # Run but do not make any changes
|
7
|
+
-f, [--force] # Overwrite files that already exist
|
8
|
+
-s, [--skip] # Skip files that already exist
|
9
|
+
-q, [--quiet] # Suppress status output
|
10
|
+
|
11
|
+
Please choose a generator below.
|
12
|
+
|
13
|
+
Jets:
|
14
|
+
|
15
|
+
application_record
|
16
|
+
controller
|
17
|
+
helper
|
18
|
+
job
|
19
|
+
migration
|
20
|
+
model
|
21
|
+
resource
|
22
|
+
scaffold
|
23
|
+
scaffold_controller
|
24
|
+
task
|
25
|
+
|
26
|
+
ActiveRecord:
|
27
|
+
|
28
|
+
active_record:application_record
|
@@ -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
|
@@ -0,0 +1,16 @@
|
|
1
|
+
## Example
|
2
|
+
|
3
|
+
$ jets routes
|
4
|
+
+--------+----------------+--------------------+
|
5
|
+
| Verb | Path | Controller#action |
|
6
|
+
+--------+----------------+--------------------+
|
7
|
+
| GET | posts | posts#index |
|
8
|
+
| GET | posts/new | posts#new |
|
9
|
+
| GET | posts/:id | posts#show |
|
10
|
+
| POST | posts | posts#create |
|
11
|
+
| GET | posts/:id/edit | posts#edit |
|
12
|
+
| PUT | posts/:id | posts#update |
|
13
|
+
| DELETE | posts/:id | posts#delete |
|
14
|
+
| ANY | *catchall | jets/public#show |
|
15
|
+
+--------+----------------+--------------------+
|
16
|
+
$
|
@@ -0,0 +1,17 @@
|
|
1
|
+
## Examples
|
2
|
+
|
3
|
+
$ jets runner 'puts "hi"'
|
4
|
+
hi
|
5
|
+
$ jets runner 'puts Jets.env'
|
6
|
+
development
|
7
|
+
|
8
|
+
Using a script in a file. Let's say you have a script:
|
9
|
+
|
10
|
+
script.rb:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
puts "hello world: #{Jets.env}"
|
14
|
+
```
|
15
|
+
|
16
|
+
$ jets runner file://script.rb
|
17
|
+
hello world: development
|
@@ -0,0 +1,15 @@
|
|
1
|
+
The local server for mimics API Gateway and provides a way to test your app locally without deploying to AWS.
|
2
|
+
|
3
|
+
## Examples
|
4
|
+
|
5
|
+
$ jets server
|
6
|
+
=> bundle exec shotgun --port 8888 --host 127.0.0.1
|
7
|
+
Jets booting up in development mode!
|
8
|
+
== Shotgun/WEBrick on http://127.0.0.1:8888/
|
9
|
+
[2018-08-17 05:31:33] INFO WEBrick 1.4.2
|
10
|
+
[2018-08-17 05:31:33] INFO ruby 2.5.1 (2018-03-29) [x86_64-linux]
|
11
|
+
[2018-08-17 05:31:33] INFO WEBrick::HTTPServer#start: pid=27433 port=8888
|
12
|
+
|
13
|
+
Start up server binding to host `0.0.0.0`:
|
14
|
+
|
15
|
+
jets server --host 0.0.0.0
|
@@ -0,0 +1,14 @@
|
|
1
|
+
The CloudFormation stack status info. Essentially the events of the CloudFormation stack since the last update. If the CloudFormation stack is currently updating, this will live tail the events logs.
|
2
|
+
|
3
|
+
## Example
|
4
|
+
|
5
|
+
$ jets status
|
6
|
+
The current status for the stack demo-dev is UPDATE_COMPLETE
|
7
|
+
Stack events:
|
8
|
+
05:21:42AM UPDATE_IN_PROGRESS AWS::CloudFormation::Stack demo-dev User Initiated
|
9
|
+
05:21:45AM CREATE_IN_PROGRESS AWS::CloudFormation::Stack ApiGateway
|
10
|
+
...
|
11
|
+
05:23:22AM CREATE_COMPLETE AWS::CloudFormation::Stack JetsPreheatJob
|
12
|
+
05:23:25AM UPDATE_COMPLETE_CLEANUP_IN_PROGRESS AWS::CloudFormation::Stack demo-dev
|
13
|
+
05:23:25AM UPDATE_COMPLETE AWS::CloudFormation::Stack demo-dev
|
14
|
+
$
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class Jets::Commands::Import
|
2
|
+
class Base < Sequence
|
3
|
+
# Ugly, but when the class_option is only defined in the Thor::Group class
|
4
|
+
# it doesnt show up with jets new help :(
|
5
|
+
# If anyone knows how to fix this let me know.
|
6
|
+
def self.cli_options
|
7
|
+
[
|
8
|
+
[:submodule, type: :boolean, default: false, desc: "Imports the project as a submodule"],
|
9
|
+
]
|
10
|
+
end
|
11
|
+
cli_options.each { |args| class_option(*args) }
|
12
|
+
|
13
|
+
# Since setup is public it will automatically run in the subclasses
|
14
|
+
def setup
|
15
|
+
start_message
|
16
|
+
create_rack_folder
|
17
|
+
configure_ruby
|
18
|
+
create_rackup_wrappers
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def start_message
|
23
|
+
puts "Importing app into the rack folder..."
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_rack_folder
|
27
|
+
repo? ? clone_project : copy_project
|
28
|
+
end
|
29
|
+
|
30
|
+
def configure_ruby
|
31
|
+
gsub_file 'rack/Gemfile', /^ruby(.*)/, '# ruby\1' # comment out ruby declaration
|
32
|
+
create_file "rack/.ruby-version", RUBY_VERSION, force: true
|
33
|
+
end
|
34
|
+
|
35
|
+
def create_rackup_wrappers
|
36
|
+
path = File.expand_path("../../builders/rackup_wrappers", File.dirname(__FILE__))
|
37
|
+
Dir.glob("#{path}/*").each do |p|
|
38
|
+
FileUtils.cp(p, "#{rack_folder}/bin/")
|
39
|
+
end
|
40
|
+
chmod "#{rack_folder}/bin/rackup", 0755
|
41
|
+
end
|
42
|
+
|
43
|
+
def bundle_install
|
44
|
+
Bundler.with_unbundled_env do
|
45
|
+
run "cd rack && bundle install"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class Jets::Commands::Import
|
2
|
+
class Cheatsheet
|
3
|
+
def self.create(rack_repo_url)
|
4
|
+
new(rack_repo_url).create
|
5
|
+
end
|
6
|
+
|
7
|
+
def initialize(rack_repo_url)
|
8
|
+
@rack_repo_url = rack_repo_url
|
9
|
+
end
|
10
|
+
|
11
|
+
def create
|
12
|
+
path = File.expand_path("./templates/", File.dirname(__FILE__)) + "/submodules-cheatsheet.md"
|
13
|
+
basename = File.basename(path)
|
14
|
+
dest = "#{Jets.root}/#{basename}"
|
15
|
+
cheatsheet = Jets::Erb.result(path, cheatsheet_vars)
|
16
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
17
|
+
IO.write(dest, cheatsheet)
|
18
|
+
puts "Created #{basename} to help with using submodules."
|
19
|
+
end
|
20
|
+
|
21
|
+
def cheatsheet_vars
|
22
|
+
import_command = ARGV[0]
|
23
|
+
{
|
24
|
+
import_command: import_command,
|
25
|
+
rack_repo_url: @rack_repo_url,
|
26
|
+
jets_project_repo_url: jets_project_repo_url,
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def jets_project_repo_url
|
31
|
+
# Thanks: https://stackoverflow.com/questions/4089430/how-can-i-determine-the-url-that-a-local-git-repository-was-originally-cloned-fr/4089452
|
32
|
+
`git config --get remote.origin.url`.strip rescue 'https://github.com/user/repo'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Jets::Commands::Import
|
2
|
+
class Rack < Base
|
3
|
+
def install
|
4
|
+
bundle_install
|
5
|
+
end
|
6
|
+
|
7
|
+
def finish_message
|
8
|
+
puts <<~EOL
|
9
|
+
#{"="*30}
|
10
|
+
Congrats! The Rack project from #{@source} has been imported to the rack folder.
|
11
|
+
|
12
|
+
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/).
|
13
|
+
EOL
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
class Jets::Commands::Import
|
2
|
+
class Rails < Base
|
3
|
+
# We add jets-rails gem even though it's only activated within the megamode
|
4
|
+
# rackup wrapper script so user can check run bundle install and determine early
|
5
|
+
# if dependencies are met. The jets-rails gem is also added as part of the deploy
|
6
|
+
# process but we add it here also so the user gets earlier possible errors and
|
7
|
+
# can fix before they hit the deploy phase.
|
8
|
+
def configure_gemfile
|
9
|
+
append_to_file 'rack/Gemfile' do
|
10
|
+
%Q|gem "jets-rails"\n|
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def install
|
15
|
+
bundle_install
|
16
|
+
end
|
17
|
+
|
18
|
+
def configure_routes
|
19
|
+
# comment out current catchall route
|
20
|
+
comment_lines("config/routes.rb", 'any[ (][\'"]\*', verbose: true) # any "*catchall", to: ...
|
21
|
+
|
22
|
+
# Add catchall route for rack
|
23
|
+
insert_into_file "config/routes.rb", :before => /^end/ do
|
24
|
+
<<-CODE
|
25
|
+
# Enables Mega Mode Rails integration
|
26
|
+
any "*catchall", to: "jets/rack#process"
|
27
|
+
CODE
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def reconfigure_database_yml
|
32
|
+
Jets::Turbo::DatabaseYaml.new.reconfigure
|
33
|
+
end
|
34
|
+
|
35
|
+
def finish_message
|
36
|
+
puts <<~EOL
|
37
|
+
#{"="*30}
|
38
|
+
Congrats! The Rails project from #{@source} has been imported to the rack folder. Here are some next steps:
|
39
|
+
|
40
|
+
# Local Testing
|
41
|
+
|
42
|
+
Check out the config/routes.rb file and noticed how a new catchall route has been added. It looks something like this:
|
43
|
+
|
44
|
+
any "*catchall", to: "jets/rack#process"
|
45
|
+
|
46
|
+
The catchall route passes any route not handled by the Jets app as a request onto the Rails app. You can modified the route to selectively route what you want.
|
47
|
+
|
48
|
+
Please double check that rack/config/database.yml is appropriately configured, it likely needs to be updated.
|
49
|
+
|
50
|
+
Test the application locally. Test that the Rails app in the rack subfolder works independently. You can start the application up with:
|
51
|
+
|
52
|
+
cd rack # cd into the imported Rails project
|
53
|
+
bundle exec rackup
|
54
|
+
|
55
|
+
The rack server starts up on http://localhost:9292
|
56
|
+
|
57
|
+
Once tested, stop that server with CTRL-C.
|
58
|
+
|
59
|
+
Then you can start the jets server from the main jets project:
|
60
|
+
|
61
|
+
cd .. # back to the main jets projet
|
62
|
+
jets server # starts both jets and rack servers
|
63
|
+
|
64
|
+
The jets server starts up on http://localhost:8888 You can stop both servers with CTRL-C.
|
65
|
+
|
66
|
+
# Deploy
|
67
|
+
|
68
|
+
When you are ready deploy to AWS Lambda with:
|
69
|
+
|
70
|
+
jets deploy
|
71
|
+
EOL
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'thor'
|
4
|
+
|
5
|
+
class Jets::Commands::Import
|
6
|
+
class Sequence < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
argument :source
|
9
|
+
|
10
|
+
private
|
11
|
+
def clone_project
|
12
|
+
if File.exist?(rack_folder)
|
13
|
+
abort "The folder #{rack_folder} already exists. Please remove it first if you want to import a project."
|
14
|
+
end
|
15
|
+
|
16
|
+
check_git_installed
|
17
|
+
if @options[:submodule]
|
18
|
+
git_submodule
|
19
|
+
else
|
20
|
+
git_clone
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def git_submodule
|
25
|
+
puts "Adding project as a submodule"
|
26
|
+
run "git submodule add --force #{repo_url} #{rack_folder}"
|
27
|
+
Cheatsheet.create(repo_url)
|
28
|
+
end
|
29
|
+
|
30
|
+
def git_clone
|
31
|
+
command = "git clone #{repo_url} #{rack_folder}"
|
32
|
+
# Thor's run already puts out the command, so no need to puts
|
33
|
+
run command
|
34
|
+
run "rm -rf #{Jets.root}rack/.git"
|
35
|
+
end
|
36
|
+
|
37
|
+
def copy_project
|
38
|
+
puts "Creating rack folder"
|
39
|
+
template_path = File.expand_path(@source)
|
40
|
+
set_source_paths(template_path)
|
41
|
+
begin
|
42
|
+
directory ".", rack_folder, exclude_pattern: %r{.git}
|
43
|
+
rescue Thor::Error => e
|
44
|
+
puts e.message.color(:red)
|
45
|
+
exit 1
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def set_source_paths(*paths)
|
50
|
+
# Using string with instance_eval because block doesnt have access to
|
51
|
+
# path at runtime.
|
52
|
+
self.class.instance_eval %{
|
53
|
+
def self.source_paths
|
54
|
+
#{paths.flatten.inspect}
|
55
|
+
end
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
# normalize repo_url
|
60
|
+
def repo_url
|
61
|
+
if repo?
|
62
|
+
@source # leave as is, user has provided full github url
|
63
|
+
else
|
64
|
+
# Defaults to GitHub
|
65
|
+
"https://github.com/#{@source}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def repo?
|
70
|
+
@source.include?('github.com') ||
|
71
|
+
@source.include?('bitbucket.org') ||
|
72
|
+
@source.include?('gitlab.com')
|
73
|
+
end
|
74
|
+
|
75
|
+
def check_git_installed
|
76
|
+
return unless repo_url.include?('http') || repo_url.include?('git@')
|
77
|
+
unless git_installed?
|
78
|
+
abort "Unable to detect git installation on your system. Git needs to be installed in order to clone the project."
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def git_installed?
|
83
|
+
system("type git > /dev/null 2>&1")
|
84
|
+
end
|
85
|
+
|
86
|
+
def rack_folder
|
87
|
+
"#{Jets.root}/rack"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
default: &default
|
2
|
+
adapter: <%= @adapter %>
|
3
|
+
<% if @adapter == 'postgresql' -%>
|
4
|
+
encoding: unicode
|
5
|
+
<% else -%>
|
6
|
+
encoding: utf8mb4
|
7
|
+
<% end -%>
|
8
|
+
pool: <%%= ENV["DB_POOL"] || 5 %>
|
9
|
+
database: <%%= ENV['DB_NAME'] || '<%= @database_development %>' %>
|
10
|
+
<% if @adapter == 'postgresql' -%>
|
11
|
+
username: <%%= ENV['DB_USER'] || ENV['USER'] %>
|
12
|
+
<% else -%>
|
13
|
+
username: <%%= ENV['DB_USER'] || 'root' %>
|
14
|
+
<% end -%>
|
15
|
+
password: <%%= ENV['DB_PASS'] %>
|
16
|
+
host: <%%= ENV["DB_HOST"] %>
|
17
|
+
url: <%%= ENV['DATABASE_URL'] %> # takes higher precedence than other settings
|
18
|
+
|
19
|
+
development:
|
20
|
+
<<: *default
|
21
|
+
database: <%%= ENV['DB_NAME'] || '<%= @database_development %>' %>
|
22
|
+
|
23
|
+
test:
|
24
|
+
<<: *default
|
25
|
+
database: <%= @database_test %>
|
26
|
+
|
27
|
+
production:
|
28
|
+
<<: *default
|
29
|
+
database: <%= @database_production %>
|
30
|
+
url: <%%= ENV['DATABASE_URL'] %>
|