jets 3.1.0 → 5.0.10
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 +190 -1
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +1 -5
- data/LICENSE.txt +1 -1
- data/README.md +28 -50
- 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 +68 -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 +17 -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 +2 -2
- 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 +67 -125
- 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 +43 -15
- 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} +58 -80
- data/lib/jets/cfn/deployment.rb +85 -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} +4 -4
- 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 +4 -4
- 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 +33 -29
- data/lib/jets/cfn/status.rb +46 -3
- data/lib/jets/cfn/template.rb +89 -0
- data/lib/jets/cfn/upload.rb +29 -23
- data/lib/jets/cli.rb +28 -203
- data/lib/jets/command/actions.rb +49 -0
- data/lib/jets/command/api_helpers.rb +42 -0
- data/lib/jets/command/aws_helpers.rb +26 -0
- data/lib/jets/command/base.rb +209 -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/gems/check.md +1 -0
- 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 +19 -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/rake_decorate.rb +38 -0
- data/lib/jets/command.rb +142 -0
- data/lib/jets/commands/application/application_command.rb +46 -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 +154 -0
- data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +34 -53
- 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 +124 -0
- data/lib/jets/commands/rollback/rollback_command.rb +33 -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 +16 -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 +159 -52
- 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 +6 -3
- 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/generators/job/templates/event_types/scheduled.rb.tt +8 -0
- data/lib/jets/generators/job/templates/event_types/sns.rb.tt +11 -0
- data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +11 -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/.jetsignore +6 -0
- data/lib/jets/generators/overrides/app/templates/Gemfile.tt +28 -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 +21 -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 +11 -8
- data/lib/jets/job/dsl/dynamodb_event.rb +25 -14
- 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 +10 -9
- 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 +5 -5
- data/lib/jets/job/dsl/sns_event.rb +6 -6
- data/lib/jets/job/dsl/sqs_event.rb +15 -14
- data/lib/jets/job/helpers/{kinesis_event_helper.rb → kinesis_event.rb} +5 -1
- data/lib/jets/job/helpers/{log_event_helper.rb → log_event.rb} +5 -1
- data/lib/jets/job/helpers/s3_event.rb +50 -0
- data/lib/jets/job/helpers/sns_event.rb +26 -0
- data/lib/jets/job/helpers/sqs_event.rb +26 -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 +70 -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/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 +4 -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 +1 -1
- data/lib/jets/stack/output/lookup.rb +6 -2
- 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 +18 -0
- data/lib/jets/version.rb +1 -1
- data/lib/jets.rb +9 -14
- metadata +462 -349
- 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/gems/check.md +0 -6
- 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/active_job/job/templates/job.rb.tt +0 -8
- 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/job/helpers/s3_event_helper.rb +0 -13
- 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/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
|
@@ -1,26 +1,37 @@
|
|
|
1
1
|
module Jets::Job::Dsl
|
|
2
2
|
module DynamodbEvent
|
|
3
|
-
def dynamodb_event(
|
|
4
|
-
return if ENV['
|
|
3
|
+
def dynamodb_event(table_name_without_namespace, options={})
|
|
4
|
+
return if ENV['JETS_NO_INTERNET'] # Disable during build since jets build tries to init this
|
|
5
5
|
|
|
6
|
+
table_name = add_dynamodb_table_namespace(table_name_without_namespace)
|
|
6
7
|
stream_arn = full_dynamodb_stream_arn(table_name)
|
|
7
8
|
default_iam_policy = default_dynamodb_stream_policy(stream_arn)
|
|
8
9
|
|
|
9
|
-
# Create iam policy allows access to
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
# Create iam policy allows access to dynamodb
|
|
11
|
+
iam_policy_option = [options.delete(:iam_policy)].compact.flatten
|
|
12
|
+
user_iam_policy = [@iam_policy].compact.flatten
|
|
13
|
+
iam_policy_props = iam_policy_option + user_iam_policy + [default_iam_policy]
|
|
14
|
+
iam_policy(iam_policy_props)
|
|
13
15
|
|
|
14
16
|
props = options # by this time options only has EventSourceMapping properties
|
|
15
17
|
default = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
EventSourceArn: stream_arn,
|
|
19
|
+
StartingPosition: "TRIM_HORIZON",
|
|
18
20
|
}
|
|
19
21
|
props = default.merge(props)
|
|
20
22
|
|
|
21
23
|
event_source_mapping(props)
|
|
22
24
|
end
|
|
23
25
|
|
|
26
|
+
def add_dynamodb_table_namespace(table_name_without_namespace)
|
|
27
|
+
ns = if Jets.config.events.dynamodb.table_namespace == true
|
|
28
|
+
Jets.table_namespace # does not include extra
|
|
29
|
+
elsif Jets.config.events.dynamodb.table_namespace
|
|
30
|
+
Jets.config.events.dynamodb.table_namespace # allow user to fully control namespace
|
|
31
|
+
end
|
|
32
|
+
ns_separator = Jets.config.events.dynamodb.table_namespace_separator
|
|
33
|
+
[ns, table_name_without_namespace].compact.join(ns_separator)
|
|
34
|
+
end
|
|
24
35
|
|
|
25
36
|
# Expands table name to the full stream arn. Example:
|
|
26
37
|
#
|
|
@@ -48,18 +59,18 @@ module Jets::Job::Dsl
|
|
|
48
59
|
|
|
49
60
|
def default_dynamodb_stream_policy(stream_name_arn='*')
|
|
50
61
|
stream = {
|
|
51
|
-
|
|
62
|
+
Action: ["dynamodb:GetRecords",
|
|
52
63
|
"dynamodb:GetShardIterator",
|
|
53
64
|
"dynamodb:DescribeStream",
|
|
54
65
|
"dynamodb:ListStreams"],
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
Effect: "Allow",
|
|
67
|
+
Resource: stream_name_arn,
|
|
57
68
|
}
|
|
58
69
|
table_name_arn = stream_name_arn.gsub(%r{/stream/20.*},'')
|
|
59
70
|
table = {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
71
|
+
Action: ["dynamodb:DescribeTable"],
|
|
72
|
+
Effect: "Allow",
|
|
73
|
+
Resource: table_name_arn,
|
|
63
74
|
}
|
|
64
75
|
[stream, table]
|
|
65
76
|
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
module Jets::Job::Dsl
|
|
3
3
|
module EventSourceMapping
|
|
4
4
|
def event_source_mapping(props={})
|
|
5
|
-
r = Jets::Resource::Lambda::EventSourceMapping.new(props)
|
|
5
|
+
r = Jets::Cfn::Resource::Lambda::EventSourceMapping.new(props)
|
|
6
6
|
with_fresh_properties do
|
|
7
7
|
resource(r.definition) # add associated resource immediately
|
|
8
8
|
end
|
|
@@ -3,19 +3,19 @@ module Jets::Job::Dsl
|
|
|
3
3
|
# The user must at least pass in an SQL statement
|
|
4
4
|
def iot_event(props={})
|
|
5
5
|
if props.is_a?(String) # SQL Statement
|
|
6
|
-
props = {
|
|
7
|
-
topic_props = {
|
|
8
|
-
elsif props.key?(:
|
|
6
|
+
props = {Sql: props}
|
|
7
|
+
topic_props = {TopicRulePayload: props}
|
|
8
|
+
elsif props.key?(:TopicRulePayload) # full properties structure
|
|
9
9
|
topic_props = props
|
|
10
|
-
else # just the
|
|
11
|
-
topic_props = {
|
|
10
|
+
else # just the TopicRulePayload
|
|
11
|
+
topic_props = {TopicRulePayload: props}
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
declare_iot_topic(topic_props)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def declare_iot_topic(props={})
|
|
18
|
-
r = Jets::Resource::Iot::TopicRule.new(props)
|
|
18
|
+
r = Jets::Cfn::Resource::Iot::TopicRule.new(props)
|
|
19
19
|
with_fresh_properties do
|
|
20
20
|
resource(r.definition) # add associated resource immediately
|
|
21
21
|
end
|
|
@@ -4,15 +4,16 @@ module Jets::Job::Dsl
|
|
|
4
4
|
stream_arn = full_kinesis_stream_arn(stream_name)
|
|
5
5
|
default_iam_policy = default_kinesis_stream_policy(stream_arn)
|
|
6
6
|
|
|
7
|
-
# Create iam policy allows access to
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
# Create iam policy allows access to kinesis
|
|
8
|
+
iam_policy_option = [options.delete(:iam_policy)].compact.flatten
|
|
9
|
+
user_iam_policy = [@iam_policy].compact.flatten
|
|
10
|
+
iam_policy_props = iam_policy_option + user_iam_policy + [default_iam_policy]
|
|
11
|
+
iam_policy(iam_policy_props)
|
|
11
12
|
|
|
12
13
|
props = options # by this time options only has EventSourceMapping properties
|
|
13
14
|
default = {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
EventSourceArn: stream_arn,
|
|
16
|
+
StartingPosition: "LATEST",
|
|
16
17
|
}
|
|
17
18
|
props = default.merge(props)
|
|
18
19
|
|
|
@@ -34,12 +35,12 @@ module Jets::Job::Dsl
|
|
|
34
35
|
|
|
35
36
|
def default_kinesis_stream_policy(stream_name_arn='*')
|
|
36
37
|
{
|
|
37
|
-
|
|
38
|
+
Action: ["kinesis:GetRecords",
|
|
38
39
|
"kinesis:GetShardIterator",
|
|
39
40
|
"kinesis:DescribeStream",
|
|
40
41
|
"kinesis:ListStreams"],
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
Effect: "Allow",
|
|
43
|
+
Resource: stream_name_arn,
|
|
43
44
|
}
|
|
44
45
|
end
|
|
45
46
|
end
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
module Jets::Job::Dsl
|
|
2
2
|
module LogEvent
|
|
3
3
|
def log_event(log_group_name, props={})
|
|
4
|
-
props.merge!(
|
|
4
|
+
props.merge!(LogGroupName: log_group_name)
|
|
5
5
|
declare_log_subscription_filter(props)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def declare_log_subscription_filter(props={})
|
|
9
|
-
r = Jets::Resource::Logs::SubscriptionFilter.new(props)
|
|
9
|
+
r = Jets::Cfn::Resource::Logs::SubscriptionFilter.new(props)
|
|
10
10
|
with_fresh_properties do
|
|
11
11
|
resource(r.definition) # add associated resource immediately
|
|
12
12
|
end
|
|
@@ -27,16 +27,19 @@ module Jets::Job::Dsl
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def schedule_job(expression, props={})
|
|
30
|
-
props = props.merge(
|
|
30
|
+
props = props.merge(ScheduleExpression: expression)
|
|
31
31
|
rule_event(props)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def rule_event(props={})
|
|
35
|
+
# detail should all be lowercase: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
|
|
36
|
+
# source should also all be lowercase
|
|
35
37
|
if props.key?(:detail)
|
|
38
|
+
# :description should be lowercased. It's a convenience property, and belongs at a higher level
|
|
36
39
|
description = props.key?(:description) ? props.delete(:description) : rule_description
|
|
37
|
-
rule_props = {
|
|
40
|
+
rule_props = { EventPattern: props, Description: description }
|
|
38
41
|
else # if props.key?(:event_pattern)
|
|
39
|
-
props[:
|
|
42
|
+
props[:Description] ||= rule_description
|
|
40
43
|
rule_props = props
|
|
41
44
|
end
|
|
42
45
|
|
|
@@ -52,7 +55,7 @@ module Jets::Job::Dsl
|
|
|
52
55
|
end
|
|
53
56
|
|
|
54
57
|
def events_rule_definition
|
|
55
|
-
resource = Jets::Resource::Events::Rule.new(associated_properties)
|
|
58
|
+
resource = Jets::Cfn::Resource::Events::Rule.new(associated_properties)
|
|
56
59
|
resource.definition # returns a definition to be added by associated_resources
|
|
57
60
|
end
|
|
58
61
|
|
|
@@ -2,7 +2,7 @@ module Jets::Job::Dsl
|
|
|
2
2
|
module S3Event
|
|
3
3
|
def s3_event(bucket_name, props={})
|
|
4
4
|
stack_name = declare_s3_bucket_resources(bucket_name) # only set up once per bucket
|
|
5
|
-
declare_sns_subscription(
|
|
5
|
+
declare_sns_subscription(TopicArn: "!Ref #{stack_name}SnsTopic") # set up subscription every time
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
# Returns stack_name
|
|
@@ -11,7 +11,7 @@ module Jets::Job::Dsl
|
|
|
11
11
|
# We will not generate them again. However, we still need to always
|
|
12
12
|
# add the depends_on declaration to ensure that the shared stack parameters
|
|
13
13
|
# are properly passed to the nested child stack.
|
|
14
|
-
stack_name =
|
|
14
|
+
stack_name = _s3_events[bucket_name] # already registered
|
|
15
15
|
if stack_name
|
|
16
16
|
depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
|
|
17
17
|
return stack_name
|
|
@@ -20,7 +20,7 @@ module Jets::Job::Dsl
|
|
|
20
20
|
# Create shared resources - one time
|
|
21
21
|
stack_name = declare_shared_s3_event_resources(bucket_name)
|
|
22
22
|
depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
|
|
23
|
-
self.
|
|
23
|
+
self._s3_events[bucket_name] = stack_name # tracks buckets already set up
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def declare_shared_s3_event_resources(bucket_name)
|
|
@@ -29,8 +29,8 @@ module Jets::Job::Dsl
|
|
|
29
29
|
s3_stack.stack_name
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
def
|
|
33
|
-
Jets::Job::Base.
|
|
32
|
+
def _s3_events
|
|
33
|
+
Jets::Job::Base._s3_events
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
end
|
|
@@ -4,22 +4,22 @@ module Jets::Job::Dsl
|
|
|
4
4
|
if topic_name.to_s =~ /generate/
|
|
5
5
|
declare_sns_topic(props.delete(:topic_properties))
|
|
6
6
|
topic_arn = "!Ref {namespace}SnsTopic"
|
|
7
|
-
props.merge!(
|
|
7
|
+
props.merge!(TopicArn: topic_arn)
|
|
8
8
|
declare_sns_subscription(props)
|
|
9
9
|
elsif topic_name.include?('!Ref') # reference shared resource
|
|
10
10
|
topic_arn = topic_name # contains !Ref
|
|
11
|
-
props.merge!(
|
|
11
|
+
props.merge!(TopicArn: topic_arn)
|
|
12
12
|
declare_sns_subscription(props)
|
|
13
13
|
else # existing topic: short name or full arn
|
|
14
14
|
topic_arn = full_sns_topic_arn(topic_name)
|
|
15
|
-
props.merge!(
|
|
15
|
+
props.merge!(TopicArn: topic_arn)
|
|
16
16
|
declare_sns_subscription(props)
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def declare_sns_topic(props={})
|
|
21
21
|
props ||= {} # props.delete(:topic_properties) can be nil
|
|
22
|
-
r = Jets::Resource::Sns::Topic.new(props)
|
|
22
|
+
r = Jets::Cfn::Resource::Sns::Topic.new(props)
|
|
23
23
|
with_fresh_properties do
|
|
24
24
|
resource(r.definition) # add associated resource immediately
|
|
25
25
|
end
|
|
@@ -27,14 +27,14 @@ module Jets::Job::Dsl
|
|
|
27
27
|
|
|
28
28
|
def declare_sns_topic_policy(props={})
|
|
29
29
|
props ||= {} # options.delete(:topic_policy_properties) can be nil
|
|
30
|
-
r = Jets::Resource::Sns::TopicPolicy.new(props)
|
|
30
|
+
r = Jets::Cfn::Resource::Sns::TopicPolicy.new(props)
|
|
31
31
|
with_fresh_properties do
|
|
32
32
|
resource(r.definition) # add associated resource immediately
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def declare_sns_subscription(props={})
|
|
37
|
-
r = Jets::Resource::Sns::Subscription.new(props)
|
|
37
|
+
r = Jets::Cfn::Resource::Sns::Subscription.new(props)
|
|
38
38
|
with_fresh_properties do
|
|
39
39
|
resource(r.definition) # add associated resource immediately
|
|
40
40
|
end
|
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
# class_timeout 30 # must be less than or equal to the SQS queue default timeout
|
|
21
21
|
#
|
|
22
22
|
# event_source_mapping(
|
|
23
|
-
#
|
|
23
|
+
# EventSourceArn: "arn:aws:sqs:us-west-2:112233445566:hello-queue",
|
|
24
24
|
# )
|
|
25
25
|
# iam_policy(
|
|
26
|
-
#
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
26
|
+
# Action: ["sqs:ReceiveMessage",
|
|
27
|
+
# "sqs:DeleteMessage",
|
|
28
|
+
# "sqs:GetQueueAttributes"],
|
|
29
|
+
# Effect: "Allow",
|
|
30
|
+
# Resource: "arn:aws:sqs:us-west-2:112233445566:hello-queue",
|
|
31
31
|
# )
|
|
32
32
|
# def dig
|
|
33
33
|
# puts "dig event #{JSON.dump(event)}"
|
|
@@ -51,13 +51,14 @@ module Jets::Job::Dsl
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
# Create iam policy allows access to queue
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
iam_policy_option = [options.delete(:iam_policy)].compact.flatten
|
|
55
|
+
user_iam_policy = [@iam_policy].compact.flatten
|
|
56
|
+
iam_policy_props = iam_policy_option + user_iam_policy + [default_iam_policy]
|
|
57
|
+
iam_policy(iam_policy_props)
|
|
57
58
|
|
|
58
59
|
props = options # by this time options only has EventSourceMapping properties
|
|
59
60
|
default = {
|
|
60
|
-
|
|
61
|
+
EventSourceArn: queue_arn
|
|
61
62
|
}
|
|
62
63
|
props = default.merge(props)
|
|
63
64
|
|
|
@@ -66,7 +67,7 @@ module Jets::Job::Dsl
|
|
|
66
67
|
|
|
67
68
|
def declare_sqs_queue(props)
|
|
68
69
|
props ||= {} # since options.delete(:queue_properties) can be nil
|
|
69
|
-
r = Jets::Resource::Sqs::Queue.new(props)
|
|
70
|
+
r = Jets::Cfn::Resource::Sqs::Queue.new(props)
|
|
70
71
|
with_fresh_properties do
|
|
71
72
|
resource(r.definition) # add associated resource immediately
|
|
72
73
|
end
|
|
@@ -85,11 +86,11 @@ module Jets::Job::Dsl
|
|
|
85
86
|
|
|
86
87
|
def default_sqs_iam_policy(queue_name_arn='*')
|
|
87
88
|
{
|
|
88
|
-
|
|
89
|
+
Action: ["sqs:ReceiveMessage",
|
|
89
90
|
"sqs:DeleteMessage",
|
|
90
91
|
"sqs:GetQueueAttributes"],
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
Effect: "Allow",
|
|
93
|
+
Resource: queue_name_arn,
|
|
93
94
|
}
|
|
94
95
|
end
|
|
95
96
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'base64'
|
|
2
2
|
|
|
3
3
|
module Jets::Job::Helpers
|
|
4
|
-
module
|
|
4
|
+
module KinesisEvent
|
|
5
5
|
def kinesis_data
|
|
6
6
|
records = event["Records"]
|
|
7
7
|
records.map do |record|
|
|
@@ -9,5 +9,9 @@ module Jets::Job::Helpers
|
|
|
9
9
|
Base64.decode64(encoded) # data
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
def kinesis_data?
|
|
14
|
+
event["Records"]&.any? { |r| r.dig("kinesis", "data") }
|
|
15
|
+
end
|
|
12
16
|
end
|
|
13
17
|
end
|
|
@@ -4,7 +4,7 @@ require 'stringio'
|
|
|
4
4
|
require 'zlib'
|
|
5
5
|
|
|
6
6
|
module Jets::Job::Helpers
|
|
7
|
-
module
|
|
7
|
+
module LogEvent
|
|
8
8
|
def log_event
|
|
9
9
|
encoded = event["awslogs"]["data"]
|
|
10
10
|
compressed_string = Base64.decode64(encoded)
|
|
@@ -13,5 +13,9 @@ module Jets::Job::Helpers
|
|
|
13
13
|
data = JSON.load(uncompressed_string)
|
|
14
14
|
ActiveSupport::HashWithIndifferentAccess.new(data)
|
|
15
15
|
end
|
|
16
|
+
|
|
17
|
+
def log_event?
|
|
18
|
+
!!event.dig("awslogs", "data")
|
|
19
|
+
end
|
|
16
20
|
end
|
|
17
21
|
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module Jets::Job::Helpers
|
|
2
|
+
module S3Event
|
|
3
|
+
def s3_events
|
|
4
|
+
encoded_messages = event["Records"].map do |record|
|
|
5
|
+
record["Sns"]["Message"] # SNS message is JSON
|
|
6
|
+
end
|
|
7
|
+
# Decode the JSON messages
|
|
8
|
+
messages = encoded_messages.map do |message|
|
|
9
|
+
JSON.load(message)
|
|
10
|
+
end
|
|
11
|
+
# Extract the S3 event records
|
|
12
|
+
messages.map do |message|
|
|
13
|
+
message["Records"].map do |record|
|
|
14
|
+
ActiveSupport::HashWithIndifferentAccess.new(record)
|
|
15
|
+
end
|
|
16
|
+
end.flatten
|
|
17
|
+
end
|
|
18
|
+
alias s3_event_payloads s3_events
|
|
19
|
+
|
|
20
|
+
def s3_events?
|
|
21
|
+
event["Records"]&.any? { |r| r.dig("Sns", "Message") }
|
|
22
|
+
end
|
|
23
|
+
alias s3_event_payloads? s3_events?
|
|
24
|
+
|
|
25
|
+
def s3_objects
|
|
26
|
+
s3_events.map do |record|
|
|
27
|
+
record["s3"]["object"]
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def s3_objects?
|
|
32
|
+
s3_events.any? { |r| r.dig("s3", "object") }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Deprecated methods below
|
|
36
|
+
def s3_event
|
|
37
|
+
puts "WARN: s3_event is deprecated".color(:yellow)
|
|
38
|
+
puts "It can possibly drop events when they come in extremely fast."
|
|
39
|
+
puts "Use s3_events instead"
|
|
40
|
+
s3_events.first
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def s3_object
|
|
44
|
+
puts "WARN: s3_object is deprecated".color(:yellow)
|
|
45
|
+
puts "It can possibly drop events when they come in extremely fast."
|
|
46
|
+
puts "Use s3_objects instead"
|
|
47
|
+
s3_objects.first
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Jets::Job::Helpers
|
|
2
|
+
module SnsEvent
|
|
3
|
+
def sns_events
|
|
4
|
+
records = event["Records"]
|
|
5
|
+
return [] unless records
|
|
6
|
+
records.map do |record|
|
|
7
|
+
message = record["Sns"]["Message"]
|
|
8
|
+
ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
alias sns_event_payloads sns_events
|
|
12
|
+
|
|
13
|
+
def sns_events?
|
|
14
|
+
event["Records"]&.any? { |r| r.dig("Sns", "Message") }
|
|
15
|
+
end
|
|
16
|
+
alias sns_event_payloads? sns_events?
|
|
17
|
+
|
|
18
|
+
# Deprecated methods below
|
|
19
|
+
def sns_event_payload
|
|
20
|
+
puts "WARN: sns_event_payload is deprecated".color(:yellow)
|
|
21
|
+
puts "It can possibly drop events when they come in extremely fast."
|
|
22
|
+
puts "Use sns_events instead"
|
|
23
|
+
sns_events.first
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Jets::Job::Helpers
|
|
2
|
+
module SqsEvent
|
|
3
|
+
def sqs_events
|
|
4
|
+
records = event["Records"]
|
|
5
|
+
return [] unless records
|
|
6
|
+
records.map do |record|
|
|
7
|
+
message = record["body"]
|
|
8
|
+
ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
alias sqs_event_payloads sqs_events
|
|
12
|
+
|
|
13
|
+
def sqs_events?
|
|
14
|
+
event["Records"]&.any? { |r| r.dig("body") }
|
|
15
|
+
end
|
|
16
|
+
alias sqs_event_payloads? sqs_events?
|
|
17
|
+
|
|
18
|
+
# Deprecated methods below
|
|
19
|
+
def sqs_event_payload
|
|
20
|
+
puts "WARN: sqs_event_payload is deprecated".color(:yellow)
|
|
21
|
+
puts "It can possibly drop events when they come in extremely fast."
|
|
22
|
+
puts "Use sqs_events instead"
|
|
23
|
+
sqs_events.first
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/jets/klass.rb
CHANGED
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
# Jets::Klass.from_path("app/functions/hello_function.rb")
|
|
18
18
|
# Jets::Klass.from_path("app/shared/functions/whatever.rb")
|
|
19
19
|
#
|
|
20
|
-
# Jets::Klass.
|
|
20
|
+
# Jets::Klass.from_definition(definition)
|
|
21
21
|
#
|
|
22
|
-
# The
|
|
23
|
-
# for the CloudFormation child stack generation there the registered
|
|
22
|
+
# The from_definition method takes a Jets::Lambda::Definition as an argument and is useful
|
|
23
|
+
# for the CloudFormation child stack generation there the registered definition info
|
|
24
24
|
# is available but the path info is now.
|
|
25
25
|
class Jets::Klass
|
|
26
26
|
class << self
|
|
@@ -46,8 +46,8 @@ class Jets::Klass
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
APP_TYPES = %w[controller job rule authorizer]
|
|
49
|
-
def
|
|
50
|
-
class_name =
|
|
49
|
+
def from_definition(definition)
|
|
50
|
+
class_name = definition.class_name
|
|
51
51
|
filename = class_name.underscore
|
|
52
52
|
|
|
53
53
|
# Examples of filename: posts_controller, hard_job, security_rule, main_authorizer
|
|
@@ -89,7 +89,6 @@ class Jets::Klass
|
|
|
89
89
|
def modularize(class_name)
|
|
90
90
|
leaves = []
|
|
91
91
|
mods = class_name.split('::')[0..-2] # drop the last word
|
|
92
|
-
# puts "mods: #{mods}"
|
|
93
92
|
return Object if mods.empty?
|
|
94
93
|
|
|
95
94
|
leaves = []
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
module Jets::Lambda
|
|
2
|
+
class Definition
|
|
3
|
+
include Jets::Util::Camelize
|
|
4
|
+
|
|
5
|
+
attr_accessor :class_name, :type
|
|
6
|
+
attr_reader :meth, :properties, :iam_policy, :managed_iam_policy, :lang, :associated_resources
|
|
7
|
+
def initialize(class_name, meth, options={})
|
|
8
|
+
@class_name = class_name.to_s
|
|
9
|
+
@meth = meth
|
|
10
|
+
@options = options
|
|
11
|
+
@type = options[:type] || get_type # controller, job, or function
|
|
12
|
+
@properties = camelize(options[:properties]) || {}
|
|
13
|
+
@iam_policy = options[:iam_policy]
|
|
14
|
+
@managed_iam_policy = options[:managed_iam_policy]
|
|
15
|
+
@lang = options[:lang] || :ruby
|
|
16
|
+
@associated_resources = options[:associated_resources] || {}
|
|
17
|
+
@replacements = options[:replacements] || {} # added to baseline replacements
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def name
|
|
21
|
+
@meth
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def public_meth?
|
|
25
|
+
# For anonymous classes (app/functions/hello.rb) the class name will be blank.
|
|
26
|
+
# These types of classes are treated specially and has only one handler method
|
|
27
|
+
# that is registered. So we know it is public.
|
|
28
|
+
return true if @class_name.nil? || @class_name == ''
|
|
29
|
+
|
|
30
|
+
# Consider all polymorphic methods public for now
|
|
31
|
+
return true if @lang != :ruby
|
|
32
|
+
|
|
33
|
+
klass = @class_name.constantize
|
|
34
|
+
public_methods = klass.public_instance_methods
|
|
35
|
+
public_methods.include?(meth.to_sym)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def build_function_iam?
|
|
39
|
+
!!(@iam_policy || @managed_iam_policy)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
@@lang_exts = {
|
|
43
|
+
ruby: '.rb',
|
|
44
|
+
python: '.py',
|
|
45
|
+
node: '.js',
|
|
46
|
+
}
|
|
47
|
+
def lang_ext
|
|
48
|
+
@@lang_exts[@lang]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# The get_type method works for controller and job classes.
|
|
52
|
+
#
|
|
53
|
+
# Usually able to get the type from the class name. Examples:
|
|
54
|
+
#
|
|
55
|
+
# PostsController => controller
|
|
56
|
+
# HardJob => job
|
|
57
|
+
#
|
|
58
|
+
# However, for function types, we are not able to get the type for multiple of
|
|
59
|
+
# reasons. First, function types are allowed to be named with or without
|
|
60
|
+
# _function. Examples:
|
|
61
|
+
#
|
|
62
|
+
# path => class => type
|
|
63
|
+
# app/functions/hello.rb => Hello => function
|
|
64
|
+
# app/functions/hello_function.rb => HelloFunction => function
|
|
65
|
+
#
|
|
66
|
+
# The second reason is that functions are not regular ruby classes. Instead they
|
|
67
|
+
# are anonymous classes created with Class.new. When classes are created with
|
|
68
|
+
# Class.new the method_added hook has "" (blank string) as the self class name.
|
|
69
|
+
# We add the class_type to the task later on as we are constructing the class
|
|
70
|
+
# as part of the Class.new logic.
|
|
71
|
+
#
|
|
72
|
+
# For controller and job standard ruby classes though it can easily be
|
|
73
|
+
# determinated as part of initialization. So we get the type for convenience then.
|
|
74
|
+
#
|
|
75
|
+
# For anonymous function classes, we just set to nil and will later fix in
|
|
76
|
+
# FunctionConstructor.
|
|
77
|
+
#
|
|
78
|
+
# Returns: "controller", "job" or nil
|
|
79
|
+
def get_type
|
|
80
|
+
unless @class_name.empty? # when anonymous class is created with Class.new
|
|
81
|
+
@class_name.underscore.split('_').last # controller, job or rule
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def full_handler(handler_function)
|
|
86
|
+
"#{handler_base}.#{handler_function}"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def handler_path
|
|
90
|
+
"#{handler_base}#{lang_ext}"
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def handler_base
|
|
94
|
+
base = "handlers/#{@type.pluralize}/#{@class_name.underscore}"
|
|
95
|
+
base += "/#{@lang}" if @lang != :ruby
|
|
96
|
+
base += "/#{@meth}"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def poly_src_path
|
|
100
|
+
handler_path.sub("handlers/", "app/")
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def replacements
|
|
104
|
+
# Merge in the custom replacements specific to each app class: ConfigRule, Job, etc.
|
|
105
|
+
base_replacements.merge(@replacements)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def base_replacements
|
|
109
|
+
{ namespace: namespace }
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def namespace
|
|
113
|
+
ns = @class_name.gsub('::','').camelize
|
|
114
|
+
ns += @meth.to_s.camelize if @meth
|
|
115
|
+
ns
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|