jets 3.1.0 → 5.0.0
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 +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +5 -1
- data/CHANGELOG.md +141 -0
- data/Gemfile +1 -5
- data/LICENSE.txt +1 -1
- data/README.md +21 -43
- data/Rakefile +3 -3
- data/backers.md +0 -5
- data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
- data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
- data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
- data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
- data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
- data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
- data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
- data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
- data/engines/internal/app/functions/jets/base_path.rb +109 -0
- data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
- data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
- data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
- data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
- data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
- data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
- data/engines/internal/app/views/layouts/application.html.erb +51 -0
- data/engines/internal/lib/internal/actiondispatch.rb +39 -0
- data/engines/internal/lib/internal/actionmailer.rb +51 -0
- data/engines/internal/lib/internal/actionview.rb +152 -0
- data/engines/internal/lib/internal/activerecord.rb +37 -0
- data/engines/internal/lib/internal/activesupport.rb +47 -0
- data/engines/internal/lib/internal/engine.rb +13 -0
- data/engines/internal/lib/internal/i18n_engine.rb +19 -0
- data/engines/internal/lib/internal/jets_controller.rb +46 -0
- data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
- data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
- data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
- data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
- data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
- data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
- data/exe/jets +1 -10
- data/jets.gemspec +16 -13
- data/lib/jets/app_loader.rb +77 -0
- data/lib/jets/application/bootstrap.rb +100 -0
- data/lib/jets/application/configuration/defaults.rb +256 -0
- data/lib/jets/application/configuration.rb +494 -0
- data/lib/jets/application/default_middleware_stack.rb +140 -0
- data/lib/jets/application/dummy_erb_compiler.rb +18 -0
- data/lib/jets/application/finisher.rb +266 -0
- data/lib/jets/application/routes_reloader.rb +80 -0
- data/lib/jets/application.rb +515 -199
- data/lib/jets/authorizer/base.rb +1 -0
- data/lib/jets/authorizer/dsl.rb +15 -11
- data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
- data/lib/jets/autoloaders/gem.rb +70 -0
- data/lib/jets/autoloaders/inflector.rb +21 -0
- data/lib/jets/autoloaders.rb +38 -101
- data/lib/jets/aws_info.rb +2 -2
- data/lib/jets/aws_services/stack_status.rb +1 -1
- data/lib/jets/aws_services.rb +8 -0
- data/lib/jets/backtrace_cleaner.rb +27 -0
- data/lib/jets/booter.rb +30 -118
- data/lib/jets/builders/code_builder.rb +64 -122
- data/lib/jets/builders/code_size.rb +1 -0
- data/lib/jets/builders/gem_replacer.rb +6 -12
- data/lib/jets/builders/handler_generator.rb +34 -14
- data/lib/jets/builders/lambda_layer.rb +2 -7
- data/lib/jets/builders/purger.rb +1 -1
- data/lib/jets/builders/rack_packager.rb +1 -1
- data/lib/jets/builders/ruby_packager.rb +54 -10
- data/lib/jets/builders/shim_vars/app.rb +10 -6
- data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
- data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
- data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
- data/lib/jets/bundle.rb +2 -9
- data/lib/jets/cfn/base.rb +82 -0
- data/lib/jets/cfn/builder/api/base.rb +12 -0
- data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
- data/lib/jets/cfn/builder/api/gateway.rb +104 -0
- data/lib/jets/cfn/builder/api/mapping.rb +54 -0
- data/lib/jets/cfn/builder/api/methods.rb +72 -0
- data/lib/jets/cfn/builder/api/paged.rb +30 -0
- data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
- data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
- data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
- data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
- data/lib/jets/cfn/builder/api/resources.rb +40 -0
- data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
- data/lib/jets/cfn/builder/controller.rb +28 -0
- data/lib/jets/cfn/builder/function.rb +9 -0
- data/lib/jets/cfn/builder/interface.rb +146 -0
- data/lib/jets/cfn/builder/job.rb +10 -0
- data/lib/jets/cfn/builder/nested.rb +130 -0
- data/lib/jets/cfn/builder/one_controller.rb +53 -0
- data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
- data/lib/jets/cfn/builder/parent.rb +149 -0
- data/lib/jets/cfn/builder/post_process.rb +25 -0
- data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
- data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
- data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
- data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
- data/lib/jets/cfn/deployment.rb +45 -0
- data/lib/jets/cfn/download.rb +39 -0
- data/lib/jets/cfn/params/api/base.rb +39 -0
- data/lib/jets/cfn/params/api/cors.rb +10 -0
- data/lib/jets/cfn/params/api/methods.rb +69 -0
- data/lib/jets/cfn/params/api/resources.rb +28 -0
- data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
- data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
- data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
- data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
- data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
- data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
- data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
- data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
- data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
- data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
- data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
- data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
- data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
- data/lib/jets/cfn/resource/iam/policy.rb +31 -0
- data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
- data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
- data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
- data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
- data/lib/jets/cfn/resource/lambda/function.rb +266 -0
- data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
- data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
- data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
- data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
- data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
- data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
- data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
- data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
- data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
- data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
- data/lib/jets/cfn/resource/nested/base.rb +38 -0
- data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
- data/lib/jets/cfn/resource/one/function.rb +66 -0
- data/lib/jets/cfn/resource/one/permission.rb +17 -0
- data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
- data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
- data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
- data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
- data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
- data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
- data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
- data/lib/jets/cfn/resource.rb +8 -0
- data/lib/jets/cfn/ship.rb +30 -16
- data/lib/jets/cfn/status.rb +1 -1
- data/lib/jets/cfn/template.rb +89 -0
- data/lib/jets/cfn/upload.rb +26 -23
- data/lib/jets/cli.rb +28 -203
- data/lib/jets/command/actions.rb +49 -0
- data/lib/jets/command/api_helpers.rb +41 -0
- data/lib/jets/command/aws_helpers.rb +26 -0
- data/lib/jets/command/base.rb +204 -0
- data/lib/jets/command/behavior.rb +83 -0
- data/lib/jets/command/environment_argument.rb +42 -0
- data/lib/jets/command/help/call.md +48 -0
- data/lib/jets/{commands → command}/help/deploy.md +1 -1
- data/lib/jets/command/help/logs.md +21 -0
- data/lib/jets/{commands → command}/help/new.md +3 -4
- data/lib/jets/command/help/projects.md +6 -0
- data/lib/jets/command/help/releases.md +37 -0
- data/lib/jets/command/help/rollback.md +5 -0
- data/lib/jets/command/help/routes.md +15 -0
- data/lib/jets/command/help/runner.md +40 -0
- data/lib/jets/command/help/stacks.md +6 -0
- data/lib/jets/command/help.rb +17 -0
- data/lib/jets/command/helpers/editor.rb +35 -0
- data/lib/jets/command.rb +133 -0
- data/lib/jets/commands/application/application_command.rb +40 -0
- data/lib/jets/commands/build/build_command.rb +33 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
- data/lib/jets/commands/call/autoload_guesser.rb +2 -2
- data/lib/jets/commands/call/base_guesser.rb +5 -5
- data/lib/jets/commands/call/call_command.rb +27 -0
- data/lib/jets/commands/call/caller.rb +184 -0
- data/lib/jets/commands/call/guesser.rb +1 -1
- data/lib/jets/commands/clean/base.rb +1 -1
- data/lib/jets/commands/clean/build.rb +1 -1
- data/lib/jets/commands/clean/clean_command.rb +15 -0
- data/lib/jets/commands/clean/log.rb +4 -4
- data/lib/jets/commands/configure/configure_command.rb +9 -0
- data/lib/jets/commands/console/console_command.rb +38 -0
- data/lib/jets/commands/credentials/USAGE +103 -0
- data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
- data/lib/jets/commands/credentials/credentials_command.rb +139 -0
- data/lib/jets/commands/db/system/change/change_command.rb +24 -0
- data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
- data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
- data/lib/jets/commands/delete/delete_command.rb +155 -0
- data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +30 -49
- data/lib/jets/commands/dev/dev_command.rb +19 -0
- data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
- data/lib/jets/commands/encrypted/USAGE +46 -0
- data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
- data/lib/jets/commands/gems/gems_command.rb +14 -0
- data/lib/jets/commands/generate/generate_command.rb +95 -0
- data/lib/jets/commands/help/USAGE +20 -0
- data/lib/jets/commands/help/help_command.rb +15 -0
- data/lib/jets/commands/initializers/initializers_command.rb +19 -0
- data/lib/jets/commands/logs/logs_command.rb +45 -0
- data/lib/jets/commands/new/new_command.rb +19 -0
- data/lib/jets/commands/notes/notes_command.rb +30 -0
- data/lib/jets/commands/plugin/plugin_command.rb +45 -0
- data/lib/jets/commands/projects/projects_command.rb +30 -0
- data/lib/jets/commands/rake/rake_command.rb +59 -0
- data/lib/jets/commands/releases/releases_command.rb +72 -0
- data/lib/jets/commands/rollback/rollback_command.rb +41 -0
- data/lib/jets/commands/routes/routes_command.rb +19 -0
- data/lib/jets/commands/runner/runner_command.rb +60 -0
- data/lib/jets/commands/server/server_command.rb +291 -0
- data/lib/jets/commands/stacks/stacks_command.rb +39 -0
- data/lib/jets/commands/status/status_command.rb +9 -0
- data/lib/jets/commands/url/url_command.rb +92 -0
- data/lib/jets/commands/version/version_command.rb +11 -0
- data/lib/jets/commands.rb +17 -0
- data/lib/jets/configuration.rb +166 -0
- data/lib/jets/controller/base.rb +105 -183
- data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
- data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
- data/lib/jets/controller/compat/caching.rb +13 -0
- data/lib/jets/controller/compat/future.rb +13 -0
- data/lib/jets/controller/compat/route_set.rb +47 -0
- data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
- data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
- data/lib/jets/controller/decorate/logging.rb +90 -0
- data/lib/jets/controller/decorate/redirecting.rb +16 -0
- data/lib/jets/controller/decorate/url_for.rb +10 -0
- data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
- data/lib/jets/controller/handler.rb +41 -0
- data/lib/jets/controller/middleware/main.rb +16 -8
- data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
- data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
- data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
- data/lib/jets/controller/rack_adapter/action.rb +35 -0
- data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
- data/lib/jets/controller/request/compat/params.rb +144 -0
- data/lib/jets/controller/request/compat/request.rb +125 -0
- data/lib/jets/controller/request.rb +35 -18
- data/lib/jets/controller/response/compat/response.rb +67 -0
- data/lib/jets/controller/response.rb +91 -8
- data/lib/jets/core.rb +153 -50
- data/lib/jets/core_ext/file.rb +9 -0
- data/lib/jets/core_ext/kernel.rb +2 -2
- data/lib/jets/core_ext/symbol.rb +5 -0
- data/lib/jets/core_ext.rb +4 -0
- data/lib/jets/dev_caching.rb +44 -0
- data/lib/jets/dotenv/ssm.rb +5 -2
- data/lib/jets/dotenv.rb +4 -3
- data/lib/jets/engine/configuration.rb +96 -0
- data/lib/jets/engine/turbines.rb +23 -0
- data/lib/jets/engine.rb +380 -0
- data/lib/jets/erb.rb +1 -1
- data/lib/jets/exception_reporting.rb +43 -0
- data/lib/jets/generators/job/job_generator.rb +41 -0
- data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
- data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
- data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
- data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
- data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
- data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
- data/lib/jets/generators/overrides/app/USAGE +38 -0
- data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
- data/lib/jets/generators/overrides/app/helpers.rb +139 -0
- data/lib/jets/generators/overrides/app/templates/.env +10 -0
- data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
- data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
- data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
- data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
- data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
- data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
- data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
- data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
- data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
- data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
- data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
- data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
- data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
- data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
- data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
- data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
- data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
- data/lib/jets/generators.rb +112 -0
- data/lib/jets/inflections.rb +1 -1
- data/lib/jets/info.rb +116 -0
- data/lib/jets/initializable.rb +95 -0
- data/lib/jets/job/base.rb +5 -2
- data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
- data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
- data/lib/jets/job/dsl/iot_event.rb +6 -6
- data/lib/jets/job/dsl/kinesis_event.rb +5 -5
- data/lib/jets/job/dsl/log_event.rb +2 -2
- data/lib/jets/job/dsl/rule_event.rb +7 -4
- data/lib/jets/job/dsl/s3_event.rb +1 -1
- data/lib/jets/job/dsl/sns_event.rb +6 -6
- data/lib/jets/job/dsl/sqs_event.rb +11 -11
- data/lib/jets/job/helpers/sns_event_helper.rb +8 -0
- data/lib/jets/job/helpers/sqs_event_helper.rb +8 -0
- data/lib/jets/klass.rb +5 -6
- data/lib/jets/lambda/definition.rb +118 -0
- data/lib/jets/lambda/dsl/warnings.rb +57 -0
- data/lib/jets/lambda/dsl.rb +73 -54
- data/lib/jets/lambda/function.rb +3 -3
- data/lib/jets/lambda/function_constructor.rb +6 -6
- data/lib/jets/lambda/functions.rb +36 -1
- data/lib/jets/mega/hash_converter.rb +2 -2
- data/lib/jets/mega/request/source.rb +1 -2
- data/lib/jets/mega/request.rb +4 -4
- data/lib/jets/names.rb +79 -0
- data/lib/jets/overrides/dummy/rails.rb +11 -0
- data/lib/jets/overrides/lambda/marshaller.rb +10 -0
- data/lib/jets/overrides/puma.rb +10 -0
- data/lib/jets/paths.rb +243 -0
- data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
- data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
- data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
- data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
- data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
- data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
- data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
- data/lib/jets/preheat.rb +26 -33
- data/lib/jets/processors/deducer.rb +2 -2
- data/lib/jets/processors/main_processor.rb +6 -13
- data/lib/jets/rack/logger.rb +77 -0
- data/lib/jets/router/compat/route_set.rb +177 -0
- data/lib/jets/router/dsl/mount.rb +40 -6
- data/lib/jets/router/dsl.rb +125 -105
- data/lib/jets/router/engine_mount.rb +36 -0
- data/lib/jets/router/help.rb +130 -0
- data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
- data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
- data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
- data/lib/jets/router/matcher.rb +140 -17
- data/lib/jets/router/resources/options.rb +6 -4
- data/lib/jets/router/route/after_initialize.rb +64 -0
- data/lib/jets/router/route/as.rb +93 -0
- data/lib/jets/router/route/authorizer.rb +1 -0
- data/lib/jets/router/route/compat.rb +45 -0
- data/lib/jets/router/route/info.rb +74 -0
- data/lib/jets/router/route/node.rb +137 -0
- data/lib/jets/router/route/path.rb +93 -0
- data/lib/jets/router/route.rb +109 -90
- data/lib/jets/router/route_set.rb +214 -0
- data/lib/jets/router/scope.rb +204 -69
- data/lib/jets/router/state.rb +67 -0
- data/lib/jets/router/util.rb +1 -31
- data/lib/jets/router.rb +64 -150
- data/lib/jets/ruby_version_check.rb +15 -0
- data/lib/jets/rule/base.rb +1 -0
- data/lib/jets/rule/dsl.rb +7 -7
- data/lib/jets/secrets.rb +110 -0
- data/lib/jets/spec_helpers/controllers/request.rb +22 -16
- data/lib/jets/spec_helpers/controllers.rb +32 -24
- data/lib/jets/spec_helpers.rb +0 -6
- data/lib/jets/stack/builder.rb +3 -2
- data/lib/jets/stack/definition.rb +1 -4
- data/lib/jets/stack/function.rb +2 -2
- data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
- data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
- data/lib/jets/stack/main/dsl/lambda.rb +26 -19
- data/lib/jets/stack/main/dsl/sqs.rb +2 -2
- data/lib/jets/stack/output/lookup.rb +1 -1
- data/lib/jets/stack/output.rb +2 -2
- data/lib/jets/stack/parameter.rb +2 -2
- data/lib/jets/stack/resource.rb +3 -3
- data/lib/jets/stack/s3_event.rb +51 -37
- data/lib/jets/stack.rb +1 -1
- data/lib/jets/tasks/engine.rake +85 -0
- data/lib/jets/tasks/framework.rake +66 -0
- data/lib/jets/tasks/log.rake +41 -0
- data/lib/jets/tasks/middleware.rake +9 -0
- data/lib/jets/tasks/misc.rake +81 -0
- data/lib/jets/tasks/statistics.rake +37 -0
- data/lib/jets/tasks/tmp.rake +51 -0
- data/lib/jets/tasks/yarn.rake +29 -0
- data/lib/jets/tasks/zeitwerk.rake +61 -0
- data/lib/jets/tasks.rb +18 -0
- data/lib/jets/tmp_loader.rb +1 -1
- data/lib/jets/turbine/configurable.rb +36 -0
- data/lib/jets/turbine/configuration.rb +101 -0
- data/lib/jets/turbine.rb +164 -20
- data/lib/jets/util/camelize.rb +24 -0
- data/lib/jets/util/yamler.rb +16 -0
- data/lib/jets/version.rb +1 -1
- data/lib/jets.rb +8 -14
- metadata +444 -347
- data/.python-version +0 -1
- data/.ruby-version +0 -1
- data/bin/release +0 -9
- data/lib/jets/application/defaults.rb +0 -200
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
- data/lib/jets/builders/reconfigure_rails.rb +0 -114
- data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
- data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
- data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
- data/lib/jets/cfn/builders/controller_builder.rb +0 -50
- data/lib/jets/cfn/builders/function_builder.rb +0 -14
- data/lib/jets/cfn/builders/interface.rb +0 -133
- data/lib/jets/cfn/builders/job_builder.rb +0 -14
- data/lib/jets/cfn/builders/parent_builder.rb +0 -130
- data/lib/jets/cfn/built_template.rb +0 -15
- data/lib/jets/cfn/template_source.rb +0 -61
- data/lib/jets/commands/base.rb +0 -145
- data/lib/jets/commands/call.rb +0 -182
- data/lib/jets/commands/clean.rb +0 -19
- data/lib/jets/commands/configure.rb +0 -51
- data/lib/jets/commands/console.rb +0 -12
- data/lib/jets/commands/db/environment-task.rake +0 -3
- data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
- data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
- data/lib/jets/commands/db/tasks.rb +0 -34
- data/lib/jets/commands/db.rb +0 -13
- data/lib/jets/commands/dbconsole.rb +0 -134
- data/lib/jets/commands/delete.rb +0 -136
- data/lib/jets/commands/dynamodb/migrate.rb +0 -9
- data/lib/jets/commands/dynamodb/migrator.rb +0 -36
- data/lib/jets/commands/dynamodb.rb +0 -19
- data/lib/jets/commands/gems.rb +0 -13
- data/lib/jets/commands/help/call.md +0 -69
- data/lib/jets/commands/help/dynamodb/generate.md +0 -52
- data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
- data/lib/jets/commands/help/routes.md +0 -16
- data/lib/jets/commands/help/runner.md +0 -17
- data/lib/jets/commands/help.rb +0 -9
- data/lib/jets/commands/import/base.rb +0 -49
- data/lib/jets/commands/import/cheatsheet.rb +0 -35
- data/lib/jets/commands/import/rack.rb +0 -16
- data/lib/jets/commands/import/rails.rb +0 -74
- data/lib/jets/commands/import/sequence.rb +0 -90
- data/lib/jets/commands/import/templates/config/database.yml +0 -30
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
- data/lib/jets/commands/import.rb +0 -12
- data/lib/jets/commands/main.rb +0 -166
- data/lib/jets/commands/markdown/creator.rb +0 -58
- data/lib/jets/commands/markdown/index.rb +0 -27
- data/lib/jets/commands/markdown/page.rb +0 -125
- data/lib/jets/commands/markdown/shell.rb +0 -11
- data/lib/jets/commands/new.rb +0 -173
- data/lib/jets/commands/rake_command.rb +0 -61
- data/lib/jets/commands/rake_tasks.rb +0 -50
- data/lib/jets/commands/runner.rb +0 -16
- data/lib/jets/commands/sequence.rb +0 -105
- data/lib/jets/commands/stack_info.rb +0 -30
- data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
- data/lib/jets/commands/templates/skeleton/.env.test +0 -3
- data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
- data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
- data/lib/jets/commands/templates/skeleton/Procfile +0 -7
- data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
- data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
- data/lib/jets/commands/upgrade/version1.rb +0 -136
- data/lib/jets/commands/upgrade.rb +0 -105
- data/lib/jets/commands/url.rb +0 -69
- data/lib/jets/commands/webpacker_template.rb +0 -18
- data/lib/jets/controller/callbacks.rb +0 -73
- data/lib/jets/controller/cookies/jar.rb +0 -269
- data/lib/jets/controller/cookies.rb +0 -38
- data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
- data/lib/jets/controller/error.rb +0 -4
- data/lib/jets/controller/forgery_protection.rb +0 -43
- data/lib/jets/controller/layout.rb +0 -17
- data/lib/jets/controller/middleware/cors.rb +0 -60
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
- data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
- data/lib/jets/controller/middleware/reloader.rb +0 -15
- data/lib/jets/controller/parameters_filter.rb +0 -29
- data/lib/jets/controller/params.rb +0 -117
- data/lib/jets/controller/redirection.rb +0 -61
- data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
- data/lib/jets/controller/rendering.rb +0 -96
- data/lib/jets/controller/stage.rb +0 -34
- data/lib/jets/controller.rb +0 -3
- data/lib/jets/db.rb +0 -15
- data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
- data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
- data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
- data/lib/jets/generator.rb +0 -112
- data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
- data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
- data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
- data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
- data/lib/jets/lambda/task.rb +0 -111
- data/lib/jets/logger.rb +0 -21
- data/lib/jets/middleware/configurator.rb +0 -84
- data/lib/jets/middleware/default_stack.rb +0 -53
- data/lib/jets/middleware/layer.rb +0 -34
- data/lib/jets/middleware/stack.rb +0 -77
- data/lib/jets/middleware.rb +0 -33
- data/lib/jets/naming.rb +0 -63
- data/lib/jets/overrides/rails/action_controller.rb +0 -13
- data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
- data/lib/jets/overrides/rails/common_methods.rb +0 -13
- data/lib/jets/overrides/rails/migration_checker.rb +0 -34
- data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
- data/lib/jets/overrides/rails/url_helper.rb +0 -88
- data/lib/jets/overrides/rails.rb +0 -6
- data/lib/jets/rack_server.rb +0 -86
- data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
- data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
- data/lib/jets/resource/api_gateway/cors.rb +0 -61
- data/lib/jets/resource/api_gateway/method.rb +0 -102
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
- data/lib/jets/resource/base.rb +0 -28
- data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
- data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
- data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
- data/lib/jets/resource/child_stack/api_resource.rb +0 -54
- data/lib/jets/resource/child_stack/base.rb +0 -24
- data/lib/jets/resource/iam/base_role_definition.rb +0 -47
- data/lib/jets/resource/lambda/function.rb +0 -221
- data/lib/jets/resource/logs/subscription_filter.rb +0 -31
- data/lib/jets/resource/permission.rb +0 -45
- data/lib/jets/resource.rb +0 -71
- data/lib/jets/router/error.rb +0 -4
- data/lib/jets/router/finder.rb +0 -47
- data/lib/jets/router/helpers/core_helper.rb +0 -27
- data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
- data/lib/jets/router/helpers.rb +0 -4
- data/lib/jets/router/method_creator/code.rb +0 -99
- data/lib/jets/router/method_creator/edit.rb +0 -12
- data/lib/jets/router/method_creator/generic.rb +0 -11
- data/lib/jets/router/method_creator/index.rb +0 -48
- data/lib/jets/router/method_creator/new.rb +0 -12
- data/lib/jets/router/method_creator/root.rb +0 -15
- data/lib/jets/router/method_creator/show.rb +0 -12
- data/lib/jets/router/method_creator.rb +0 -50
- data/lib/jets/turbo/database_yaml.rb +0 -41
- data/lib/jets/turbo/project/.gitignore +0 -12
- data/lib/jets/turbo/project/.jetskeep +0 -1
- data/lib/jets/turbo/project/Gemfile +0 -16
- data/lib/jets/turbo/project/Rakefile +0 -2
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
- data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
- data/lib/jets/turbo/project/config/application.rb +0 -5
- data/lib/jets/turbo/project/config/routes.rb +0 -4
- data/lib/jets/turbo/project/config.ru +0 -5
- data/lib/jets/turbo/rails.rb +0 -127
- data/lib/jets/turbo/templates/config/database.yml +0 -30
- data/lib/jets/turbo.rb +0 -56
- data/readme/prerelease.md +0 -6
- data/readme/testing.md +0 -60
- /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
- /data/lib/jets/{commands → command}/help/build.md +0 -0
- /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
- /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
- /data/lib/jets/{commands → command}/help/console.md +0 -0
- /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
- /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
- /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
- /data/lib/jets/{commands → command}/help/delete.md +0 -0
- /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
- /data/lib/jets/{commands → command}/help/generate.md +0 -0
- /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
- /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
- /data/lib/jets/{commands → command}/help/server.md +0 -0
- /data/lib/jets/{commands → command}/help/status.md +0 -0
- /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
- /data/lib/jets/{commands → command}/help/url.md +0 -0
- /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
- /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
- /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
|
@@ -26,13 +26,12 @@ module Jets::Builders
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def build
|
|
29
|
-
check_ruby_version
|
|
30
29
|
@version_purger.purge
|
|
31
30
|
cache_check_message
|
|
32
31
|
|
|
33
32
|
clean_start
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
assets_precompile
|
|
34
|
+
run_webpack # easier to do before we copy the project because node and yarn has been likely setup in the that dir
|
|
36
35
|
copy_project
|
|
37
36
|
copy_ruby_version_file
|
|
38
37
|
Dir.chdir("#{stage_area}/code") do
|
|
@@ -80,6 +79,7 @@ module Jets::Builders
|
|
|
80
79
|
return false if ENV['JETS_BUILD_NO_INTERNET']
|
|
81
80
|
s3_key = "jets/code/#{filename}"
|
|
82
81
|
begin
|
|
82
|
+
Jets.logger.debug "Checking s3://#{s3_bucket}/#{s3_key}"
|
|
83
83
|
s3.head_object(bucket: s3_bucket, key: s3_key)
|
|
84
84
|
true
|
|
85
85
|
rescue Aws::S3::Errors::NotFound, Aws::S3::Errors::Forbidden
|
|
@@ -95,7 +95,6 @@ module Jets::Builders
|
|
|
95
95
|
# Reconfigure code
|
|
96
96
|
store_s3_base_url
|
|
97
97
|
disable_webpacker_middleware
|
|
98
|
-
copy_internal_jets_code
|
|
99
98
|
|
|
100
99
|
# Code prep and zipping
|
|
101
100
|
check_code_size!
|
|
@@ -117,32 +116,6 @@ module Jets::Builders
|
|
|
117
116
|
CodeSize.check!
|
|
118
117
|
end
|
|
119
118
|
|
|
120
|
-
# Materialized internal code into actually user Jets app as part of the deploy process.
|
|
121
|
-
# Examples of things that we might materialize:
|
|
122
|
-
#
|
|
123
|
-
# Views
|
|
124
|
-
# Simple Functions
|
|
125
|
-
#
|
|
126
|
-
# For functions, We copy the files into the project because we cannot require
|
|
127
|
-
# simple functions directly since they are wrapped by an anonymous class.
|
|
128
|
-
def copy_internal_jets_code
|
|
129
|
-
files = []
|
|
130
|
-
|
|
131
|
-
mailers_controller = Jets::Router.has_controller?("Jets::MailersController")
|
|
132
|
-
if mailers_controller
|
|
133
|
-
files << "app/controllers/jets/mailers_controller.rb"
|
|
134
|
-
files << "app/views/jets/mailers"
|
|
135
|
-
files << "app/helpers/jets/mailers_helper.rb"
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
files.each do |relative_path|
|
|
139
|
-
src = File.expand_path("../internal/#{relative_path}", File.dirname(__FILE__))
|
|
140
|
-
dest = "#{"#{stage_area}/code"}/#{relative_path}"
|
|
141
|
-
FileUtils.mkdir_p(File.dirname(dest))
|
|
142
|
-
FileUtils.cp_r(src, dest)
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
|
|
146
119
|
# Thanks https://stackoverflow.com/questions/9354595/recursively-getting-the-size-of-a-directory
|
|
147
120
|
# Seems to overestimate a little bit but close enough.
|
|
148
121
|
def dir_size(folder)
|
|
@@ -157,8 +130,8 @@ module Jets::Builders
|
|
|
157
130
|
# At this point the minimal stack exists, so we can grab it with the AWS API.
|
|
158
131
|
# We do not want to grab this as part of the live request because it is slow.
|
|
159
132
|
def store_s3_base_url
|
|
133
|
+
return if Jets.config.mode == "job"
|
|
160
134
|
write_s3_base_url("#{stage_area}/code/config/s3_base_url.txt")
|
|
161
|
-
write_s3_base_url("#{stage_area}/rack/config/s3_base_url.txt") if Jets.rack?
|
|
162
135
|
end
|
|
163
136
|
|
|
164
137
|
def write_s3_base_url(full_path)
|
|
@@ -175,12 +148,11 @@ module Jets::Builders
|
|
|
175
148
|
#
|
|
176
149
|
return Jets.config.assets.base_url if Jets.config.assets.base_url
|
|
177
150
|
|
|
151
|
+
# Note: subdomain form works with CORs but the subfolder form does not. Using subfolder form.
|
|
178
152
|
region = Jets.aws.region
|
|
179
|
-
|
|
180
153
|
asset_base_url = region == 'us-east-1' ?
|
|
181
|
-
"https
|
|
182
|
-
"https
|
|
183
|
-
"#{asset_base_url}/#{s3_bucket}/jets" # s3_base_url
|
|
154
|
+
"https://#{s3_bucket}.s3.amazonaws.com/jets" :
|
|
155
|
+
"https://#{s3_bucket}.s3-#{region}.amazonaws.com/jets"
|
|
184
156
|
end
|
|
185
157
|
|
|
186
158
|
def s3_bucket
|
|
@@ -193,25 +165,66 @@ module Jets::Builders
|
|
|
193
165
|
FileUtils.touch(full_path)
|
|
194
166
|
end
|
|
195
167
|
|
|
168
|
+
def assets_precompile
|
|
169
|
+
return if skip_assets?
|
|
170
|
+
return unless gemfile_include?("sprockets-jets")
|
|
171
|
+
sh "jets assets:precompile"
|
|
172
|
+
end
|
|
173
|
+
|
|
196
174
|
# This happens in the current app directory not the tmp code for simplicity.
|
|
197
175
|
# This is because the node and yarn has likely been set up correctly there.
|
|
198
|
-
def
|
|
199
|
-
if
|
|
200
|
-
|
|
201
|
-
return
|
|
202
|
-
end
|
|
176
|
+
def run_webpack
|
|
177
|
+
return if skip_assets?
|
|
178
|
+
return unless gemfile_include?("jetpacker")
|
|
203
179
|
|
|
204
180
|
headline "Compling assets in current project directory"
|
|
205
|
-
return unless webpacker_included?
|
|
206
|
-
|
|
207
181
|
sh("yarn install")
|
|
182
|
+
|
|
183
|
+
ENV['WEBPACKER_ASSET_HOST'] = asset_host if Jets.config.assets.base_url
|
|
208
184
|
webpack_command = File.exist?("#{Jets.root}/bin/webpack") ?
|
|
209
185
|
"bin/webpack" :
|
|
210
186
|
`which webpack`.strip
|
|
211
187
|
sh "JETS_ENV=#{Jets.env} #{webpack_command}"
|
|
212
188
|
end
|
|
213
189
|
|
|
214
|
-
def
|
|
190
|
+
def skip_assets?
|
|
191
|
+
if ENV['JETS_SKIP_ASSETS']
|
|
192
|
+
puts "Skip compiling assets".color(:yellow) # useful for debugging
|
|
193
|
+
return true
|
|
194
|
+
end
|
|
195
|
+
return true if Jets.config.mode == "job"
|
|
196
|
+
return true unless Jets.config.respond_to?(:assets)
|
|
197
|
+
Jets.config.assets.enable_webpack
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# Different url for these. Examples:
|
|
201
|
+
#
|
|
202
|
+
# asset_host https://demo-dev-s3bucket-lw5vq7ht8ip4.s3.us-west-2.amazonaws.com/jets/public/packs/media/images/boltops-0dd1c6bd.png
|
|
203
|
+
# s3_base_url https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-lw5vq7ht8ip4/jets/packs/media/images/boltops-0dd1c6bd.png
|
|
204
|
+
#
|
|
205
|
+
# Interesting: asset_host works but s3_base_url does not for CORs. IE: reactjs or vuejs requests
|
|
206
|
+
# Thinking AWS configures the non-subdomain url endpoint to be more restrictive.
|
|
207
|
+
#
|
|
208
|
+
# Allow user to set assets.asset_host
|
|
209
|
+
#
|
|
210
|
+
# Jets.application.configure do
|
|
211
|
+
# config.assets.asset_host = "https://cloudfront.com/my/base/path"
|
|
212
|
+
# end
|
|
213
|
+
#
|
|
214
|
+
def asset_host
|
|
215
|
+
assets = Jets.config.assets
|
|
216
|
+
return assets.base_url if assets.base_url && assets.base_url != "s3_endpoint"
|
|
217
|
+
|
|
218
|
+
# By default, will use the s3 url endpoint directly by convention
|
|
219
|
+
region = Jets.aws.region
|
|
220
|
+
asset_base_url = region == 'us-east-1' ?
|
|
221
|
+
"https://#{s3_bucket}.s3.amazonaws.com" :
|
|
222
|
+
"https://#{s3_bucket}.s3.#{region}.amazonaws.com"
|
|
223
|
+
|
|
224
|
+
"#{asset_base_url}/jets/public" # s3_base_url
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def gemfile_include?(name)
|
|
215
228
|
# Old code, leaving around for now:
|
|
216
229
|
# Thanks: https://stackoverflow.com/questions/4195735/get-list-of-gems-being-used-by-a-bundler-project
|
|
217
230
|
# webpacker_loaded = Gem.loaded_specs.keys.include?("webpacker")
|
|
@@ -220,56 +233,7 @@ module Jets::Builders
|
|
|
220
233
|
# Checking this way because when using jets standalone for Afterburner mode we don't want to run into
|
|
221
234
|
# bundler gem collisions. TODO: figure out the a better way to handle the collisions.
|
|
222
235
|
lines = IO.readlines("#{Jets.root}/Gemfile")
|
|
223
|
-
lines.detect { |l| l =~ /
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
# This happens in the current app directory not the tmp code for simplicity
|
|
227
|
-
# This is because the node likely been set up correctly there.
|
|
228
|
-
def compile_rails_assets
|
|
229
|
-
return unless Jets.rack? && rails? && !rails_api?
|
|
230
|
-
|
|
231
|
-
if ENV['JETS_SKIP_ASSETS']
|
|
232
|
-
puts "Skip compiling rack assets".color(:yellow) # useful for debugging
|
|
233
|
-
return
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
# Need to capture JETS_ROOT since can be changed by Turbo mode
|
|
237
|
-
jets_root = Jets.root
|
|
238
|
-
Bundler.with_unbundled_env do
|
|
239
|
-
# Switch gemfile for Afterburner mode
|
|
240
|
-
gemfile = ENV['BUNDLE_GEMFILE']
|
|
241
|
-
ENV['BUNDLE_GEMFILE'] = "#{jets_root}/rack/Gemfile"
|
|
242
|
-
sh "cd #{jets_root} && bundle install"
|
|
243
|
-
ENV['BUNDLE_GEMFILE'] = gemfile
|
|
244
|
-
|
|
245
|
-
rails_assets(:clobber, jets_root: jets_root)
|
|
246
|
-
rails_assets(:precompile, jets_root: jets_root)
|
|
247
|
-
end
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
def rails_assets(cmd, jets_root:)
|
|
251
|
-
# rake is available in both rails 4 and 5. rails command only in 5
|
|
252
|
-
command = "bundle exec rake assets:#{cmd} --trace"
|
|
253
|
-
command = "RAILS_ENV=#{Jets.env} #{command}" unless Jets.env.development?
|
|
254
|
-
sh("cd #{jets_root}/rack && #{command}")
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
# Rudimentary rails detection
|
|
258
|
-
# Duplicated in builders/reconfigure_rails.rb
|
|
259
|
-
def rails?
|
|
260
|
-
config_ru = "#{Jets.root}/rack/config.ru"
|
|
261
|
-
return false unless File.exist?(config_ru)
|
|
262
|
-
!IO.readlines(config_ru).grep(/Rails.application/).empty?
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
# Rudimentary rails api detection
|
|
266
|
-
# Duplicated in builders/reconfigure_rails.rb
|
|
267
|
-
# Another way of checking is loading a rails console and checking Rails.application.config.api_only
|
|
268
|
-
# Using this way for simplicity.
|
|
269
|
-
def rails_api?
|
|
270
|
-
config_app = "#{Jets.root}/rack/config/application.rb"
|
|
271
|
-
return false unless File.exist?(config_app)
|
|
272
|
-
!IO.readlines(config_app).grep(/config.api_only.*=.*true/).empty?
|
|
236
|
+
lines.detect { |l| l =~ /#{name}/ && l !~ /\s.*#/ }
|
|
273
237
|
end
|
|
274
238
|
|
|
275
239
|
# Cleans out non-cached files like code-*.zip in Jets.build_root
|
|
@@ -293,7 +257,6 @@ module Jets::Builders
|
|
|
293
257
|
FileUtils.rm_rf("#{stage_area}/code") # remove current code folder
|
|
294
258
|
move_node_modules(Jets.root, Jets.build_root)
|
|
295
259
|
begin
|
|
296
|
-
# puts "cp -r #{@full_project_path} #{"#{stage_area}/code"}".color(:yellow) # uncomment to debug
|
|
297
260
|
Jets::Util.cp_r(@full_project_path, "#{stage_area}/code")
|
|
298
261
|
ensure
|
|
299
262
|
move_node_modules(Jets.build_root, Jets.root) # move node_modules directory back
|
|
@@ -322,7 +285,7 @@ module Jets::Builders
|
|
|
322
285
|
webpacker_yml = "#{"#{stage_area}/code"}/config/webpacker.yml"
|
|
323
286
|
return unless File.exist?(webpacker_yml)
|
|
324
287
|
|
|
325
|
-
config =
|
|
288
|
+
config = Jets::Util::Yamler.load_file(webpacker_yml)
|
|
326
289
|
config["development"]["compile"] = false # force this to be false for deployment
|
|
327
290
|
new_yaml = YAML.dump(config)
|
|
328
291
|
IO.write(webpacker_yml, new_yaml)
|
|
@@ -339,11 +302,14 @@ module Jets::Builders
|
|
|
339
302
|
memoize :rack_packager
|
|
340
303
|
|
|
341
304
|
def package_ruby
|
|
305
|
+
if ENV['JETS_SKIP_PACKAGE']
|
|
306
|
+
puts "Skip packaging ruby".color(:yellow) # useful for developing handlers
|
|
307
|
+
return
|
|
308
|
+
end
|
|
342
309
|
return if Jets.poly_only?
|
|
343
310
|
|
|
344
311
|
check_agree
|
|
345
312
|
ruby_packager.install
|
|
346
|
-
reconfigure_rails # call here after "#{stage_area}/code" is available
|
|
347
313
|
rack_packager.install
|
|
348
314
|
ruby_packager.finish # by this time we have a /tmp/jets/demo/stage/code/vendor/gems
|
|
349
315
|
rack_packager.finish
|
|
@@ -352,7 +318,7 @@ module Jets::Builders
|
|
|
352
318
|
end
|
|
353
319
|
|
|
354
320
|
def check_agree
|
|
355
|
-
agree = Jets::
|
|
321
|
+
agree = Jets::Api::Agree.new
|
|
356
322
|
agree.prompt
|
|
357
323
|
end
|
|
358
324
|
|
|
@@ -362,11 +328,6 @@ module Jets::Builders
|
|
|
362
328
|
lambda_layer.build
|
|
363
329
|
end
|
|
364
330
|
|
|
365
|
-
# TODO: Move logic into plugin instead
|
|
366
|
-
def reconfigure_rails
|
|
367
|
-
ReconfigureRails.new("#{"#{stage_area}/code"}/rack").run
|
|
368
|
-
end
|
|
369
|
-
|
|
370
331
|
def cache_check_message
|
|
371
332
|
if File.exist?("#{Jets.build_root}/cache")
|
|
372
333
|
puts "The #{Jets.build_root}/cache folder exists. Incrementally re-building the jets using the cache. To clear the cache: rm -rf #{Jets.build_root}/cache"
|
|
@@ -379,28 +340,9 @@ module Jets::Builders
|
|
|
379
340
|
FileUtils.cp_r(ruby_version_path, build_area)
|
|
380
341
|
end
|
|
381
342
|
|
|
382
|
-
SUPPORTED_RUBY_VERSIONS = %w[2.5 2.7]
|
|
383
|
-
def check_ruby_version
|
|
384
|
-
return unless ENV['JETS_RUBY_CHECK'] == '0' || Jets.config.ruby.check == false
|
|
385
|
-
return if ruby_version_supported?
|
|
386
|
-
puts <<~EOL.color(:red)
|
|
387
|
-
You are using Ruby version #{RUBY_VERSION} which is not supported by Jets.
|
|
388
|
-
Please use one of the Jets supported ruby versions: #{SUPPORTED_RUBY_VERSIONS.join(' ')}
|
|
389
|
-
If you would like to skip this check you can set: JETS_RUBY_CHECK=0
|
|
390
|
-
EOL
|
|
391
|
-
exit 1
|
|
392
|
-
end
|
|
393
|
-
|
|
394
|
-
def ruby_version_supported?
|
|
395
|
-
md = RUBY_VERSION.match(/(\d+)\.(\d+)\.\d+/)
|
|
396
|
-
major, minor = md[1], md[2]
|
|
397
|
-
detected_ruby = [major, minor].join('.')
|
|
398
|
-
SUPPORTED_RUBY_VERSIONS.include?(detected_ruby)
|
|
399
|
-
end
|
|
400
|
-
|
|
401
343
|
# Group all the path settings together here
|
|
402
344
|
def self.tmp_code
|
|
403
|
-
Jets::
|
|
345
|
+
Jets::Cfn::Builder.tmp_code
|
|
404
346
|
end
|
|
405
347
|
|
|
406
348
|
def tmp_code
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
module Jets::Builders
|
|
2
2
|
class GemReplacer
|
|
3
3
|
extend Memoist
|
|
4
|
+
include Util
|
|
5
|
+
|
|
4
6
|
def initialize(options)
|
|
5
7
|
@options = options
|
|
6
8
|
end
|
|
7
9
|
|
|
8
10
|
def run
|
|
9
11
|
# use_gemspec to resolve http-parser gem issue
|
|
10
|
-
|
|
11
|
-
check = Jets::Gems::Check.new(use_gemspec: use_gemspec)
|
|
12
|
+
check = Jets::Api::Gems::Check.new(use_gemspec: true)
|
|
12
13
|
if Jets.config.lambda.layers.empty?
|
|
13
14
|
found_gems = check.run! # exits early if missing gems found
|
|
14
15
|
else
|
|
@@ -18,7 +19,7 @@ module Jets::Builders
|
|
|
18
19
|
|
|
19
20
|
# found gems will only have gems that were found
|
|
20
21
|
found_gems.each do |gem_name|
|
|
21
|
-
gem_extractor = Jets::Gems::Extract::Gem.new(gem_name, @options)
|
|
22
|
+
gem_extractor = Jets::Api::Gems::Extract::Gem.new(gem_name, @options)
|
|
22
23
|
gem_extractor.run
|
|
23
24
|
rename_gem(gem_name)
|
|
24
25
|
end
|
|
@@ -27,7 +28,7 @@ module Jets::Builders
|
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def rename_gem(gem_name)
|
|
30
|
-
ruby_folder = "#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}"
|
|
31
|
+
ruby_folder = "#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Api::Gems.ruby_folder}"
|
|
31
32
|
gems_folder = "#{ruby_folder}/gems"
|
|
32
33
|
expr = "#{gems_folder}/#{gem_name}-x*-{darwin,linux}"
|
|
33
34
|
src = Dir.glob(expr).first
|
|
@@ -37,15 +38,8 @@ module Jets::Builders
|
|
|
37
38
|
FileUtils.mv(src, dest) unless File.exist?(dest) # looks like rename_gem actually runs twice
|
|
38
39
|
end
|
|
39
40
|
|
|
40
|
-
def sh(command)
|
|
41
|
-
puts "=> #{command}".color(:green)
|
|
42
|
-
success = system(command)
|
|
43
|
-
abort("Command Failed: #{command}") unless success
|
|
44
|
-
success
|
|
45
|
-
end
|
|
46
|
-
|
|
47
41
|
def ruby_folder
|
|
48
|
-
Jets::Gems.ruby_folder
|
|
42
|
+
Jets::Api::Gems.ruby_folder
|
|
49
43
|
end
|
|
50
44
|
|
|
51
45
|
# remove unnecessary files to reduce package size
|
|
@@ -47,6 +47,32 @@ module Jets::Builders
|
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
def generate_handler(vars)
|
|
51
|
+
template = handler_template(vars)
|
|
52
|
+
result = evaluate_template(template, vars)
|
|
53
|
+
dest = "#{tmp_code}/#{vars.dest_path}"
|
|
54
|
+
|
|
55
|
+
# Dont generate handles for all controllers if one_lambda_for_all_controllers
|
|
56
|
+
# Instead generate the same handler and use it. Writing to the same file
|
|
57
|
+
# multiple times but this is a simple way to implement this.
|
|
58
|
+
# It also keeps the logical in one spot.
|
|
59
|
+
if Jets.config.cfn.build.controllers == 'one_lambda_for_all_controllers' &&
|
|
60
|
+
dest.include?('handlers/controllers')
|
|
61
|
+
dest = "handlers/controller.rb"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
|
65
|
+
IO.write(dest, result)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def handler_template(vars)
|
|
69
|
+
if vars.process_type == "controller"
|
|
70
|
+
Jets.config.cfn.build.controllers + ".rb" # IE: templates/handlers/one_lambda_for_all_controllers.rb
|
|
71
|
+
else # job, rule, etc
|
|
72
|
+
"one_lambda_per_method.rb"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
50
76
|
# source_path: app/functions/simple.rb
|
|
51
77
|
def copy_simple_function(source_path)
|
|
52
78
|
# Handler: handlers/controllers/posts_controller.handle
|
|
@@ -56,7 +82,7 @@ module Jets::Builders
|
|
|
56
82
|
end
|
|
57
83
|
|
|
58
84
|
def app_files
|
|
59
|
-
Jets::
|
|
85
|
+
Jets::Cfn::Builder.app_files
|
|
60
86
|
end
|
|
61
87
|
|
|
62
88
|
def poly_shims
|
|
@@ -64,7 +90,7 @@ module Jets::Builders
|
|
|
64
90
|
|
|
65
91
|
app_files.each do |path|
|
|
66
92
|
vars = Jets::Builders::ShimVars::App.new(path)
|
|
67
|
-
poly_tasks = vars.klass.
|
|
93
|
+
poly_tasks = vars.klass.definitions.select { |d| d.lang != :ruby }
|
|
68
94
|
poly_tasks.each do |task|
|
|
69
95
|
source_path = get_source_path(path, task)
|
|
70
96
|
if File.exist?(source_path)
|
|
@@ -100,7 +126,8 @@ module Jets::Builders
|
|
|
100
126
|
end
|
|
101
127
|
|
|
102
128
|
def jets_base_path
|
|
103
|
-
copy_function_template("functions/jets/base_path.rb", stage_name: Jets::Resource::ApiGateway::Deployment.stage_name)
|
|
129
|
+
copy_function_template("functions/jets/base_path.rb", stage_name: Jets::Cfn::Resource::ApiGateway::Deployment.stage_name)
|
|
130
|
+
copy_function_template("functions/jets/base_path_mapping.rb")
|
|
104
131
|
end
|
|
105
132
|
|
|
106
133
|
def s3_bucket_config
|
|
@@ -109,8 +136,8 @@ module Jets::Builders
|
|
|
109
136
|
|
|
110
137
|
# Copy code from internal folder to materialized app code
|
|
111
138
|
def copy_function_template(path, vars={})
|
|
112
|
-
|
|
113
|
-
src = "#{
|
|
139
|
+
engines_internal_path = File.expand_path("../../../engines/internal", __dir__)
|
|
140
|
+
src = "#{engines_internal_path}/app/#{path}"
|
|
114
141
|
result = Jets::Erb.result(src, vars)
|
|
115
142
|
dest = "#{tmp_code}/handlers/#{path}"
|
|
116
143
|
FileUtils.mkdir_p(File.dirname(dest))
|
|
@@ -124,7 +151,7 @@ module Jets::Builders
|
|
|
124
151
|
source_path = fun.source_file
|
|
125
152
|
unless source_path
|
|
126
153
|
attributes = fun.template.values.first
|
|
127
|
-
function_name = attributes[
|
|
154
|
+
function_name = attributes[:Properties][:FunctionName]
|
|
128
155
|
puts "WARN: missing source file for: '#{function_name}' function".color(:yellow)
|
|
129
156
|
return
|
|
130
157
|
end
|
|
@@ -166,15 +193,8 @@ module Jets::Builders
|
|
|
166
193
|
IO.write(dest, result)
|
|
167
194
|
end
|
|
168
195
|
|
|
169
|
-
def generate_handler(vars)
|
|
170
|
-
result = evaluate_template("handler.rb", vars)
|
|
171
|
-
dest = "#{tmp_code}/#{vars.dest_path}"
|
|
172
|
-
FileUtils.mkdir_p(File.dirname(dest))
|
|
173
|
-
IO.write(dest, result)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
196
|
def evaluate_template(template_file, vars)
|
|
177
|
-
template_path = File.expand_path("../templates/#{template_file}", __FILE__)
|
|
197
|
+
template_path = File.expand_path("../templates/handlers/#{template_file}", __FILE__)
|
|
178
198
|
Jets::Erb.result(template_path, vars: vars)
|
|
179
199
|
end
|
|
180
200
|
|
|
@@ -7,7 +7,7 @@ module Jets::Builders
|
|
|
7
7
|
# Then replace the binary gems.
|
|
8
8
|
def build
|
|
9
9
|
consolidate_gems_to_opt
|
|
10
|
-
replace_compiled_gems unless Jets.config.
|
|
10
|
+
replace_compiled_gems unless Jets.config.pro.disable
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
# Also restructure the folder from:
|
|
@@ -20,11 +20,6 @@ module Jets::Builders
|
|
|
20
20
|
src = "#{stage_area}/code/vendor/gems/ruby/#{Jets.ruby_folder}"
|
|
21
21
|
dest = "#{stage_area}/opt/ruby/gems/#{Jets.ruby_folder}"
|
|
22
22
|
rsync_and_link(src, dest)
|
|
23
|
-
|
|
24
|
-
return unless Jets.rack?
|
|
25
|
-
|
|
26
|
-
src = "#{stage_area}/rack/vendor/gems/ruby/#{Jets.ruby_folder}"
|
|
27
|
-
rsync_and_link(src, dest)
|
|
28
23
|
end
|
|
29
24
|
|
|
30
25
|
def rsync_and_link(src, dest)
|
|
@@ -36,7 +31,7 @@ module Jets::Builders
|
|
|
36
31
|
|
|
37
32
|
# Create symlink that will point to the gems in the Lambda Layer:
|
|
38
33
|
# stage/opt/ruby/gems/2.5.0 -> /opt/ruby/gems/2.5.0
|
|
39
|
-
FileUtils.ln_sf("/opt/ruby/gems/#{Jets::Gems.ruby_folder}", src)
|
|
34
|
+
FileUtils.ln_sf("/opt/ruby/gems/#{Jets::Api::Gems.ruby_folder}", src)
|
|
40
35
|
end
|
|
41
36
|
|
|
42
37
|
# replace_compiled_gems:
|
data/lib/jets/builders/purger.rb
CHANGED
|
@@ -11,7 +11,7 @@ module Jets::Builders
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def symlink_gems
|
|
14
|
-
ruby_folder = Jets::Gems.ruby_folder
|
|
14
|
+
ruby_folder = Jets::Api::Gems.ruby_folder
|
|
15
15
|
# IE: @full_app_root: /tmp/jets/demo/stage/code/rack
|
|
16
16
|
dest = "#{@full_app_root}/vendor/gems/ruby/#{ruby_folder}"
|
|
17
17
|
FileUtils.mkdir_p(File.dirname(dest))
|
|
@@ -3,9 +3,9 @@ require "bundler" # for clean_old_submodules only
|
|
|
3
3
|
module Jets::Builders
|
|
4
4
|
class RubyPackager
|
|
5
5
|
include Util
|
|
6
|
-
|
|
7
|
-
GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux)/
|
|
8
|
-
|
|
6
|
+
|
|
7
|
+
GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux)/
|
|
8
|
+
|
|
9
9
|
attr_reader :full_app_root
|
|
10
10
|
def initialize(relative_app_root)
|
|
11
11
|
@full_app_root = "#{build_area}/#{relative_app_root}"
|
|
@@ -16,6 +16,7 @@ module Jets::Builders
|
|
|
16
16
|
|
|
17
17
|
clean_old_submodules
|
|
18
18
|
bundle_install
|
|
19
|
+
bundle_check
|
|
19
20
|
copy_bundle_config
|
|
20
21
|
copy_cache_gems
|
|
21
22
|
end
|
|
@@ -48,6 +49,7 @@ module Jets::Builders
|
|
|
48
49
|
|
|
49
50
|
copy_gemfiles(full_project_path)
|
|
50
51
|
copy_bundled_gems(full_project_path)
|
|
52
|
+
run_prebundle_copy
|
|
51
53
|
|
|
52
54
|
# Uncomment out to always remove the cache/vendor/gems to debug
|
|
53
55
|
# FileUtils.rm_rf("#{cache_area}/vendor/gems")
|
|
@@ -75,7 +77,39 @@ module Jets::Builders
|
|
|
75
77
|
# For example we add the jets-rails to the Gemfile.
|
|
76
78
|
copy_back_gemfile_lock
|
|
77
79
|
|
|
78
|
-
puts 'Bundle install
|
|
80
|
+
puts 'Bundle install completed'
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Example `bundle check` error:
|
|
84
|
+
#
|
|
85
|
+
# The following gems are missing
|
|
86
|
+
# * date (3.3.3)
|
|
87
|
+
# * timeout (0.3.2)
|
|
88
|
+
# Install missing gems with `bundle install`
|
|
89
|
+
#
|
|
90
|
+
# Example success:
|
|
91
|
+
#
|
|
92
|
+
# The Gemfile's dependencies are satisfied
|
|
93
|
+
#
|
|
94
|
+
def bundle_check
|
|
95
|
+
out = ''
|
|
96
|
+
Bundler.with_unbundled_env do
|
|
97
|
+
out = `cd #{cache_area} && bundle check 2>&1`
|
|
98
|
+
end
|
|
99
|
+
if out.include?("missing")
|
|
100
|
+
puts "Failed: bundle check".color(:red)
|
|
101
|
+
puts <<~EOL
|
|
102
|
+
This means something went wrong with the bundle install.
|
|
103
|
+
Jets will prevent the deployment to AWS Lambda.
|
|
104
|
+
It's better to error now instead of finding out on AWS Lambda.
|
|
105
|
+
The bundle install can fail for different system-specific reasons.
|
|
106
|
+
It could be an outdated or incompatible version of RubyGems and Ruby.
|
|
107
|
+
|
|
108
|
+
Related: https://community.boltops.com/t/could-not-find-timeout-0-3-1-in-any-of-the-sources/996
|
|
109
|
+
|
|
110
|
+
EOL
|
|
111
|
+
exit 1
|
|
112
|
+
end
|
|
79
113
|
end
|
|
80
114
|
|
|
81
115
|
def copy_back_gemfile_lock
|
|
@@ -126,17 +160,11 @@ module Jets::Builders
|
|
|
126
160
|
Dir.glob("#{cache_area}/vendor/gems/ruby/2.5.0/bundler/gems/*").each do |path|
|
|
127
161
|
sha = path.split('-').last[0..6] # only first 7 chars of the git sha
|
|
128
162
|
unless git_shas.include?(sha)
|
|
129
|
-
# puts "Removing old submoduled gem: #{path}" # uncomment to see and debug
|
|
130
163
|
FileUtils.rm_rf(path) # REMOVE old submodule directory
|
|
131
164
|
end
|
|
132
165
|
end
|
|
133
166
|
end
|
|
134
167
|
|
|
135
|
-
def copy_bundled_gems(full_project_path)
|
|
136
|
-
src = "#{full_project_path}/bundled_gems"
|
|
137
|
-
return unless File.exist?(src)
|
|
138
|
-
Jets::Util.cp_r(src, "#{cache_area}/bundled_gems")
|
|
139
|
-
end
|
|
140
168
|
|
|
141
169
|
def copy_gemfiles(full_project_path)
|
|
142
170
|
FileUtils.mkdir_p(cache_area)
|
|
@@ -149,6 +177,22 @@ module Jets::Builders
|
|
|
149
177
|
FileUtils.cp(gemfile_lock, dest)
|
|
150
178
|
end
|
|
151
179
|
|
|
180
|
+
def copy_bundled_gems(full_project_path)
|
|
181
|
+
src = "#{full_project_path}/bundled_gems"
|
|
182
|
+
return unless File.exist?(src)
|
|
183
|
+
Jets::Util.cp_r(src, "#{cache_area}/bundled_gems")
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def run_prebundle_copy
|
|
187
|
+
paths = Jets.config.build.prebundle_copy
|
|
188
|
+
paths = Array(paths)
|
|
189
|
+
paths.each do |path|
|
|
190
|
+
src = "#{@full_app_root}/#{path}"
|
|
191
|
+
return unless File.exist?(src)
|
|
192
|
+
Jets::Util.cp_r(src, "#{cache_area}/#{path}")
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
152
196
|
# Remove the BUNDLED WITH line since we don't control the bundler gem version on AWS Lambda
|
|
153
197
|
# And this can cause issues with require 'bundler/setup'
|
|
154
198
|
def rewrite_gemfile_lock(gemfile_lock)
|
|
@@ -57,22 +57,26 @@ module Jets::Builders::ShimVars
|
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
def lang(meth)
|
|
60
|
-
klass.
|
|
60
|
+
klass.definitions.find
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
# This gets called in the node shim js template
|
|
64
|
-
#
|
|
64
|
+
# Example: handlers/controllers/posts_controller.index
|
|
65
65
|
def handler_for(meth)
|
|
66
|
+
"#{handler_base}.#{meth}"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Base portion of handler path.
|
|
70
|
+
# Example: handlers/controllers/posts_controller
|
|
71
|
+
def handler_base
|
|
66
72
|
# possibly not include _function
|
|
67
73
|
underscored_name = @relative_path.sub(%r{app/(\w+)/},'').sub('.rb','')
|
|
68
|
-
"handlers/#{process_type.pluralize}/#{underscored_name}
|
|
74
|
+
"handlers/#{process_type.pluralize}/#{underscored_name}"
|
|
69
75
|
end
|
|
70
76
|
|
|
71
77
|
# Example return: "handlers/controllers/posts.js"
|
|
72
|
-
# TODO: rename this to dest_path or something better now since using native ruby
|
|
73
78
|
def dest_path
|
|
74
|
-
@relative_path
|
|
75
|
-
.sub("app", "handlers")
|
|
79
|
+
@relative_path.sub("app", "handlers")
|
|
76
80
|
end
|
|
77
81
|
end
|
|
78
82
|
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require "bundler/setup"
|
|
2
|
+
require "jets"
|
|
3
|
+
Jets.once # runs once in lambda execution context
|
|
4
|
+
|
|
5
|
+
def lambda_handler(event:, context:)
|
|
6
|
+
if event['_prewarm']
|
|
7
|
+
Jets.process(event, context, nil)
|
|
8
|
+
return
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
<% if @vars.process_type == "controller" -%>
|
|
12
|
+
route = Jets::Router.find_route_by_event(event)
|
|
13
|
+
controller = route.controller_name
|
|
14
|
+
action = route.action_name
|
|
15
|
+
if Jets.config.cfn.build.routes == "one_apigw_method_for_all_routes"
|
|
16
|
+
event["pathParameters"] = route.rebuild_path_parameters(event) # override
|
|
17
|
+
end
|
|
18
|
+
<% end -%>
|
|
19
|
+
Jets.process(event, context, "handlers/controllers/#{controller}.#{action}")
|
|
20
|
+
end
|
|
21
|
+
<% if ENV['JETS_DEBUG_HANDLER'] %>
|
|
22
|
+
<%# JETS_DEBUG_HANDLER=1 jets build %>
|
|
23
|
+
if __FILE__ == $0
|
|
24
|
+
event = {
|
|
25
|
+
"path" => "/posts",
|
|
26
|
+
"httpMethod" => "GET",
|
|
27
|
+
"headers" => {
|
|
28
|
+
"Host" => "localhost:8888",
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
lambda_handler(event: event, context: {})
|
|
32
|
+
end
|
|
33
|
+
<% end %>
|