jets 4.0.17 → 5.0.0.beta1
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/.gitignore +5 -1
- data/CHANGELOG.md +52 -23
- data/Gemfile +1 -5
- data/LICENSE.txt +1 -1
- data/Rakefile +3 -3
- 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/{lib/jets → engines}/internal/app/functions/jets/base_path.rb +2 -1
- data/{lib/jets → engines}/internal/app/functions/jets/base_path_mapping.rb +26 -6
- 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 +29 -27
- 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 -198
- 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_services/stack_status.rb +1 -1
- data/lib/jets/backtrace_cleaner.rb +27 -0
- data/lib/jets/booter.rb +29 -176
- data/lib/jets/builders/code_builder.rb +45 -117
- data/lib/jets/builders/code_size.rb +1 -0
- data/lib/jets/builders/gem_replacer.rb +5 -6
- 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 +32 -21
- 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} +10 -20
- data/lib/jets/cfn/{builders/api_gateway_builder.rb → builder/api/gateway.rb} +14 -37
- 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/{builders → builder}/interface.rb +45 -51
- 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/{builders/parent_builder.rb → builder/parent.rb} +54 -54
- 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} +4 -3
- 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 +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +4 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +5 -5
- 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 +21 -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 +12 -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/{resource → cfn/resource}/iam/base_role_definition.rb +15 -15
- 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/{resource → cfn/resource}/iam/policy.rb +8 -8
- 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 +4 -5
- 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 +20 -19
- data/lib/jets/cfn/template.rb +89 -0
- data/lib/jets/cfn/upload.rb +40 -37
- data/lib/jets/cli.rb +28 -210
- 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/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 +4 -4
- 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 +1 -1
- 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} +28 -47
- 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.rb → url/url_command.rb} +37 -14
- 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} +40 -15
- 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 -24
- 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 +136 -51
- 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 +2 -2
- data/lib/jets/dotenv.rb +2 -1
- 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/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 +143 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.gitignore +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/info.rb +116 -0
- data/lib/jets/initializable.rb +95 -0
- data/lib/jets/job/base.rb +3 -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/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 +64 -53
- 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/request/source.rb +1 -2
- data/lib/jets/mega/request.rb +4 -4
- data/lib/jets/names.rb +31 -15
- 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 +12 -25
- 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 +135 -16
- 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 -106
- data/lib/jets/router/route_set.rb +214 -0
- data/lib/jets/router/scope.rb +204 -69
- data/lib/jets/router/state.rb +36 -16
- data/lib/jets/router/util.rb +1 -31
- data/lib/jets/router.rb +64 -162
- 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 -20
- 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/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/version.rb +1 -1
- data/lib/jets.rb +7 -16
- metadata +410 -362
- data/bin/release +0 -9
- data/lib/jets/application/defaults.rb +0 -230
- 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_resources_builder.rb +0 -44
- data/lib/jets/cfn/builders/base_child_builder.rb +0 -88
- 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/job_builder.rb +0 -14
- data/lib/jets/cfn/builders/page_builder.rb +0 -80
- data/lib/jets/cfn/built_template.rb +0 -15
- data/lib/jets/cfn/template_source.rb +0 -64
- data/lib/jets/commands/base.rb +0 -145
- data/lib/jets/commands/call.rb +0 -185
- data/lib/jets/commands/clean.rb +0 -19
- data/lib/jets/commands/configure.rb +0 -51
- data/lib/jets/commands/console.rb +0 -18
- 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.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 -169
- 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 -104
- 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 -72
- 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 -20
- 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/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/helpers/jets/mailers_helper.rb +0 -9
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -52
- 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/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/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/runner.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
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
class Jets::PreheatJob < ApplicationJob
|
|
2
|
-
ENABLED = Jets.config.prewarm.enable
|
|
3
|
-
CONCURRENCY = Jets.config.prewarm.concurrency
|
|
4
|
-
PREWARM_RATE = Jets.config.prewarm.rate
|
|
5
|
-
torching = ENABLED && CONCURRENCY > 1
|
|
6
|
-
warming = ENABLED && CONCURRENCY == 1
|
|
7
|
-
|
|
8
|
-
class_timeout 30
|
|
9
|
-
class_memory 1024
|
|
10
|
-
class_iam_policy(Jets::Application.preheat_job_iam_policy)
|
|
11
|
-
|
|
12
|
-
rate(PREWARM_RATE) if torching
|
|
13
|
-
def torch
|
|
14
|
-
threads = []
|
|
15
|
-
CONCURRENCY.times do
|
|
16
|
-
threads << Thread.new do
|
|
17
|
-
# intentionally calling remote lambda for concurrency
|
|
18
|
-
# avoid passing the _prewarm=1 flag because we want the PreheatJob#warm
|
|
19
|
-
# to run it's normal workload.
|
|
20
|
-
# Do not use Jets::Preheat.warm(function_name) here as that passes the _prewarm=1.
|
|
21
|
-
function_name = "jets-preheat_job-warm"
|
|
22
|
-
event_json = JSON.dump(event)
|
|
23
|
-
options = call_options(event[:quiet])
|
|
24
|
-
Jets::Commands::Call.new(function_name, event_json, options).run unless Jets.env.test?
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
threads.each { |t| t.join }
|
|
28
|
-
"Finished prewarming your application with a concurrency of #{CONCURRENCY}."
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
rate(PREWARM_RATE) if warming
|
|
32
|
-
def warm
|
|
33
|
-
options = call_options(event[:quiet])
|
|
34
|
-
Jets::Preheat.warm_all(options)
|
|
35
|
-
"Finished prewarming your application."
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
class << self
|
|
39
|
-
# Can use this to prewarm post deploy
|
|
40
|
-
def prewarm!
|
|
41
|
-
meth = CONCURRENCY > 1 ? :torch : :warm
|
|
42
|
-
perform_now(meth, quiet: true)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
private
|
|
47
|
-
def call_options(quiet)
|
|
48
|
-
options = {}
|
|
49
|
-
options.merge!(mute: true, mute_output: true) if quiet
|
|
50
|
-
options
|
|
51
|
-
end
|
|
52
|
-
end
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<% @previews.each do |preview| %>
|
|
2
|
-
<h3><%= link_to(preview.preview_name.titleize, "/jets/mailers/#{preview.preview_name}") %></h3>
|
|
3
|
-
<ul>
|
|
4
|
-
<% preview.emails.each do |email| %>
|
|
5
|
-
<li><%= link_to(email, "/jets/mailers/#{preview.preview_name}/#{email}") %></li>
|
|
6
|
-
<% end %>
|
|
7
|
-
</ul>
|
|
8
|
-
<% end %>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
module Jets
|
|
2
|
-
# Reference: https://github.com/rails/rails/blob/master/actionmailer/lib/action_mailer/railtie.rb
|
|
3
|
-
class Mailer < ::Jets::Turbine
|
|
4
|
-
config.action_mailer = ActiveSupport::OrderedOptions.new
|
|
5
|
-
|
|
6
|
-
initializer "action_mailer.logger" do
|
|
7
|
-
ActiveSupport.on_load(:action_mailer) { self.logger ||= Jets.logger }
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
initializer "action_mailer.set_configs" do |app|
|
|
11
|
-
app.config.action_mailer ||= ActiveSupport::OrderedOptions.new # TODO: temp fix. only happens sometimes?
|
|
12
|
-
options = app.config.action_mailer
|
|
13
|
-
options.default_url_options ||= {}
|
|
14
|
-
options.default_url_options[:protocol] ||= "https"
|
|
15
|
-
options.show_previews = false if options.show_previews.nil?
|
|
16
|
-
options.preview_path ||= "#{Jets.root}/app/previews" if options.show_previews
|
|
17
|
-
options.view_paths ||= "#{Jets.root}/app/views"
|
|
18
|
-
|
|
19
|
-
# TODO: Dont think Jets sets asset_host the same way
|
|
20
|
-
# make sure readers methods get compiled
|
|
21
|
-
# options.asset_host ||= app.config.asset_host
|
|
22
|
-
# options.relative_url_root ||= app.config.relative_url_root
|
|
23
|
-
|
|
24
|
-
ActiveSupport.on_load(:action_mailer) do
|
|
25
|
-
include AbstractController::UrlFor
|
|
26
|
-
# TODO: figure out rest of the helpers
|
|
27
|
-
# extend ::AbstractController::Railties::RoutesHelpers.with(app.routes, false)
|
|
28
|
-
# include app.routes.mounted_helpers
|
|
29
|
-
|
|
30
|
-
register_interceptors(options.delete(:interceptors))
|
|
31
|
-
register_preview_interceptors(options.delete(:preview_interceptors))
|
|
32
|
-
register_observers(options.delete(:observers))
|
|
33
|
-
|
|
34
|
-
options.each { |k, v| send("#{k}=", v) }
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
after_initializer "action_mailer.routes" do |app|
|
|
39
|
-
if app.config.action_mailer.show_previews
|
|
40
|
-
app.routes.draw do
|
|
41
|
-
get "jets/mailers", to: "jets/mailers#index"
|
|
42
|
-
get "jets/mailers/*path", to: "jets/mailers#preview"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
ActiveSupport.on_load :action_controller do
|
|
46
|
-
internal_views = File.expand_path("internal/app/views", File.dirname(__FILE__))
|
|
47
|
-
ActionController::Base.append_view_path(internal_views)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
data/lib/jets/lambda/task.rb
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
class Jets::Lambda::Task
|
|
2
|
-
attr_accessor :class_name, :type
|
|
3
|
-
attr_reader :meth, :properties, :iam_policy, :managed_iam_policy, :lang, :associated_resources
|
|
4
|
-
def initialize(class_name, meth, options={})
|
|
5
|
-
@class_name = class_name.to_s
|
|
6
|
-
@meth = meth
|
|
7
|
-
@options = options
|
|
8
|
-
@type = options[:type] || get_type # controller, job, or function
|
|
9
|
-
@properties = options[:properties] || {}
|
|
10
|
-
@iam_policy = options[:iam_policy]
|
|
11
|
-
@managed_iam_policy = options[:managed_iam_policy]
|
|
12
|
-
@lang = options[:lang] || :ruby
|
|
13
|
-
@associated_resources = options[:associated_resources] || {}
|
|
14
|
-
@replacements = options[:replacements] || {} # added to baseline replacements
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def name
|
|
18
|
-
@meth
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def public_meth?
|
|
22
|
-
# For anonymous classes (app/functions/hello.rb) the class name will be blank.
|
|
23
|
-
# These types of classes are treated specially and has only one handler method
|
|
24
|
-
# that is registered. So we know it is public.
|
|
25
|
-
return true if @class_name.nil? || @class_name == ''
|
|
26
|
-
|
|
27
|
-
# Consider all polymorphic methods public for now
|
|
28
|
-
return true if @lang != :ruby
|
|
29
|
-
|
|
30
|
-
klass = @class_name.constantize
|
|
31
|
-
public_methods = klass.public_instance_methods
|
|
32
|
-
public_methods.include?(meth.to_sym)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def build_function_iam?
|
|
36
|
-
!!(@iam_policy || @managed_iam_policy)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
@@lang_exts = {
|
|
40
|
-
ruby: '.rb',
|
|
41
|
-
python: '.py',
|
|
42
|
-
node: '.js',
|
|
43
|
-
}
|
|
44
|
-
def lang_ext
|
|
45
|
-
@@lang_exts[@lang]
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# The get_type method works for controller and job classes.
|
|
49
|
-
#
|
|
50
|
-
# Usually able to get the type from the class name. Examples:
|
|
51
|
-
#
|
|
52
|
-
# PostsController => controller
|
|
53
|
-
# HardJob => job
|
|
54
|
-
#
|
|
55
|
-
# However, for function types, we are not able to get the type for multiple of
|
|
56
|
-
# reasons. First, function types are allowed to be named with or without
|
|
57
|
-
# _function. Examples:
|
|
58
|
-
#
|
|
59
|
-
# path => class => type
|
|
60
|
-
# app/functions/hello.rb => Hello => function
|
|
61
|
-
# app/functions/hello_function.rb => HelloFunction => function
|
|
62
|
-
#
|
|
63
|
-
# The second reason is that functions are not regular ruby classes. Instead they
|
|
64
|
-
# are anonymous classes created with Class.new. When classes are created with
|
|
65
|
-
# Class.new the method_added hook has "" (blank string) as the self class name.
|
|
66
|
-
# We add the class_type to the task later on as we are constructing the class
|
|
67
|
-
# as part of the Class.new logic.
|
|
68
|
-
#
|
|
69
|
-
# For controller and job standard ruby classes though it can easily be
|
|
70
|
-
# determinated as part of initialization. So we get the type for convenience then.
|
|
71
|
-
#
|
|
72
|
-
# For anonymous function classes, we just set to nil and will later fix in
|
|
73
|
-
# FunctionConstructor.
|
|
74
|
-
#
|
|
75
|
-
# Returns: "controller", "job" or nil
|
|
76
|
-
def get_type
|
|
77
|
-
unless @class_name.empty? # when anonymous class is created with Class.new
|
|
78
|
-
@class_name.underscore.split('_').last # controller, job or rule
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def full_handler(handler_function)
|
|
83
|
-
"#{handler_base}.#{handler_function}"
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def handler_path
|
|
87
|
-
"#{handler_base}#{lang_ext}"
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def handler_base
|
|
91
|
-
base = "handlers/#{@type.pluralize}/#{@class_name.underscore}"
|
|
92
|
-
base += "/#{@lang}" if @lang != :ruby
|
|
93
|
-
base += "/#{@meth}"
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def poly_src_path
|
|
97
|
-
handler_path.sub("handlers/", "app/")
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def replacements
|
|
101
|
-
# Merge in the custom replacements specific to each app class: ConfigRule, Job, etc.
|
|
102
|
-
baseline_replacements.merge(@replacements)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def baseline_replacements
|
|
106
|
-
{
|
|
107
|
-
# camelized because used in not just keys but common used in values
|
|
108
|
-
namespace: @meth.to_s.camelize,
|
|
109
|
-
}
|
|
110
|
-
end
|
|
111
|
-
end
|
data/lib/jets/logger.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'logger'
|
|
2
|
-
|
|
3
|
-
module Jets
|
|
4
|
-
class Logger < ::Logger
|
|
5
|
-
# Only need to override the add method as the other calls all lead to it.
|
|
6
|
-
def add(severity, message = nil, progname = nil)
|
|
7
|
-
# Taken from Logger#add source
|
|
8
|
-
# https://ruby-doc.org/stdlib-2.5.1/libdoc/logger/rdoc/Logger.html#method-i-add
|
|
9
|
-
if message.nil?
|
|
10
|
-
if block_given?
|
|
11
|
-
message = yield
|
|
12
|
-
else
|
|
13
|
-
message = progname
|
|
14
|
-
progname = @progname
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
super # original logical
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# Based on Rails MiddlewareStackProxy
|
|
2
|
-
#
|
|
3
|
-
# Configurator is a recorder for the Jets middleware stack that allows
|
|
4
|
-
# you to configure middlewares in your application. It works basically as a
|
|
5
|
-
# command recorder, saving each command to be applied after initialization
|
|
6
|
-
# over the default middleware stack, so you can add, swap, or remove any
|
|
7
|
-
# middleware in Jets.
|
|
8
|
-
#
|
|
9
|
-
# You can add your own middlewares by using the +config.middleware.use+ method:
|
|
10
|
-
#
|
|
11
|
-
# config.middleware.use Magical::Unicorns
|
|
12
|
-
#
|
|
13
|
-
# This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
|
|
14
|
-
# You can use +insert_before+ if you wish to add a middleware before another:
|
|
15
|
-
#
|
|
16
|
-
# config.middleware.insert_before Rack::Head, Magical::Unicorns
|
|
17
|
-
#
|
|
18
|
-
# There's also +insert_after+ which will insert a middleware after another:
|
|
19
|
-
#
|
|
20
|
-
# config.middleware.insert_after Rack::Head, Magical::Unicorns
|
|
21
|
-
#
|
|
22
|
-
# Middlewares can also be completely swapped out and replaced with others:
|
|
23
|
-
#
|
|
24
|
-
# config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
|
|
25
|
-
#
|
|
26
|
-
# And finally they can also be removed from the stack completely:
|
|
27
|
-
#
|
|
28
|
-
# config.middleware.delete ActionDispatch::Flash
|
|
29
|
-
#
|
|
30
|
-
module Jets::Middleware
|
|
31
|
-
class Configurator
|
|
32
|
-
def initialize(operations = [], delete_operations = [])
|
|
33
|
-
@operations = operations
|
|
34
|
-
@delete_operations = delete_operations
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def insert_before(*args, &block)
|
|
38
|
-
@operations << [__method__, args, block]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
alias :insert :insert_before
|
|
42
|
-
|
|
43
|
-
def insert_after(*args, &block)
|
|
44
|
-
@operations << [__method__, args, block]
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def swap(*args, &block)
|
|
48
|
-
@operations << [__method__, args, block]
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def use(*args, &block)
|
|
52
|
-
@operations << [__method__, args, block]
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def delete(*args, &block)
|
|
56
|
-
@delete_operations << [__method__, args, block]
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def unshift(*args, &block)
|
|
60
|
-
@operations << [__method__, args, block]
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def merge_into(other) #:nodoc:
|
|
64
|
-
(@operations + @delete_operations).each do |operation, args, block|
|
|
65
|
-
other.send(operation, *args, &block)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
other
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def +(other) # :nodoc:
|
|
72
|
-
Configurator.new(@operations + other.operations, @delete_operations + other.delete_operations)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
protected
|
|
76
|
-
def operations
|
|
77
|
-
@operations
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def delete_operations
|
|
81
|
-
@delete_operations
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
require "shotgun"
|
|
2
|
-
|
|
3
|
-
module Jets::Middleware
|
|
4
|
-
class DefaultStack
|
|
5
|
-
attr_reader :config, :app
|
|
6
|
-
def initialize(app, config)
|
|
7
|
-
@app = app
|
|
8
|
-
@config = config
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def build_stack
|
|
12
|
-
Stack.new do |middleware|
|
|
13
|
-
middleware.use Shotgun::Static
|
|
14
|
-
middleware.use Rack::Runtime
|
|
15
|
-
middleware.use Jets::Controller::Middleware::Cors if cors_enabled?
|
|
16
|
-
middleware.use Rack::MethodOverride unless ENV['JETS_RACK_METHOD_OVERRIDE'] == '0' # must come before Middleware::Local for multipart post forms to work
|
|
17
|
-
middleware.use Jets::Controller::Middleware::Reloader if Jets.config.hot_reload
|
|
18
|
-
middleware.use Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only
|
|
19
|
-
middleware.use session_store, session_options
|
|
20
|
-
middleware.use Rack::Head
|
|
21
|
-
middleware.use Rack::ConditionalGet
|
|
22
|
-
middleware.use Rack::ETag
|
|
23
|
-
use_webpacker(middleware)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
def cors_enabled?
|
|
29
|
-
Jets.config.cors
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Written as method to easily not include webpacker for case when either
|
|
33
|
-
# webpacker not installed at all or disabled upon `jets deploy`.
|
|
34
|
-
def use_webpacker(middleware)
|
|
35
|
-
return unless Jets.webpacker? # checks for local development if webpacker installed
|
|
36
|
-
# Different check for middleware because we need webpacker helpers for url helpers.
|
|
37
|
-
# But we dont want to actually serve via webpacker middleware when running on AWS.
|
|
38
|
-
# By this time the url helpers are serving assets out of s3.
|
|
39
|
-
return if File.exist?("#{Jets.root}/config/disable-webpacker-middleware.txt") # created as part of `jets deploy`
|
|
40
|
-
require "jets/controller/middleware/webpacker_setup"
|
|
41
|
-
middleware.use Webpacker::DevServerProxy
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def session_store
|
|
45
|
-
Jets.config.session[:store] # do not use dot notation. session.store is a method on ActiveSupport::OrderedOptions.new
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def session_options
|
|
49
|
-
defaults = { secret: ENV['SECRET_KEY_BASE'] }
|
|
50
|
-
defaults.merge(Jets.config.session.options)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
module Jets::Middleware
|
|
2
|
-
class Layer
|
|
3
|
-
attr_reader :args, :block, :klass
|
|
4
|
-
|
|
5
|
-
def initialize(klass, args, block)
|
|
6
|
-
@klass = klass
|
|
7
|
-
@args = args
|
|
8
|
-
@block = block
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def name; klass.name; end
|
|
12
|
-
|
|
13
|
-
def ==(middleware)
|
|
14
|
-
case middleware
|
|
15
|
-
when Layer
|
|
16
|
-
klass == middleware.klass
|
|
17
|
-
when Class
|
|
18
|
-
klass == middleware
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def inspect
|
|
23
|
-
if klass.is_a?(Class)
|
|
24
|
-
klass.to_s
|
|
25
|
-
else
|
|
26
|
-
klass.class.to_s
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def build(app)
|
|
31
|
-
klass.new(app, *args, &block)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
module Jets::Middleware
|
|
2
|
-
class Stack
|
|
3
|
-
include Enumerable
|
|
4
|
-
|
|
5
|
-
attr_accessor :middlewares
|
|
6
|
-
def initialize(*args)
|
|
7
|
-
@middlewares = []
|
|
8
|
-
yield(self) if block_given?
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def each
|
|
12
|
-
@middlewares.each { |x| yield x }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def size
|
|
16
|
-
middlewares.size
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def last
|
|
20
|
-
middlewares.last
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def [](i)
|
|
24
|
-
middlewares[i]
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def unshift(klass, *args, &block)
|
|
28
|
-
middlewares.unshift(build_middleware(klass, args, block))
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def initialize_copy(other)
|
|
32
|
-
self.middlewares = other.middlewares.dup
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def insert(index, klass, *args, &block)
|
|
36
|
-
index = assert_index(index, :before)
|
|
37
|
-
middlewares.insert(index, build_middleware(klass, args, block))
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
alias_method :insert_before, :insert
|
|
41
|
-
|
|
42
|
-
def insert_after(index, *args, &block)
|
|
43
|
-
index = assert_index(index, :after)
|
|
44
|
-
insert(index + 1, *args, &block)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def swap(target, *args, &block)
|
|
48
|
-
index = assert_index(target, :before)
|
|
49
|
-
insert(index, *args, &block)
|
|
50
|
-
middlewares.delete_at(index + 1)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def delete(target)
|
|
54
|
-
middlewares.delete_if { |m| m.klass == target }
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def use(klass, *args, &block)
|
|
58
|
-
middlewares.push(build_middleware(klass, args, block))
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def build(app = Proc.new)
|
|
62
|
-
middlewares.freeze.reverse.inject(app) { |a, e| e.build(a) }
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
private
|
|
66
|
-
|
|
67
|
-
def assert_index(index, where)
|
|
68
|
-
i = index.is_a?(Integer) ? index : middlewares.index { |m| m.klass == index }
|
|
69
|
-
raise "No such middleware to insert #{where}: #{index.inspect}" unless i
|
|
70
|
-
i
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def build_middleware(klass, args, block)
|
|
74
|
-
Layer.new(klass, args, block)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
data/lib/jets/middleware.rb
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module Jets
|
|
2
|
-
module Middleware
|
|
3
|
-
extend Memoist
|
|
4
|
-
|
|
5
|
-
def call(env)
|
|
6
|
-
stack = middlewares.build(endpoint)
|
|
7
|
-
stack.call(env)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
# Final middleware in the stack
|
|
11
|
-
def endpoint
|
|
12
|
-
Jets::Controller::Middleware::Main
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Called in Jets::Booter to build middleware stack only once during bootup
|
|
16
|
-
def build_stack
|
|
17
|
-
middlewares
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def middlewares
|
|
21
|
-
config_middleware.merge_into(default_stack) # returns Jets::Middleware::Stack
|
|
22
|
-
end
|
|
23
|
-
memoize :middlewares
|
|
24
|
-
|
|
25
|
-
def default_stack
|
|
26
|
-
Jets::Middleware::DefaultStack.new(Jets.config, Jets.application).build_stack # returns Jets::Middleware::Stack
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def config_middleware
|
|
30
|
-
Jets.config.middleware # returns Jets::Middleware::Configurator
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# Override to prepend stage name when on AWS.
|
|
2
|
-
module Jets::AssetTagHelper
|
|
3
|
-
extend Memoist
|
|
4
|
-
include Jets::CommonMethods
|
|
5
|
-
include Jets::AwsServices
|
|
6
|
-
|
|
7
|
-
def javascript_include_tag(*sources, **options)
|
|
8
|
-
sources = sources.map { |s| s3_public_url(s, :javascripts) }
|
|
9
|
-
super
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def stylesheet_link_tag(*sources, **options)
|
|
13
|
-
sources = sources.map { |s| s3_public_url(s, :stylesheets) }
|
|
14
|
-
super
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Locally:
|
|
18
|
-
#
|
|
19
|
-
# image_tag("jets.png") => /images/jets.png
|
|
20
|
-
# image_tag("/images/jets.png") => /images/jets.png
|
|
21
|
-
#
|
|
22
|
-
# Remotely:
|
|
23
|
-
#
|
|
24
|
-
# image_tag("jets.png") => https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1kih4n2te0n66/jets/public/images/jets.png
|
|
25
|
-
def image_tag(source, options = {})
|
|
26
|
-
source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
|
|
27
|
-
|
|
28
|
-
# mimic original behavior to get /images in source
|
|
29
|
-
source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
|
|
30
|
-
if on_aws? && !source.starts_with?('http')
|
|
31
|
-
source = "#{s3_public}#{source}"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
super
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def asset_path(source, options = {})
|
|
38
|
-
source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
|
|
39
|
-
# mimic original behavior to get /images in source
|
|
40
|
-
source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
|
|
41
|
-
|
|
42
|
-
# Examples to help understand:
|
|
43
|
-
#
|
|
44
|
-
# puts "AssetTagHelper#asset_path source #{source}"
|
|
45
|
-
# puts "AssetTagHelper#asset_path asset_folder?(source) #{asset_folder?(source).inspect}"
|
|
46
|
-
# AssetTagHelper#asset_path source /packs/images/myimage-e5f675d1ba26865fd65e919beb5bb86b.png
|
|
47
|
-
# AssetTagHelper#asset_path asset_folder?(source) "images"
|
|
48
|
-
#
|
|
49
|
-
if on_aws? && asset_folder?(source) && !source.starts_with?('http')
|
|
50
|
-
source = "#{s3_public}#{source}"
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
super
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Serves favicon out of s3 when on API gateway.
|
|
57
|
-
#
|
|
58
|
-
# Useful helper for API Gateway since serving binary data like images without
|
|
59
|
-
# an Accept header doesnt work well. You can changed Media Types to '*/*'
|
|
60
|
-
# but then that messes up form data.
|
|
61
|
-
def favicon_path(path='favicon.ico')
|
|
62
|
-
on_aws? ? "#{s3_public}/#{path}" : "/#{path}"
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
private
|
|
66
|
-
# Whatever is configured in Jets.config.assets.folders
|
|
67
|
-
# Example: packs, images, assets
|
|
68
|
-
def asset_folder?(url)
|
|
69
|
-
Jets.config.assets.folders.detect do |folder|
|
|
70
|
-
url.include?(folder)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# User can use:
|
|
75
|
-
# javascript_include_tag "assets/test"
|
|
76
|
-
#
|
|
77
|
-
# Rails automatically adds "javscript" in front, to become:
|
|
78
|
-
#
|
|
79
|
-
# /javascripts/assets/test
|
|
80
|
-
#
|
|
81
|
-
# We want to add the API Gateway stage name in front for this:
|
|
82
|
-
#
|
|
83
|
-
# /stag/javascript/asset/test
|
|
84
|
-
#
|
|
85
|
-
# But adding it in front results in this:
|
|
86
|
-
#
|
|
87
|
-
# /javascript/stag/asset/test
|
|
88
|
-
#
|
|
89
|
-
# If there's a / in front then rails will not add the "javascript":
|
|
90
|
-
# So we can add the javascript ourselves and then add the stag with a
|
|
91
|
-
# / in front.
|
|
92
|
-
def s3_public_url(url, asset_type)
|
|
93
|
-
unless url.starts_with?('/') or url.starts_with?('http')
|
|
94
|
-
url = "/#{asset_type}/#{url}" # /javascript/asset/test
|
|
95
|
-
end
|
|
96
|
-
add_s3_public(url)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# Example:
|
|
100
|
-
# Url: /packs/application-e7654c50abd78161b641.js
|
|
101
|
-
# Returns: https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1jg5o076egkk4/jets/public/packs/application-e7654c50abd78161b641.js
|
|
102
|
-
def add_s3_public(url)
|
|
103
|
-
return url unless on_aws?
|
|
104
|
-
"#{s3_public}#{url}"
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def s3_public
|
|
108
|
-
# s3_base_url.txt is created as part of the build process
|
|
109
|
-
s3_base_url = IO.read("#{Jets.root}/config/s3_base_url.txt").strip
|
|
110
|
-
"#{s3_base_url}/public"
|
|
111
|
-
end
|
|
112
|
-
memoize :s3_public
|
|
113
|
-
end
|
|
114
|
-
ActionView::Helpers.send(:include, Jets::AssetTagHelper)
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
module Jets::CommonMethods
|
|
2
|
-
extend Memoist
|
|
3
|
-
# Add API Gateway Stage Name
|
|
4
|
-
def add_stage_name(url)
|
|
5
|
-
Jets::Controller::Stage.add(request.host, url) if request.present?
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def on_aws?
|
|
9
|
-
on_cloud9 = Jets::Controller::Stage.on_cloud9?(request.headers['HTTP_HOST'])
|
|
10
|
-
!request.headers['HTTP_X_AMZN_TRACE_ID'].nil? && !on_cloud9
|
|
11
|
-
end
|
|
12
|
-
memoize :on_aws?
|
|
13
|
-
end
|