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,35 @@
|
|
|
1
|
+
# When upgrading jets, automatically rm -rf /tmp/jets/project in case the structure has changed.
|
|
2
|
+
module Jets::Builders
|
|
3
|
+
class Purger
|
|
4
|
+
def initialize
|
|
5
|
+
@project_name = Jets.config.project_name
|
|
6
|
+
@version_file = "/tmp/jets/#{@project_name}/jets_version.txt"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def purge
|
|
10
|
+
if version_changed?
|
|
11
|
+
last_version = @last_version || "unknown"
|
|
12
|
+
puts "The jets version has changed enough since the last build to merit refreshing the build cache."
|
|
13
|
+
puts "Current jets version: #{Jets::VERSION} Last built jets version: #{last_version}"
|
|
14
|
+
puts "Removing /tmp/jets/#{@project_name} to start fresh."
|
|
15
|
+
FileUtils.rm_rf("/tmp/jets/#{@project_name}")
|
|
16
|
+
end
|
|
17
|
+
write_version
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# When jets changes versions major or minor version consider it a big enough can to purge the cache
|
|
21
|
+
def version_changed?
|
|
22
|
+
return true unless File.exist?(@version_file)
|
|
23
|
+
|
|
24
|
+
@last_version = IO.read(@version_file).strip
|
|
25
|
+
last_major, last_minor, _ = @last_version.split('.')
|
|
26
|
+
current_major, current_minor, _ = Jets::VERSION.split('.')
|
|
27
|
+
last_major != current_major || last_minor != current_minor
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def write_version
|
|
31
|
+
FileUtils.mkdir_p(File.dirname(@version_file))
|
|
32
|
+
IO.write(@version_file, Jets::VERSION)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Jets::Builders
|
|
2
|
+
class RackPackager < RubyPackager
|
|
3
|
+
def finish
|
|
4
|
+
return unless gemfile_exist?
|
|
5
|
+
|
|
6
|
+
super
|
|
7
|
+
|
|
8
|
+
symlink_gems
|
|
9
|
+
copy_rackup_wrappers
|
|
10
|
+
rack_symlink
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def symlink_gems
|
|
14
|
+
ruby_folder = Jets::Gems.ruby_folder
|
|
15
|
+
# IE: @full_app_root: /tmp/jets/demo/stage/code/rack
|
|
16
|
+
dest = "#{@full_app_root}/vendor/gems/ruby/#{ruby_folder}"
|
|
17
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
|
18
|
+
FileUtils.ln_sf("/opt/ruby/gems/#{ruby_folder}", dest)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def copy_rackup_wrappers
|
|
22
|
+
# IE: @full_app_root: /tmp/jets/demo/stage/code/rack
|
|
23
|
+
rack_bin = "#{@full_app_root}/bin"
|
|
24
|
+
%w[rackup rackup.rb].each do |file|
|
|
25
|
+
src = File.expand_path("./rackup_wrappers/#{file}", File.dirname(__FILE__))
|
|
26
|
+
dest = "#{rack_bin}/#{file}"
|
|
27
|
+
FileUtils.mkdir_p(rack_bin) unless File.exist?(rack_bin)
|
|
28
|
+
FileUtils.cp(src, dest)
|
|
29
|
+
FileUtils.chmod 0755, dest
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Moves folder to a stage folder and create a symlink its place
|
|
34
|
+
# that links from /var/task to /tmp. Example:
|
|
35
|
+
#
|
|
36
|
+
# stage/code/rack => /tmp/rack
|
|
37
|
+
#
|
|
38
|
+
def rack_symlink
|
|
39
|
+
src = @full_app_root
|
|
40
|
+
return unless File.exist?(src)
|
|
41
|
+
|
|
42
|
+
dest = "#{stage_area}/rack"
|
|
43
|
+
dir = File.dirname(dest)
|
|
44
|
+
FileUtils.mkdir_p(dir) unless File.exist?(dir)
|
|
45
|
+
FileUtils.mv(src, dest)
|
|
46
|
+
|
|
47
|
+
# Create symlink
|
|
48
|
+
FileUtils.ln_sf("/tmp/rack", src)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
export JETS_MEGA=1
|
|
6
|
+
|
|
7
|
+
# Figure out where this script is located.
|
|
8
|
+
PROJECTDIR="`dirname \"$0\"`"
|
|
9
|
+
PROJECTDIR="`cd \"$PROJECTDIR/..\" && pwd`"
|
|
10
|
+
|
|
11
|
+
unset BUNDLE_IGNORE_CONFIG
|
|
12
|
+
# When jets packages the app code it creates .bundle/config in the project root.
|
|
13
|
+
# We want that to be used.
|
|
14
|
+
|
|
15
|
+
# Drop a pidfile
|
|
16
|
+
# echo $$ > /tmp/jets-rackup.pid
|
|
17
|
+
|
|
18
|
+
# Run the actual app using the bundled Ruby interpreter, with Bundler activated.
|
|
19
|
+
exec ruby -rbundler/setup bin/rackup.rb "$@"
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# TODO: Move logic into plugin instead
|
|
2
|
+
module Jets::Builders
|
|
3
|
+
class ReconfigureRails
|
|
4
|
+
def initialize(full_app_root)
|
|
5
|
+
# IE: @app_root: /tmp/jets/demo/stage/code/rack
|
|
6
|
+
@app_root = full_app_root
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Only support Rails right now. Maybe move into plugin when adding support
|
|
10
|
+
# to more frameworks. Or maybe better to just abstract but maintain in Jets.
|
|
11
|
+
def run
|
|
12
|
+
return unless rails?
|
|
13
|
+
|
|
14
|
+
puts "Mega Mode: Reconfiguring Rails app."
|
|
15
|
+
copy_initializer
|
|
16
|
+
update_gemfile
|
|
17
|
+
update_development_environment
|
|
18
|
+
set_favicon
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def copy_initializer
|
|
22
|
+
templates = File.expand_path("./reconfigure_rails", File.dirname(__FILE__))
|
|
23
|
+
relative_path = "config/initializers/jets.rb"
|
|
24
|
+
src = "#{templates}/#{relative_path}"
|
|
25
|
+
result = Jets::Erb.result(src, api_mode: rails_api?)
|
|
26
|
+
dest = "#{@app_root}/#{relative_path}"
|
|
27
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
|
28
|
+
IO.write(dest, result)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def api_mode?
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def update_gemfile
|
|
35
|
+
gemfile = "#{@app_root}/Gemfile"
|
|
36
|
+
lines = IO.readlines(gemfile)
|
|
37
|
+
lines = add_jets_rails_gem(lines)
|
|
38
|
+
lines = comment_out_ruby_declaration(lines)
|
|
39
|
+
write_content(gemfile, lines)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def add_jets_rails_gem(lines)
|
|
43
|
+
return lines if lines.detect { |l| l =~ /jets-rails/ }
|
|
44
|
+
lines << "\n"
|
|
45
|
+
lines << %Q|gem "jets-rails"\n|
|
|
46
|
+
lines
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Jets packages up and uses only one version of ruby and different declarations
|
|
50
|
+
# of ruby can cause issues.
|
|
51
|
+
def comment_out_ruby_declaration(lines)
|
|
52
|
+
lines.map do |l|
|
|
53
|
+
l =~ /^(ruby[ (].*)/ ? "# #{$1} # commented out by jets" : l
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def update_development_environment
|
|
58
|
+
env_file = "#{@app_root}/config/environments/development.rb"
|
|
59
|
+
lines = IO.readlines(env_file)
|
|
60
|
+
new_lines = lines.map do |line|
|
|
61
|
+
if line =~ /(config\.file_watcher.*)/
|
|
62
|
+
" # #{$1} # commented out by jets\n"
|
|
63
|
+
else
|
|
64
|
+
line
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
write_content(env_file, new_lines)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Evaluate the application layout and see if has a custom favicon defined yet.
|
|
71
|
+
# If not insert one and rewrite the application layout.
|
|
72
|
+
#
|
|
73
|
+
# This avoids serving binary assets from API gateway, instead serve it from s3 directly.
|
|
74
|
+
def set_favicon
|
|
75
|
+
app_layout = "#{@app_root}/app/views/layouts/application.html.erb"
|
|
76
|
+
return unless File.exist?(app_layout)
|
|
77
|
+
|
|
78
|
+
favicon = '<link rel="shortcut icon" href="<%= asset_path("/favicon.ico") %>">'
|
|
79
|
+
|
|
80
|
+
lines = IO.readlines(app_layout)
|
|
81
|
+
has_favicon = !!lines.find { |l| l.include?(favicon) }
|
|
82
|
+
return if has_favicon
|
|
83
|
+
|
|
84
|
+
content = IO.read(app_layout)
|
|
85
|
+
content = content.sub('</head>', "\n #{favicon}\n </head>")
|
|
86
|
+
|
|
87
|
+
IO.write(app_layout, content)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# lines is an Array
|
|
91
|
+
def write_content(path, lines)
|
|
92
|
+
content = lines.join + "\n"
|
|
93
|
+
IO.write(path, content)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Rudimentary rails detection
|
|
97
|
+
# Duplicated in builders/code_builders.rb
|
|
98
|
+
def rails?
|
|
99
|
+
config_ru = "#{@app_root}/config.ru"
|
|
100
|
+
return false unless File.exist?(config_ru)
|
|
101
|
+
!IO.readlines(config_ru).grep(/Rails.application/).empty?
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Rudimentary rails api detection
|
|
105
|
+
# Duplicated in builders/code_builders.rb
|
|
106
|
+
# Another way of checking is loading a rails console and checking Rails.application.config.api_only
|
|
107
|
+
# Using this way for simplicity.
|
|
108
|
+
def rails_api?
|
|
109
|
+
config_app = "#{@app_root}/config/application.rb"
|
|
110
|
+
return false unless File.exist?(config_app)
|
|
111
|
+
!IO.readlines(config_app).grep(/config.api_only.*=.*true/).empty?
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
JetsRails.stage = ENV['JETS_STAGE'] || 'dev' # for jets-rails StageMiddleware
|
|
2
|
+
|
|
3
|
+
# config/s3_base_url.txt is generated as part of jets build process
|
|
4
|
+
s3_base_url = IO.read("#{Rails.root}/config/s3_base_url.txt").strip rescue "s3_base_url_placeholder"
|
|
5
|
+
asset_host = "#{s3_base_url}/rack/public"
|
|
6
|
+
Rails.application.config.action_controller.asset_host = asset_host
|
|
7
|
+
Rails.application.config.public_file_server.enabled = true
|
|
8
|
+
|
|
9
|
+
<% unless @api_mode -%>
|
|
10
|
+
# Rails.application.config.assets.quiet = false
|
|
11
|
+
Rails.application.config.assets.debug = false
|
|
12
|
+
Rails.application.config.assets.compile = false
|
|
13
|
+
<% end -%>
|
|
14
|
+
|
|
15
|
+
# Looks better without colorizatiion in CloudWatch logs
|
|
16
|
+
Rails.application.config.colorize_logging = false
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
require "bundler" # for clean_old_submodules only
|
|
2
|
+
|
|
3
|
+
module Jets::Builders
|
|
4
|
+
class RubyPackager
|
|
5
|
+
include Util
|
|
6
|
+
|
|
7
|
+
attr_reader :full_app_root
|
|
8
|
+
def initialize(relative_app_root)
|
|
9
|
+
@full_app_root = "#{build_area}/#{relative_app_root}"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def install
|
|
13
|
+
return unless gemfile_exist?
|
|
14
|
+
|
|
15
|
+
reconfigure_ruby_version
|
|
16
|
+
clean_old_submodules
|
|
17
|
+
bundle_install
|
|
18
|
+
setup_bundle_config
|
|
19
|
+
copy_cache_gems
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# build gems in vendor/gems/ruby/2.5.0 (done in install phase)
|
|
23
|
+
def finish
|
|
24
|
+
return unless gemfile_exist?
|
|
25
|
+
tidy
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def gemfile_exist?
|
|
29
|
+
gemfile_path = "#{@full_app_root}/Gemfile"
|
|
30
|
+
File.exist?(gemfile_path)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Installs gems on the current target system: both compiled and non-compiled.
|
|
34
|
+
# If user is on a macosx machine, macosx gems will be installed.
|
|
35
|
+
# If user is on a linux machine, linux gems will be installed.
|
|
36
|
+
#
|
|
37
|
+
# Copies Gemfile* to /tmp/jets/demo/cache folder and installs
|
|
38
|
+
# gems with bundle install from there.
|
|
39
|
+
#
|
|
40
|
+
# We take the time to copy Gemfile and bundle into a separate directory
|
|
41
|
+
# because it gets left around to act as a 'cache'. So, when the builds the
|
|
42
|
+
# project gets built again not all the gems from get installed from the
|
|
43
|
+
# beginning.
|
|
44
|
+
def bundle_install
|
|
45
|
+
full_project_path = @full_app_root
|
|
46
|
+
headline "Bundling: running bundle install in cache area: #{cache_area}."
|
|
47
|
+
|
|
48
|
+
copy_gemfiles(full_project_path)
|
|
49
|
+
|
|
50
|
+
# Uncomment out to always remove the cache/vendor/gems to debug
|
|
51
|
+
# FileUtils.rm_rf("#{cache_area}/vendor/gems")
|
|
52
|
+
|
|
53
|
+
require "bundler" # dynamically require bundler so user can use any bundler
|
|
54
|
+
Bundler.with_clean_env do
|
|
55
|
+
sh(
|
|
56
|
+
"cd #{cache_area} && " \
|
|
57
|
+
"env BUNDLE_IGNORE_CONFIG=1 bundle install --path #{cache_area}/vendor/gems --without development test"
|
|
58
|
+
)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
remove_bundled_with("#{cache_area}/Gemfile.lock")
|
|
62
|
+
|
|
63
|
+
# Copy the Gemfile.lock back to the project in case it was updated.
|
|
64
|
+
# For example we add the jets-rails to the Gemfile.
|
|
65
|
+
copy_back_gemfile_lock
|
|
66
|
+
|
|
67
|
+
puts 'Bundle install success.'
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def copy_back_gemfile_lock
|
|
71
|
+
src = "#{cache_area}/Gemfile.lock"
|
|
72
|
+
dest = "#{@full_app_root}/Gemfile.lock"
|
|
73
|
+
FileUtils.cp(src, dest)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Clean up extra unneeded files to reduce package size
|
|
77
|
+
# Because we're removing files (something dangerous) use full paths.
|
|
78
|
+
def tidy
|
|
79
|
+
puts "Tidying project: removing ignored files to reduce package size."
|
|
80
|
+
tidy_project(@full_app_root)
|
|
81
|
+
# The rack sub project has it's own gitignore.
|
|
82
|
+
tidy_project(@full_app_root+"/rack")
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def tidy_project(path)
|
|
86
|
+
Tidy.new(path).cleanup!
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# This is in case the user has a 2.5.x variant.
|
|
90
|
+
# Force usage of ruby version that jets supports
|
|
91
|
+
# The lambda server only has ruby 2.5.0 installed.
|
|
92
|
+
def reconfigure_ruby_version
|
|
93
|
+
ruby_version = "#{@full_app_root}/.ruby-version"
|
|
94
|
+
IO.write(ruby_version, Jets::RUBY_VERSION)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# When using submodules, bundler leaves old submodules behind. Over time this inflates
|
|
98
|
+
# the size of the the cache gems. So we'll clean it up.
|
|
99
|
+
def clean_old_submodules
|
|
100
|
+
# https://stackoverflow.com/questions/38800129/parsing-a-gemfile-lock-with-bundler
|
|
101
|
+
lockfile = "#{cache_area}/Gemfile.lock"
|
|
102
|
+
return unless File.exist?(lockfile)
|
|
103
|
+
|
|
104
|
+
return if Bundler.bundler_major_version <= 1 # LockfileParser only works for Bundler version 2+
|
|
105
|
+
|
|
106
|
+
parser = Bundler::LockfileParser.new(Bundler.read_file(lockfile))
|
|
107
|
+
specs = parser.specs
|
|
108
|
+
|
|
109
|
+
# specs = Bundler.load.specs
|
|
110
|
+
# IE: spec.source.to_s: "https://github.com/tongueroo/webpacker.git (at jets@a8c4661)"
|
|
111
|
+
submoduled_specs = specs.select do |spec|
|
|
112
|
+
spec.source.to_s =~ /@\w+\)/
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# find git shas to keep
|
|
116
|
+
# IE: ["a8c4661", "abc4661"]
|
|
117
|
+
git_shas = submoduled_specs.map do |spec|
|
|
118
|
+
md = spec.source.to_s.match(/@(\w+)\)/)
|
|
119
|
+
md[1] # git_sha
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# IE: /tmp/jets/demo/cache/vendor/gems/ruby/2.5.0/bundler/gems/webpacker-a8c46614c675
|
|
123
|
+
Dir.glob("#{cache_area}/vendor/gems/ruby/2.5.0/bundler/gems/*").each do |path|
|
|
124
|
+
sha = path.split('-').last[0..6] # only first 7 chars of the git sha
|
|
125
|
+
unless git_shas.include?(sha)
|
|
126
|
+
# puts "Removing old submoduled gem: #{path}" # uncomment to see and debug
|
|
127
|
+
FileUtils.rm_rf(path) # REMOVE old submodule directory
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def copy_gemfiles(full_project_path)
|
|
133
|
+
FileUtils.mkdir_p(cache_area)
|
|
134
|
+
FileUtils.cp("#{full_project_path}/Gemfile", "#{cache_area}/Gemfile")
|
|
135
|
+
|
|
136
|
+
gemfile_lock = "#{full_project_path}/Gemfile.lock"
|
|
137
|
+
dest = "#{cache_area}/Gemfile.lock"
|
|
138
|
+
return unless File.exist?(gemfile_lock)
|
|
139
|
+
|
|
140
|
+
FileUtils.cp(gemfile_lock, dest)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Remove the BUNDLED WITH line since we don't control the bundler gem version on AWS Lambda
|
|
144
|
+
# And this can cause issues with require 'bundler/setup'
|
|
145
|
+
def remove_bundled_with(gemfile_lock)
|
|
146
|
+
lines = IO.readlines(gemfile_lock)
|
|
147
|
+
|
|
148
|
+
# amount is the number of lines to remove
|
|
149
|
+
new_lines, capture, count, amount = [], true, 0, 2
|
|
150
|
+
lines.each do |l|
|
|
151
|
+
capture = false if l.include?('BUNDLED WITH')
|
|
152
|
+
if capture
|
|
153
|
+
new_lines << l
|
|
154
|
+
end
|
|
155
|
+
if capture == false
|
|
156
|
+
count += 1
|
|
157
|
+
capture = count > amount # renable capture
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
content = new_lines.join('')
|
|
162
|
+
IO.write(gemfile_lock, content)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def setup_bundle_config
|
|
166
|
+
ensure_build_cache_bundle_config_exists!
|
|
167
|
+
|
|
168
|
+
# Override project's .bundle/config and ensure that .bundle/config matches
|
|
169
|
+
# at these 2 spots:
|
|
170
|
+
# app_root/.bundle/config
|
|
171
|
+
# vendor/gems/.bundle/config
|
|
172
|
+
cache_bundle_config = "#{cache_area}/.bundle/config"
|
|
173
|
+
app_bundle_config = "#{@full_app_root}/.bundle/config"
|
|
174
|
+
FileUtils.mkdir_p(File.dirname(app_bundle_config))
|
|
175
|
+
FileUtils.cp(cache_bundle_config, app_bundle_config)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# On circleci the "#{Jets.build_root}/.bundle/config" doesnt exist
|
|
179
|
+
# this only happens with ssh debugging, not when the ci.sh script gets ran.
|
|
180
|
+
# But on macosx it exists.
|
|
181
|
+
# Dont know why this is the case.
|
|
182
|
+
def ensure_build_cache_bundle_config_exists!
|
|
183
|
+
text =<<-EOL
|
|
184
|
+
---
|
|
185
|
+
BUNDLE_FROZEN: "true"
|
|
186
|
+
BUNDLE_PATH: "vendor/gems"
|
|
187
|
+
BUNDLE_WITHOUT: "development:test"
|
|
188
|
+
EOL
|
|
189
|
+
bundle_config = "#{cache_area}/.bundle/config"
|
|
190
|
+
FileUtils.mkdir_p(File.dirname(bundle_config))
|
|
191
|
+
IO.write(bundle_config, text)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def copy_cache_gems
|
|
195
|
+
vendor_gems = "#{@full_app_root}/vendor/gems"
|
|
196
|
+
if File.exist?(vendor_gems)
|
|
197
|
+
puts "Removing current vendor_gems from project"
|
|
198
|
+
FileUtils.rm_rf(vendor_gems)
|
|
199
|
+
end
|
|
200
|
+
# Leave #{Jets.build_root}/vendor_gems behind to act as cache
|
|
201
|
+
if File.exist?("#{cache_area}/vendor/gems")
|
|
202
|
+
FileUtils.mkdir_p(File.dirname(vendor_gems))
|
|
203
|
+
Jets::Util.cp_r("#{cache_area}/vendor/gems", vendor_gems)
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|