jets_bb_fork 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +126 -0
- data/.codebuild/README.md +68 -0
- data/.codebuild/bin/jets +3 -0
- data/.codebuild/buildspec-base.yml +14 -0
- data/.codebuild/integration.sh +72 -0
- data/.codebuild/jets.postman_collection.json +323 -0
- data/.codebuild/scripts/install-docker.sh +12 -0
- data/.codebuild/scripts/install-dynamodb-local.sh +22 -0
- data/.codebuild/scripts/install-java.sh +22 -0
- data/.codebuild/scripts/install-node.sh +4 -0
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +84 -0
- data/.github/ISSUE_TEMPLATE/documentation.md +27 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +64 -0
- data/.github/ISSUE_TEMPLATE/question.md +16 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- data/.gitignore +24 -0
- data/.gitmodules +0 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +734 -0
- data/CONDUCT.md +1 -0
- data/CONTRIBUTING.md +1 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +24 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets_bb_fork +14 -0
- data/jets.gemspec +68 -0
- data/lib/jets.rb +27 -0
- data/lib/jets/application.rb +216 -0
- data/lib/jets/application/defaults.rb +172 -0
- data/lib/jets/autoloaders.rb +97 -0
- data/lib/jets/aws_info.rb +113 -0
- data/lib/jets/aws_services.rb +65 -0
- data/lib/jets/aws_services/global_memoist.rb +57 -0
- data/lib/jets/aws_services/s3_bucket.rb +34 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +119 -0
- data/lib/jets/builders/code_builder.rb +399 -0
- data/lib/jets/builders/code_size.rb +57 -0
- data/lib/jets/builders/gem_replacer.rb +76 -0
- data/lib/jets/builders/handler_generator.rb +186 -0
- data/lib/jets/builders/lambda_layer.rb +69 -0
- data/lib/jets/builders/md5.rb +60 -0
- data/lib/jets/builders/md5_zip.rb +61 -0
- data/lib/jets/builders/purger.rb +35 -0
- data/lib/jets/builders/rack_packager.rb +51 -0
- data/lib/jets/builders/rackup_wrappers/rackup +19 -0
- data/lib/jets/builders/rackup_wrappers/rackup.rb +7 -0
- data/lib/jets/builders/reconfigure_rails.rb +114 -0
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +16 -0
- data/lib/jets/builders/ruby_packager.rb +207 -0
- data/lib/jets/builders/shim_vars/app.rb +78 -0
- data/lib/jets/builders/shim_vars/base.rb +25 -0
- data/lib/jets/builders/shim_vars/shared.rb +37 -0
- data/lib/jets/builders/templates/handler.rb +12 -0
- data/lib/jets/builders/tidy.rb +107 -0
- data/lib/jets/builders/util.rb +31 -0
- data/lib/jets/bundle.rb +82 -0
- data/lib/jets/camelizer.rb +71 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +63 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +157 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +75 -0
- data/lib/jets/cfn/builders/controller_builder.rb +42 -0
- data/lib/jets/cfn/builders/function_builder.rb +14 -0
- data/lib/jets/cfn/builders/interface.rb +137 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/paged.rb +37 -0
- data/lib/jets/cfn/builders/parent_builder.rb +100 -0
- data/lib/jets/cfn/builders/rule_builder.rb +24 -0
- data/lib/jets/cfn/builders/shared_builder.rb +14 -0
- data/lib/jets/cfn/ship.rb +185 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +194 -0
- data/lib/jets/commands/base.rb +146 -0
- data/lib/jets/commands/build.rb +234 -0
- data/lib/jets/commands/call.rb +169 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +136 -0
- data/lib/jets/commands/call/base_guesser.rb +60 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +19 -0
- data/lib/jets/commands/clean/base.rb +24 -0
- data/lib/jets/commands/clean/build.rb +13 -0
- data/lib/jets/commands/clean/log.rb +107 -0
- data/lib/jets/commands/console.rb +12 -0
- data/lib/jets/commands/db.rb +13 -0
- data/lib/jets/commands/db/environment-task.rake +3 -0
- data/lib/jets/commands/db/tasks.rb +44 -0
- data/lib/jets/commands/dbconsole.rb +131 -0
- data/lib/jets/commands/delete.rb +143 -0
- data/lib/jets/commands/deploy.rb +141 -0
- data/lib/jets/commands/dynamodb.rb +19 -0
- data/lib/jets/commands/dynamodb/migrate.rb +9 -0
- data/lib/jets/commands/dynamodb/migrator.rb +36 -0
- data/lib/jets/commands/gems.rb +21 -0
- data/lib/jets/commands/help.rb +9 -0
- data/lib/jets/commands/help/build.md +6 -0
- data/lib/jets/commands/help/call.md +61 -0
- data/lib/jets/commands/help/clean/build.md +5 -0
- data/lib/jets/commands/help/clean/log.md +5 -0
- data/lib/jets/commands/help/console.md +18 -0
- data/lib/jets/commands/help/db/generate.md +8 -0
- data/lib/jets/commands/help/dbconsole.md +9 -0
- data/lib/jets/commands/help/delete.md +22 -0
- data/lib/jets/commands/help/deploy.md +32 -0
- data/lib/jets/commands/help/destroy.md +16 -0
- data/lib/jets/commands/help/dynamodb/generate.md +52 -0
- data/lib/jets/commands/help/dynamodb/migrate.md +4 -0
- data/lib/jets/commands/help/gems/check.md +8 -0
- data/lib/jets/commands/help/generate.md +22 -0
- data/lib/jets/commands/help/import/rack.md +13 -0
- data/lib/jets/commands/help/import/rails.md +11 -0
- data/lib/jets/commands/help/new.md +42 -0
- data/lib/jets/commands/help/routes.md +16 -0
- data/lib/jets/commands/help/runner.md +17 -0
- data/lib/jets/commands/help/server.md +15 -0
- data/lib/jets/commands/help/status.md +14 -0
- data/lib/jets/commands/help/upgrade.md +5 -0
- data/lib/jets/commands/help/url.md +6 -0
- data/lib/jets/commands/import.rb +12 -0
- data/lib/jets/commands/import/base.rb +49 -0
- data/lib/jets/commands/import/cheatsheet.rb +35 -0
- data/lib/jets/commands/import/rack.rb +16 -0
- data/lib/jets/commands/import/rails.rb +74 -0
- data/lib/jets/commands/import/sequence.rb +90 -0
- data/lib/jets/commands/import/templates/config/database.yml +26 -0
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +89 -0
- data/lib/jets/commands/main.rb +157 -0
- data/lib/jets/commands/markdown/creator.rb +58 -0
- data/lib/jets/commands/markdown/index.rb +27 -0
- data/lib/jets/commands/markdown/page.rb +125 -0
- data/lib/jets/commands/markdown/shell.rb +11 -0
- data/lib/jets/commands/new.rb +157 -0
- data/lib/jets/commands/rake_command.rb +61 -0
- data/lib/jets/commands/rake_tasks.rb +46 -0
- data/lib/jets/commands/runner.rb +16 -0
- data/lib/jets/commands/sequence.rb +99 -0
- data/lib/jets/commands/stack_info.rb +30 -0
- data/lib/jets/commands/templates/skeleton/.gitignore +12 -0
- data/lib/jets/commands/templates/skeleton/.jetskeep +1 -0
- data/lib/jets/commands/templates/skeleton/.rspec +3 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +38 -0
- data/lib/jets/commands/templates/skeleton/Procfile +7 -0
- data/lib/jets/commands/templates/skeleton/README.md +11 -0
- data/lib/jets/commands/templates/skeleton/Rakefile +2 -0
- data/lib/jets/commands/templates/skeleton/app/controllers/application_controller.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/helpers/application_helper.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +4 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_record.rb +3 -0
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +25 -0
- data/lib/jets/commands/templates/skeleton/config.ru +5 -0
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +67 -0
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +26 -0
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +22 -0
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +7 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +9 -0
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +7 -0
- data/lib/jets/commands/templates/skeleton/config/routes.rb +9 -0
- data/lib/jets/commands/templates/skeleton/db/.gitkeep +0 -0
- data/lib/jets/commands/templates/skeleton/public/404.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/422.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/500.html +66 -0
- data/lib/jets/commands/templates/skeleton/public/favicon.ico +0 -0
- data/lib/jets/commands/templates/skeleton/public/index.html.tt +91 -0
- data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +15 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-index.json +51 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-show.json +53 -0
- data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +30 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +14 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/src/jets/crud.js +87 -0
- data/lib/jets/commands/upgrade.rb +145 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack +19 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +19 -0
- data/lib/jets/commands/url.rb +68 -0
- data/lib/jets/commands/webpacker_template.rb +18 -0
- data/lib/jets/controller.rb +3 -0
- data/lib/jets/controller/base.rb +108 -0
- data/lib/jets/controller/callbacks.rb +68 -0
- data/lib/jets/controller/cookies.rb +38 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +116 -0
- data/lib/jets/controller/middleware/local/api_gateway.rb +93 -0
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +38 -0
- data/lib/jets/controller/middleware/local/route_matcher.rb +106 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/reloader.rb +15 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack/adapter.rb +88 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +79 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +250 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/controller/stage.rb +33 -0
- data/lib/jets/core.rb +149 -0
- data/lib/jets/core_ext/kernel.rb +13 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +48 -0
- data/lib/jets/dotenv/ssm.rb +48 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +48 -0
- data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
- data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +39 -0
- data/lib/jets/generator/templates/erb/scaffold/edit.html.erb +6 -0
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +29 -0
- data/lib/jets/generator/templates/erb/scaffold/new.html.erb +5 -0
- data/lib/jets/generator/templates/erb/scaffold/show.html.erb +9 -0
- data/lib/jets/generator/templates/rails/assets/javascript.js +2 -0
- data/lib/jets/generator/templates/rails/assets/stylesheet.css +4 -0
- data/lib/jets/generator/templates/rails/controller/controller.rb +13 -0
- data/lib/jets/generator/templates/rails/helper/helper.rb +4 -0
- data/lib/jets/generator/templates/rails/scaffold/scaffold.css +80 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb +62 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +79 -0
- data/lib/jets/inflections.rb +32 -0
- data/lib/jets/internal/app/controllers/jets/mailers_controller.rb +97 -0
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +31 -0
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +25 -0
- data/lib/jets/internal/app/functions/jets/base_path.rb +157 -0
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +9 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +70 -0
- data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +43 -0
- data/lib/jets/internal/app/views/jets/mailers/email.html.erb +145 -0
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/lib/jets/internal/turbines/jets/mailer.rb +51 -0
- data/lib/jets/job/base.rb +39 -0
- data/lib/jets/job/dsl.rb +40 -0
- data/lib/jets/job/dsl/dynamodb_event.rb +65 -0
- data/lib/jets/job/dsl/event_source_mapping.rb +11 -0
- data/lib/jets/job/dsl/iot_event.rb +24 -0
- data/lib/jets/job/dsl/kinesis_event.rb +46 -0
- data/lib/jets/job/dsl/log_event.rb +15 -0
- data/lib/jets/job/dsl/rule_event.rb +75 -0
- data/lib/jets/job/dsl/s3_event.rb +36 -0
- data/lib/jets/job/dsl/sns_event.rb +54 -0
- data/lib/jets/job/dsl/sqs_event.rb +96 -0
- data/lib/jets/job/helpers/kinesis_event_helper.rb +13 -0
- data/lib/jets/job/helpers/log_event_helper.rb +17 -0
- data/lib/jets/job/helpers/s3_event_helper.rb +13 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda/dsl.rb +419 -0
- data/lib/jets/lambda/function.rb +29 -0
- data/lib/jets/lambda/function_constructor.rb +55 -0
- data/lib/jets/lambda/functions.rb +34 -0
- data/lib/jets/lambda/task.rb +111 -0
- data/lib/jets/logger.rb +21 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +139 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +33 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +51 -0
- data/lib/jets/middleware/layer.rb +34 -0
- data/lib/jets/middleware/stack.rb +77 -0
- data/lib/jets/naming.rb +49 -0
- data/lib/jets/overrides/lambda.rb +1 -0
- data/lib/jets/overrides/lambda/marshaller.rb +31 -0
- data/lib/jets/overrides/rails.rb +4 -0
- data/lib/jets/overrides/rails/asset_tag_helper.rb +114 -0
- data/lib/jets/overrides/rails/common_methods.rb +13 -0
- data/lib/jets/overrides/rails/rendering_helper.rb +26 -0
- data/lib/jets/overrides/rails/url_helper.rb +25 -0
- data/lib/jets/poly_fun.rb +73 -0
- data/lib/jets/poly_fun/base_executor.rb +125 -0
- data/lib/jets/poly_fun/lambda_executor.rb +16 -0
- data/lib/jets/poly_fun/node_error.rb +8 -0
- data/lib/jets/poly_fun/node_executor.rb +54 -0
- data/lib/jets/poly_fun/python_error.rb +8 -0
- data/lib/jets/poly_fun/python_executor.rb +23 -0
- data/lib/jets/preheat.rb +117 -0
- data/lib/jets/processors/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +61 -0
- data/lib/jets/rack_server.rb +86 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +71 -0
- data/lib/jets/resource/api_gateway/base_path/function.rb +42 -0
- data/lib/jets/resource/api_gateway/base_path/mapping.rb +44 -0
- data/lib/jets/resource/api_gateway/base_path/role.rb +76 -0
- data/lib/jets/resource/api_gateway/cors.rb +61 -0
- data/lib/jets/resource/api_gateway/deployment.rb +78 -0
- data/lib/jets/resource/api_gateway/domain_name.rb +59 -0
- data/lib/jets/resource/api_gateway/method.rb +98 -0
- data/lib/jets/resource/api_gateway/resource.rb +101 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +56 -0
- data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +42 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +63 -0
- data/lib/jets/resource/api_gateway/rest_api/routes.rb +7 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +8 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +130 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/to.rb +29 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/variable.rb +39 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision.rb +121 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +37 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +53 -0
- data/lib/jets/resource/child_stack/app_class.rb +107 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +92 -0
- data/lib/jets/resource/config/config_rule.rb +74 -0
- data/lib/jets/resource/config/managed_rule.rb +15 -0
- data/lib/jets/resource/events/rule.rb +31 -0
- data/lib/jets/resource/iam/application_role.rb +27 -0
- data/lib/jets/resource/iam/base_role_definition.rb +47 -0
- data/lib/jets/resource/iam/class_role.rb +74 -0
- data/lib/jets/resource/iam/function_role.rb +54 -0
- data/lib/jets/resource/iam/managed_policy.rb +22 -0
- data/lib/jets/resource/iam/policy_document.rb +41 -0
- data/lib/jets/resource/iot/topic_rule.rb +34 -0
- data/lib/jets/resource/lambda/event_source_mapping.rb +31 -0
- data/lib/jets/resource/lambda/function.rb +214 -0
- data/lib/jets/resource/lambda/function/environment.rb +62 -0
- data/lib/jets/resource/lambda/gem_layer.rb +17 -0
- data/lib/jets/resource/lambda/layer_version.rb +44 -0
- data/lib/jets/resource/logs/subscription_filter.rb +31 -0
- data/lib/jets/resource/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +85 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3/bucket.rb +24 -0
- data/lib/jets/resource/sns/subscription.rb +29 -0
- data/lib/jets/resource/sns/topic.rb +35 -0
- data/lib/jets/resource/sns/topic_policy.rb +40 -0
- data/lib/jets/resource/sqs/queue.rb +21 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +177 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +54 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +78 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +88 -0
- data/lib/jets/stack/builder.rb +43 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/depends.rb +34 -0
- data/lib/jets/stack/depends/item.rb +9 -0
- data/lib/jets/stack/function.rb +69 -0
- data/lib/jets/stack/main.rb +4 -0
- data/lib/jets/stack/main/dsl.rb +28 -0
- data/lib/jets/stack/main/dsl/base.rb +49 -0
- data/lib/jets/stack/main/dsl/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/dsl/iam.rb +8 -0
- data/lib/jets/stack/main/dsl/lambda.rb +83 -0
- data/lib/jets/stack/main/dsl/s3.rb +12 -0
- data/lib/jets/stack/main/dsl/sns.rb +16 -0
- data/lib/jets/stack/main/dsl/sqs.rb +10 -0
- data/lib/jets/stack/output.rb +35 -0
- data/lib/jets/stack/output/dsl.rb +19 -0
- data/lib/jets/stack/output/lookup.rb +36 -0
- data/lib/jets/stack/parameter.rb +37 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +31 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/stack/s3_event.rb +87 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +41 -0
- data/lib/jets/turbo.rb +55 -0
- data/lib/jets/turbo/database_yaml.rb +41 -0
- data/lib/jets/turbo/project/.gitignore +12 -0
- data/lib/jets/turbo/project/.jetskeep +1 -0
- data/lib/jets/turbo/project/Gemfile +16 -0
- data/lib/jets/turbo/project/Rakefile +2 -0
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +2 -0
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +2 -0
- data/lib/jets/turbo/project/app/jobs/application_job.rb +4 -0
- data/lib/jets/turbo/project/config.ru +5 -0
- data/lib/jets/turbo/project/config/application.rb +4 -0
- data/lib/jets/turbo/project/config/routes.rb +4 -0
- data/lib/jets/turbo/rails.rb +127 -0
- data/lib/jets/turbo/templates/config/database.yml +26 -0
- data/lib/jets/util.rb +38 -0
- data/lib/jets/version.rb +3 -0
- data/readme/prerelease.md +6 -0
- data/readme/testing.md +60 -0
- metadata +1004 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
require 'action_view'
|
|
2
|
+
require 'digest'
|
|
3
|
+
|
|
4
|
+
module Jets::Cfn
|
|
5
|
+
class Upload
|
|
6
|
+
include Jets::AwsServices
|
|
7
|
+
include ActionView::Helpers::NumberHelper # number_to_human_size
|
|
8
|
+
|
|
9
|
+
attr_reader :bucket_name
|
|
10
|
+
def initialize(bucket_name)
|
|
11
|
+
@bucket_name = bucket_name
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def upload
|
|
15
|
+
upload_cfn_templates
|
|
16
|
+
upload_zip_files
|
|
17
|
+
upload_assets
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def upload_cfn_templates
|
|
21
|
+
puts "Uploading CloudFormation templates to S3."
|
|
22
|
+
expression = "#{Jets::Naming.template_path_prefix}-*"
|
|
23
|
+
Dir.glob(expression).each do |path|
|
|
24
|
+
next unless File.file?(path)
|
|
25
|
+
|
|
26
|
+
key = "jets/cfn-templates/#{File.basename(path)}"
|
|
27
|
+
obj = s3_resource.bucket(bucket_name).object(key)
|
|
28
|
+
obj.upload_file(path)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def upload_zip_files
|
|
33
|
+
puts "Uploading code zip files to S3."
|
|
34
|
+
zip_area = "#{Jets.build_root}/stage/zips"
|
|
35
|
+
Dir.glob("#{zip_area}/*").each do |file|
|
|
36
|
+
upload_zip_file(file)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def upload_zip_file(path)
|
|
41
|
+
file_size = number_to_human_size(File.size(path))
|
|
42
|
+
|
|
43
|
+
puts "Uploading #{path} (#{file_size}) to S3"
|
|
44
|
+
start_time = Time.now
|
|
45
|
+
s3_key = "jets/code/#{File.basename(path)}"
|
|
46
|
+
obj = s3_resource.bucket(bucket_name).object(s3_key)
|
|
47
|
+
obj.upload_file(path)
|
|
48
|
+
puts "Uploaded to s3://#{bucket_name}/#{s3_key}".color(:green)
|
|
49
|
+
puts "Time to upload code to s3: #{pretty_time(Time.now-start_time).color(:green)}"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def upload_assets
|
|
53
|
+
puts "Checking for modified public assets and uploading to S3."
|
|
54
|
+
start_time = Time.now
|
|
55
|
+
upload_public_assets
|
|
56
|
+
puts "Time for public assets to s3: #{pretty_time(Time.now-start_time).color(:green)}"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def upload_public_assets
|
|
60
|
+
public_folders = %w[public]
|
|
61
|
+
public_folders = add_rack_assets(public_folders)
|
|
62
|
+
public_folders.each do |folder|
|
|
63
|
+
upload_asset_folder(folder)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def add_rack_assets(public_folders)
|
|
68
|
+
return public_folders unless Jets.rack?
|
|
69
|
+
public_folders + %w[rack/public]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def upload_asset_folder(folder)
|
|
73
|
+
expression = "#{Jets.root}/#{folder}/**/*"
|
|
74
|
+
group_size = 10
|
|
75
|
+
Dir.glob(expression).each_slice(group_size) do |paths|
|
|
76
|
+
threads = []
|
|
77
|
+
paths.each do |full_path|
|
|
78
|
+
next unless File.file?(full_path)
|
|
79
|
+
|
|
80
|
+
threads << Thread.new do
|
|
81
|
+
upload_to_s3(full_path)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
threads.each(&:join)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def upload_to_s3(full_path)
|
|
89
|
+
return if identical_on_s3?(full_path)
|
|
90
|
+
|
|
91
|
+
key = s3_key(full_path)
|
|
92
|
+
obj = s3_resource.bucket(bucket_name).object(key)
|
|
93
|
+
puts "Uploading s3://#{bucket_name}/#{key}" # uncomment to see and debug
|
|
94
|
+
obj.upload_file(full_path, acl: "public-read", cache_control: cache_control)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def s3_key(full_path)
|
|
98
|
+
relative_path = full_path.sub("#{Jets.root}/", '')
|
|
99
|
+
"jets/#{relative_path}"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def identical_on_s3?(full_path)
|
|
103
|
+
local_md5 = ::Digest::MD5.file(full_path)
|
|
104
|
+
key = s3_key(full_path)
|
|
105
|
+
begin
|
|
106
|
+
resp = s3.head_object(bucket: bucket_name, key: key)
|
|
107
|
+
rescue Aws::S3::Errors::NotFound
|
|
108
|
+
return false
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
remote_md5 = resp.etag.delete_prefix('"').delete_suffix('"')
|
|
112
|
+
local_md5 == remote_md5
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# If cache_control is provided, then it will set the entire cache-control header.
|
|
116
|
+
# If only max_age is provided, then we'll generate a cache_control header.
|
|
117
|
+
# Using max_age is the shorter and simply way of setting the cache_control header.
|
|
118
|
+
def cache_control
|
|
119
|
+
cache_control = Jets.config.assets.cache_control
|
|
120
|
+
unless cache_control
|
|
121
|
+
max_age = Jets.config.assets.max_age # defaults to 3600 in jets/application.rb
|
|
122
|
+
cache_control = "public, max-age=#{max_age}"
|
|
123
|
+
end
|
|
124
|
+
cache_control
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# http://stackoverflow.com/questions/4175733/convert-duration-to-hoursminutesseconds-or-similar-in-rails-3-or-ruby
|
|
128
|
+
def pretty_time(total_seconds)
|
|
129
|
+
minutes = (total_seconds / 60) % 60
|
|
130
|
+
seconds = total_seconds % 60
|
|
131
|
+
if total_seconds < 60
|
|
132
|
+
"#{seconds.to_i}s"
|
|
133
|
+
else
|
|
134
|
+
"#{minutes.to_i}m #{seconds.to_i}s"
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
end
|
|
139
|
+
end
|
data/lib/jets/cli.rb
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
require "thor"
|
|
2
|
+
|
|
3
|
+
class Jets::CLI
|
|
4
|
+
def self.start(given_args=ARGV)
|
|
5
|
+
new(given_args).start
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.thor_tasks
|
|
9
|
+
Jets::Commands::Base.namespaced_commands
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def initialize(given_args=ARGV, **config)
|
|
13
|
+
@given_args = given_args.dup
|
|
14
|
+
@config = config
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def start
|
|
18
|
+
# Needs to be at the beginning to avoid boot_jets which causes some load errors
|
|
19
|
+
if version_requested?
|
|
20
|
+
puts Jets.version
|
|
21
|
+
return
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Need to boot jets at this point for commands like: jets routes, deploy, console, etc to work
|
|
25
|
+
boot_jets
|
|
26
|
+
command_class = lookup(full_command)
|
|
27
|
+
if command_class
|
|
28
|
+
command_class.perform(full_command, thor_args)
|
|
29
|
+
else
|
|
30
|
+
main_help
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# The commands new and help do not call Jets.boot. Main reason is that Jets.boot should be run in a Jets project.
|
|
35
|
+
#
|
|
36
|
+
# * jets new - need to generate a project outside a project folder.
|
|
37
|
+
# * jets help - don't need to be in a project folder general help.
|
|
38
|
+
#
|
|
39
|
+
# When you are inside a project folder though, more help commands are available and displayed.
|
|
40
|
+
#
|
|
41
|
+
def boot_jets
|
|
42
|
+
set_jets_env_from_cli_arg!
|
|
43
|
+
command = thor_args.first
|
|
44
|
+
unless %w[new help].include?(command)
|
|
45
|
+
Jets::Turbo.new.charge # handles Afterburner mode
|
|
46
|
+
Jets.boot
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def version_requested?
|
|
51
|
+
# jets --version
|
|
52
|
+
# jets -v
|
|
53
|
+
version_flags = ["--version", "-v"]
|
|
54
|
+
@given_args.length == 1 && !(@given_args & version_flags).empty?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Adjust JETS_ENV before boot_jets is called for the `jets deploy` command. Must do this early in the process
|
|
58
|
+
# before Jets.boot because because `bundler_require` is called as part of the bootup process. It sets the Jets.env
|
|
59
|
+
# to whatever the JETS_ENV is at the time to require the right bundler group.
|
|
60
|
+
#
|
|
61
|
+
# Defaults to development when not set.
|
|
62
|
+
def set_jets_env_from_cli_arg!
|
|
63
|
+
# Pretty tricky, we need to use the raw @given_args as thor_args eventually calls Commands::Base#eager_load!
|
|
64
|
+
# which uses Jets.env before we get a chance to override ENV['JETS_ENV']
|
|
65
|
+
command, env = @given_args[0..1]
|
|
66
|
+
return unless %w[deploy delete].include?(command)
|
|
67
|
+
env = nil if env&.starts_with?('-')
|
|
68
|
+
return unless env
|
|
69
|
+
ENV['JETS_ENV'] = env ? env : 'development'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# thor_args normalized the args Array to work with our Thor command
|
|
73
|
+
# subclasses.
|
|
74
|
+
# 1. The namespace is stripe
|
|
75
|
+
# 2. Help is shifted in front if a help flag is detected
|
|
76
|
+
def thor_args
|
|
77
|
+
args = @given_args.clone
|
|
78
|
+
|
|
79
|
+
help_args = args & help_flags
|
|
80
|
+
unless help_args.empty?
|
|
81
|
+
# Allow using help flags at the end of the command to trigger help menu
|
|
82
|
+
args -= help_flags # remove "help" and help flags from args
|
|
83
|
+
args[0] = meth # first command will always be the meth now since
|
|
84
|
+
# we removed the help flags
|
|
85
|
+
args.unshift("help")
|
|
86
|
+
args.compact!
|
|
87
|
+
return args
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# reassigns the command without the namespace if reached here
|
|
91
|
+
args[0] = meth
|
|
92
|
+
args.compact
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def meth
|
|
96
|
+
return nil unless full_command
|
|
97
|
+
|
|
98
|
+
if full_command.include?(':')
|
|
99
|
+
full_command.split(':').pop
|
|
100
|
+
else
|
|
101
|
+
full_command
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
ALIASES = {
|
|
106
|
+
"g" => "generate",
|
|
107
|
+
"c" => "console",
|
|
108
|
+
"s" => "server",
|
|
109
|
+
"db" => "dbconsole",
|
|
110
|
+
}
|
|
111
|
+
def full_command
|
|
112
|
+
# Removes any args that starts with -, those are option args.
|
|
113
|
+
# Also remove "help" flag.
|
|
114
|
+
args = @given_args.reject {|o| o =~ /^-/ } - help_flags
|
|
115
|
+
command = args[0] # first argument should always be the command
|
|
116
|
+
command = ALIASES[command] || command
|
|
117
|
+
Jets::Commands::Base.autocomplete(command)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# 1. look up Thor tasks
|
|
121
|
+
# 2. look up Rake tasks
|
|
122
|
+
# 3. help menu with all commands when both Thor and Rake tasks are not found
|
|
123
|
+
def lookup(full_command)
|
|
124
|
+
thor_task_found = Jets::Commands::Base.namespaced_commands.include?(full_command)
|
|
125
|
+
if thor_task_found
|
|
126
|
+
return Jets::Commands::Base.klass_from_namespace(namespace)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
rake_task_found = Jets::Commands::RakeCommand.namespaced_commands.include?(full_command)
|
|
130
|
+
if rake_task_found
|
|
131
|
+
return Jets::Commands::RakeCommand
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# ["-h", "-?", "--help", "-D", "help"]
|
|
136
|
+
def help_flags
|
|
137
|
+
Thor::HELP_MAPPINGS + ["help"]
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def namespace
|
|
141
|
+
return nil unless full_command
|
|
142
|
+
|
|
143
|
+
if full_command.include?(':')
|
|
144
|
+
words = full_command.split(':')
|
|
145
|
+
words.pop
|
|
146
|
+
words.join(':')
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def main_help
|
|
151
|
+
shell = Thor::Shell::Basic.new
|
|
152
|
+
shell.say "Commands:"
|
|
153
|
+
shell.print_table(thor_list, :indent => 2, :truncate => true)
|
|
154
|
+
|
|
155
|
+
unless rake_list.empty?
|
|
156
|
+
shell.say "\nCommands via rake:"
|
|
157
|
+
shell.print_table(rake_list, :indent => 2, :truncate => true)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
shell.say "\n"
|
|
161
|
+
shell.say main_help_body
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def thor_list
|
|
165
|
+
Jets::Commands::Base.help_list(show_all_tasks)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def rake_list
|
|
169
|
+
list = Jets::Commands::RakeCommand.formatted_rake_tasks(show_all_tasks)
|
|
170
|
+
list.map do |array|
|
|
171
|
+
array[0] = "jets #{array[0]}"
|
|
172
|
+
array
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def show_all_tasks
|
|
177
|
+
@given_args.include?("--all") || @given_args.include?("-A")
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def main_help_body
|
|
181
|
+
<<-EOL
|
|
182
|
+
Add -h to any of the commands for more help. Examples:
|
|
183
|
+
|
|
184
|
+
jets call -h
|
|
185
|
+
jets routes -h
|
|
186
|
+
jets deploy -h
|
|
187
|
+
jets status -h
|
|
188
|
+
jets dynamodb:create -h
|
|
189
|
+
jets db:create -h
|
|
190
|
+
|
|
191
|
+
EOL
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
end
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
require "thor"
|
|
2
|
+
|
|
3
|
+
# Override thor's long_desc identation behavior
|
|
4
|
+
# https://github.com/erikhuda/thor/issues/398
|
|
5
|
+
class Thor
|
|
6
|
+
module Shell
|
|
7
|
+
class Basic
|
|
8
|
+
def print_wrapped(message, options = {})
|
|
9
|
+
message = "\n#{message}" unless message.starts_with?("\n")
|
|
10
|
+
stdout.puts message
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class Jets::Commands::Base < Thor
|
|
17
|
+
class << self
|
|
18
|
+
extend Memoist
|
|
19
|
+
|
|
20
|
+
# thor_args is an array of commands. Examples:
|
|
21
|
+
# ["help"]
|
|
22
|
+
# ["dynamodb:migrate"]
|
|
23
|
+
#
|
|
24
|
+
# Same signature as RakeCommand.perform. Not using full_command.
|
|
25
|
+
def perform(full_command, thor_args)
|
|
26
|
+
config = {} # doesnt seem like config is used
|
|
27
|
+
dispatch(nil, thor_args, nil, config)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Hacky way to handle error for 'jets new' when no project name is passed in to avoid
|
|
31
|
+
# this error:
|
|
32
|
+
#
|
|
33
|
+
# required arguments 'project_name' (Thor::RequiredArgumentMissingError)
|
|
34
|
+
def dispatch(command, given_args, given_opts, config)
|
|
35
|
+
if given_args.reject{|s| s =~ /^-/} == ['new'] # user forgot to pass a project name
|
|
36
|
+
given_args = ['help', 'new']
|
|
37
|
+
end
|
|
38
|
+
super
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Track all command subclasses.
|
|
42
|
+
def subclasses
|
|
43
|
+
@subclasses ||= []
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def inherited(base)
|
|
47
|
+
super
|
|
48
|
+
|
|
49
|
+
if base.name
|
|
50
|
+
self.subclasses << base
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Fully qualifed task names. Examples:
|
|
55
|
+
# build
|
|
56
|
+
# process:controller
|
|
57
|
+
# dynamodb:migrate:down
|
|
58
|
+
def namespaced_commands
|
|
59
|
+
eager_load!
|
|
60
|
+
subclasses.map do |klass|
|
|
61
|
+
# This all_tasks is part of Thor not the lambda/dsl.rb
|
|
62
|
+
klass.all_tasks.keys.map do |task_name|
|
|
63
|
+
klass = klass.to_s.sub('Jets::Commands::','')
|
|
64
|
+
namespace = klass =~ /^Main/ ? nil : klass.underscore.gsub('/',':')
|
|
65
|
+
[namespace, task_name].compact.join(':')
|
|
66
|
+
end
|
|
67
|
+
end.flatten.sort
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Use Jets banner instead of Thor to account for namespaces in commands.
|
|
71
|
+
def banner(command, namespace = nil, subcommand = false)
|
|
72
|
+
namespace = namespace_from_class(self)
|
|
73
|
+
command_name = command.usage # set with desc when defining tht Thor class
|
|
74
|
+
namespaced_command = [namespace, command_name].compact.join(':')
|
|
75
|
+
|
|
76
|
+
"jets #{namespaced_command}"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def namespace_from_class(klass)
|
|
80
|
+
namespace = klass.to_s.sub('Jets::Commands::', '').underscore.gsub('/',':')
|
|
81
|
+
namespace unless namespace == "main"
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def help_list(all=false)
|
|
85
|
+
# hack to show hidden comands when requested
|
|
86
|
+
Thor::HiddenCommand.class_eval do
|
|
87
|
+
def hidden?; false; end
|
|
88
|
+
end if all
|
|
89
|
+
|
|
90
|
+
list = []
|
|
91
|
+
eager_load!
|
|
92
|
+
subclasses.each do |klass|
|
|
93
|
+
commands = klass.printable_commands(true, false)
|
|
94
|
+
commands.reject! { |array| array[0].include?(':help') }
|
|
95
|
+
list += commands
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
list.sort_by! { |array| array[0] }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def klass_from_namespace(namespace)
|
|
102
|
+
if namespace.nil?
|
|
103
|
+
Jets::Commands::Main
|
|
104
|
+
else
|
|
105
|
+
class_name = namespace.gsub(':','/')
|
|
106
|
+
class_name = "Jets::Commands::#{class_name.camelize}"
|
|
107
|
+
class_name.constantize
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# If this fails to find a match then return the original full command
|
|
112
|
+
def autocomplete(full_command)
|
|
113
|
+
return nil if full_command.nil? # jets help
|
|
114
|
+
|
|
115
|
+
eager_load!
|
|
116
|
+
|
|
117
|
+
words = full_command.split(':')
|
|
118
|
+
namespace = words[0..-2].join(':') if words.size > 1
|
|
119
|
+
command = words.last
|
|
120
|
+
|
|
121
|
+
# Thor's normalize_command_name autocompletes the command but then we need to add the namespace back
|
|
122
|
+
begin
|
|
123
|
+
thor_subclass = klass_from_namespace(namespace) # could NameError
|
|
124
|
+
command = thor_subclass.normalize_command_name(command) # could Thor::AmbiguousCommandError
|
|
125
|
+
[namespace, command].compact.join(':')
|
|
126
|
+
rescue NameError
|
|
127
|
+
full_command # return original full_command
|
|
128
|
+
rescue Thor::AmbiguousCommandError => e
|
|
129
|
+
puts "Unable to autodetect the command name. #{e.message}."
|
|
130
|
+
full_command # return original full_command
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# For help menu to list all commands, we must eager load the command classes.
|
|
135
|
+
#
|
|
136
|
+
# There is special eager_load logic here because this is called super early as part of the CLI start.
|
|
137
|
+
# We cannot assume we have full access to to the project yet.
|
|
138
|
+
def eager_load!
|
|
139
|
+
return if Jets::Turbo.afterburner?
|
|
140
|
+
|
|
141
|
+
Jets.application.setup_auto_load_paths # in case an app/extension is defined
|
|
142
|
+
Jets::Autoloaders.once.eager_load
|
|
143
|
+
end
|
|
144
|
+
memoize :eager_load!
|
|
145
|
+
end
|
|
146
|
+
end
|