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
|
@@ -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
|
|
@@ -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)}"
|
|
@@ -57,7 +57,7 @@ module Jets::Job::Dsl
|
|
|
57
57
|
|
|
58
58
|
props = options # by this time options only has EventSourceMapping properties
|
|
59
59
|
default = {
|
|
60
|
-
|
|
60
|
+
EventSourceArn: queue_arn
|
|
61
61
|
}
|
|
62
62
|
props = default.merge(props)
|
|
63
63
|
|
|
@@ -66,7 +66,7 @@ module Jets::Job::Dsl
|
|
|
66
66
|
|
|
67
67
|
def declare_sqs_queue(props)
|
|
68
68
|
props ||= {} # since options.delete(:queue_properties) can be nil
|
|
69
|
-
r = Jets::Resource::Sqs::Queue.new(props)
|
|
69
|
+
r = Jets::Cfn::Resource::Sqs::Queue.new(props)
|
|
70
70
|
with_fresh_properties do
|
|
71
71
|
resource(r.definition) # add associated resource immediately
|
|
72
72
|
end
|
|
@@ -85,11 +85,11 @@ module Jets::Job::Dsl
|
|
|
85
85
|
|
|
86
86
|
def default_sqs_iam_policy(queue_name_arn='*')
|
|
87
87
|
{
|
|
88
|
-
|
|
88
|
+
Action: ["sqs:ReceiveMessage",
|
|
89
89
|
"sqs:DeleteMessage",
|
|
90
90
|
"sqs:GetQueueAttributes"],
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
Effect: "Allow",
|
|
92
|
+
Resource: queue_name_arn,
|
|
93
93
|
}
|
|
94
94
|
end
|
|
95
95
|
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
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module Jets::Lambda::Dsl
|
|
2
|
+
module Warnings
|
|
3
|
+
def iam_policy_unused_warning(managed=false)
|
|
4
|
+
return unless show_iam_policy_unused_warning?
|
|
5
|
+
|
|
6
|
+
managed_prefix = managed ? "managed_" : ""
|
|
7
|
+
use_instead = case Jets.config.cfn.build.controllers
|
|
8
|
+
when "one_lambda_per_contoller"
|
|
9
|
+
"class_#{managed_prefix}iam_policy"
|
|
10
|
+
when "one_lambda_for_all_controllers"
|
|
11
|
+
"class_#{managed_prefix}iam_policy in the ApplicationController"
|
|
12
|
+
end
|
|
13
|
+
puts <<~EOL.color(:yellow)
|
|
14
|
+
WARNING: #{managed_prefix}iam_policy is not respected when config.cfn.build.controllers is not set to "one_lambda_per_controller"
|
|
15
|
+
Current setting: config.cfn.build.controllers = "#{Jets.config.cfn.build.controllers}"
|
|
16
|
+
Please use #{use_instead} instead.
|
|
17
|
+
Docs: #{iam_docs_url(managed)}
|
|
18
|
+
EOL
|
|
19
|
+
|
|
20
|
+
DslEvaluator.print_code(app_call_line) if app_call_line
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def class_iam_policy_unused_warning(managed=false)
|
|
24
|
+
return unless Jets.config.cfn.build.controllers == "one_lambda_for_all_controllers"
|
|
25
|
+
return if self.to_s == "ApplicationController" # ApplicationController not defined in job mode
|
|
26
|
+
return if self == Jets::PreheatJob
|
|
27
|
+
|
|
28
|
+
managed_prefix = managed ? "managed_" : ""
|
|
29
|
+
puts <<~EOL.color(:yellow)
|
|
30
|
+
WARNING: class_#{managed_prefix}iam_policy is not respected when
|
|
31
|
+
config.cfn.build.controllers is not set to "one_lambda_per_controller" or "one_lambda_per_method"
|
|
32
|
+
Current setting: config.cfn.build.controllers = "#{Jets.config.cfn.build.controllers}"
|
|
33
|
+
Please use class_#{managed_prefix}iam_policy in the ApplicationController instead.
|
|
34
|
+
Docs: #{iam_docs_url(managed)}
|
|
35
|
+
EOL
|
|
36
|
+
|
|
37
|
+
DslEvaluator.print_code(app_call_line) if app_call_line
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def show_iam_policy_unused_warning?
|
|
41
|
+
Jets.config.cfn.build.controllers != "one_lambda_per_method" &&
|
|
42
|
+
self.name.include?("Controller")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def iam_docs_url(managed)
|
|
46
|
+
if managed
|
|
47
|
+
"http://rubyonjets.com/docs/managed-iam-policies/"
|
|
48
|
+
else
|
|
49
|
+
"http://rubyonjets.com/docs/iam-policies/"
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def app_call_line
|
|
54
|
+
caller.find { |l| l.include?('app/controllers') }
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
data/lib/jets/lambda/dsl.rb
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
#
|
|
3
3
|
# default_associated_resource_definition
|
|
4
4
|
#
|
|
5
|
+
require "dsl_evaluator" # for DslEvaluator.print_code only
|
|
6
|
+
|
|
5
7
|
module Jets::Lambda::Dsl
|
|
6
8
|
extend ActiveSupport::Concern
|
|
7
9
|
|
|
@@ -12,6 +14,7 @@ module Jets::Lambda::Dsl
|
|
|
12
14
|
included do
|
|
13
15
|
class << self
|
|
14
16
|
extend Memoist
|
|
17
|
+
include Warnings
|
|
15
18
|
|
|
16
19
|
def class_properties(options=nil)
|
|
17
20
|
if options
|
|
@@ -31,23 +34,23 @@ module Jets::Lambda::Dsl
|
|
|
31
34
|
|
|
32
35
|
def class_environment(hash)
|
|
33
36
|
environment = standardize_env(hash)
|
|
34
|
-
class_properties(
|
|
37
|
+
class_properties(Environment: environment)
|
|
35
38
|
end
|
|
36
39
|
alias_method :class_env, :class_environment
|
|
37
40
|
|
|
38
41
|
def environment(hash)
|
|
39
42
|
environment = standardize_env(hash)
|
|
40
|
-
properties(
|
|
43
|
+
properties(Environment: environment)
|
|
41
44
|
end
|
|
42
45
|
alias_method :env, :environment
|
|
43
46
|
|
|
44
47
|
# Allows user to pass in hash with or without the :variables key.
|
|
45
48
|
def standardize_env(hash)
|
|
46
|
-
return hash if hash.key?(:
|
|
49
|
+
return hash if hash.key?(:Variables)
|
|
47
50
|
|
|
48
51
|
environment = {}
|
|
49
|
-
environment[:
|
|
50
|
-
environment[:
|
|
52
|
+
environment[:Variables] ||= {}
|
|
53
|
+
environment[:Variables].merge!(hash)
|
|
51
54
|
environment
|
|
52
55
|
end
|
|
53
56
|
|
|
@@ -99,7 +102,9 @@ module Jets::Lambda::Dsl
|
|
|
99
102
|
if definitions.empty?
|
|
100
103
|
@iam_policy
|
|
101
104
|
else
|
|
102
|
-
|
|
105
|
+
iam_policy_unused_warning(managed=false)
|
|
106
|
+
@iam_policy ||= []
|
|
107
|
+
@iam_policy += definitions.flatten
|
|
103
108
|
end
|
|
104
109
|
end
|
|
105
110
|
|
|
@@ -108,7 +113,9 @@ module Jets::Lambda::Dsl
|
|
|
108
113
|
if definitions.empty?
|
|
109
114
|
@class_iam_policy
|
|
110
115
|
else
|
|
111
|
-
|
|
116
|
+
class_iam_policy_unused_warning(managed=false)
|
|
117
|
+
@class_iam_policy ||= []
|
|
118
|
+
@class_iam_policy += definitions.flatten
|
|
112
119
|
end
|
|
113
120
|
end
|
|
114
121
|
|
|
@@ -117,7 +124,9 @@ module Jets::Lambda::Dsl
|
|
|
117
124
|
if definitions.empty?
|
|
118
125
|
@managed_iam_policy
|
|
119
126
|
else
|
|
120
|
-
|
|
127
|
+
iam_policy_unused_warning(managed=true)
|
|
128
|
+
@managed_iam_policy ||= []
|
|
129
|
+
@managed_iam_policy += definitions.flatten
|
|
121
130
|
end
|
|
122
131
|
end
|
|
123
132
|
|
|
@@ -126,7 +135,9 @@ module Jets::Lambda::Dsl
|
|
|
126
135
|
if definitions.empty?
|
|
127
136
|
@class_managed_iam_policy
|
|
128
137
|
else
|
|
129
|
-
|
|
138
|
+
class_iam_policy_unused_warning(managed=true)
|
|
139
|
+
@class_managed_iam_policy ||= []
|
|
140
|
+
@class_managed_iam_policy += definitions.flatten
|
|
130
141
|
end
|
|
131
142
|
end
|
|
132
143
|
|
|
@@ -142,7 +153,7 @@ module Jets::Lambda::Dsl
|
|
|
142
153
|
@associated_resources || []
|
|
143
154
|
else
|
|
144
155
|
@associated_resources ||= []
|
|
145
|
-
associated_resource = Jets::Resource::Associated.new(definitions)
|
|
156
|
+
associated_resource = Jets::Cfn::Resource::Associated.new(definitions)
|
|
146
157
|
associated_resource.multiple_resources = @multiple_resources
|
|
147
158
|
@associated_resources << associated_resource
|
|
148
159
|
@associated_resources.flatten!
|
|
@@ -208,7 +219,7 @@ module Jets::Lambda::Dsl
|
|
|
208
219
|
|
|
209
220
|
logical_id = logical_id.to_s.sub(/\d+$/,'')
|
|
210
221
|
new_definition = { "#{logical_id}#{n}" => attributes }
|
|
211
|
-
numbered_resources << Jets::Resource::Associated.new(new_definition)
|
|
222
|
+
numbered_resources << Jets::Cfn::Resource::Associated.new(new_definition)
|
|
212
223
|
n += 1
|
|
213
224
|
end
|
|
214
225
|
@associated_resources = numbered_resources
|
|
@@ -248,13 +259,13 @@ module Jets::Lambda::Dsl
|
|
|
248
259
|
return if %w[initialize method_missing].include?(meth.to_s)
|
|
249
260
|
return unless public_method_defined?(meth)
|
|
250
261
|
|
|
251
|
-
|
|
262
|
+
register_definition(meth)
|
|
252
263
|
end
|
|
253
264
|
|
|
254
|
-
def
|
|
265
|
+
def register_definition(meth, lang=:ruby)
|
|
255
266
|
# Note: for anonymous classes like for app/functions self.name is ""
|
|
256
267
|
# We adjust the class name when we build the functions later in
|
|
257
|
-
# FunctionContstructor#
|
|
268
|
+
# FunctionContstructor#adjust_definitions.
|
|
258
269
|
|
|
259
270
|
# At this point we can use the current associated_properties and defined the
|
|
260
271
|
# associated resource with the Lambda function.
|
|
@@ -268,7 +279,7 @@ module Jets::Lambda::Dsl
|
|
|
268
279
|
add_logical_id_counter
|
|
269
280
|
end
|
|
270
281
|
|
|
271
|
-
|
|
282
|
+
all_definitions[meth] = Jets::Lambda::Definition.new(self.name, meth,
|
|
272
283
|
properties: @properties, # lambda function properties
|
|
273
284
|
iam_policy: @iam_policy,
|
|
274
285
|
managed_iam_policy: @managed_iam_policy,
|
|
@@ -279,7 +290,7 @@ module Jets::Lambda::Dsl
|
|
|
279
290
|
# Done storing options, clear out for the next added method.
|
|
280
291
|
clear_properties
|
|
281
292
|
# Important to clear @properties at the end of registering outside of
|
|
282
|
-
#
|
|
293
|
+
# register_definition because register_definition is overridden in Jets::Job::Dsl
|
|
283
294
|
#
|
|
284
295
|
# Jets::Job::Base < Jets::Lambda::Functions
|
|
285
296
|
#
|
|
@@ -302,28 +313,28 @@ module Jets::Lambda::Dsl
|
|
|
302
313
|
@associated_properties = nil
|
|
303
314
|
end
|
|
304
315
|
|
|
305
|
-
# Returns the all
|
|
316
|
+
# Returns the all definitions for this class with their method names as keys.
|
|
306
317
|
#
|
|
307
318
|
# ==== Returns
|
|
308
|
-
# OrderedHash:: An ordered hash with
|
|
319
|
+
# OrderedHash:: An ordered hash with definitions names as keys and definition
|
|
309
320
|
# objects as values.
|
|
310
321
|
#
|
|
311
|
-
def
|
|
312
|
-
@
|
|
322
|
+
def all_definitions
|
|
323
|
+
@all_definitions ||= ActiveSupport::OrderedHash.new
|
|
313
324
|
end
|
|
314
|
-
# Do not call all
|
|
315
|
-
private :
|
|
325
|
+
# Do not call all definitions outside this class, instead use: definitions or lambda functions
|
|
326
|
+
private :all_definitions
|
|
316
327
|
|
|
317
|
-
# Goes up the class inheritance chain to build the
|
|
328
|
+
# Goes up the class inheritance chain to build the definitions.
|
|
318
329
|
#
|
|
319
330
|
# Example heirarchy:
|
|
320
331
|
#
|
|
321
332
|
# Jets::Lambda::Functions > Jets::Controller::Base > ApplicationController ...
|
|
322
333
|
# > PostsController > ChildPostsController
|
|
323
334
|
#
|
|
324
|
-
# Do not include
|
|
335
|
+
# Do not include definitions from the direct subclasses of Jets::Lambda::Functions
|
|
325
336
|
# because those classes are abstract. Dont want those methods to be included.
|
|
326
|
-
def
|
|
337
|
+
def find_all_definitions(options={})
|
|
327
338
|
public = options[:public].nil? ? true : options[:public]
|
|
328
339
|
klass = self
|
|
329
340
|
direct_subclasses = Jets::Lambda::Functions.subclasses
|
|
@@ -331,53 +342,53 @@ module Jets::Lambda::Dsl
|
|
|
331
342
|
|
|
332
343
|
# Go up class inheritance and builds lookup structure in memory
|
|
333
344
|
until direct_subclasses.include?(klass)
|
|
334
|
-
lookup << klass.send(:
|
|
345
|
+
lookup << klass.send(:all_definitions) # one place we want to call private all_definitions method
|
|
335
346
|
klass = klass.superclass
|
|
336
347
|
end
|
|
337
|
-
|
|
338
|
-
# Go back down the class inheritance chain in reverse order and merge the
|
|
339
|
-
lookup.reverse.each do |
|
|
340
|
-
#
|
|
341
|
-
|
|
348
|
+
merged_definitions = ActiveSupport::OrderedHash.new
|
|
349
|
+
# Go back down the class inheritance chain in reverse order and merge the definitions
|
|
350
|
+
lookup.reverse.each do |definitions_hash|
|
|
351
|
+
# definitions_hash is a result of all_definitions. Example: PostsController.all_definitions
|
|
352
|
+
merged_definitions.merge!(definitions_hash)
|
|
342
353
|
end
|
|
343
354
|
|
|
344
355
|
# The cfn builders required the right final child class to build the lambda functions correctly.
|
|
345
|
-
|
|
356
|
+
merged_definitions.each do |meth, definition|
|
|
346
357
|
# Override the class name for the cfn builders
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
358
|
+
definition = definition.clone # do not stomp over current definitions since things are usually looked by reference
|
|
359
|
+
definition.instance_variable_set(:@class_name, self.name)
|
|
360
|
+
merged_definitions[meth] = definition
|
|
350
361
|
end
|
|
351
362
|
|
|
352
363
|
# Methods can be made private with the :private keyword after the method has been defined.
|
|
353
364
|
# To account for this, loop back thorugh all the methods and check if the method is indeed public.
|
|
354
|
-
|
|
355
|
-
|
|
365
|
+
definitions = ActiveSupport::OrderedHash.new
|
|
366
|
+
merged_definitions.each do |meth, definition|
|
|
356
367
|
if public
|
|
357
|
-
|
|
368
|
+
definitions[meth] = definition if definition.public_meth?
|
|
358
369
|
else
|
|
359
|
-
|
|
370
|
+
definitions[meth] = definition unless definition.public_meth?
|
|
360
371
|
end
|
|
361
372
|
end
|
|
362
|
-
|
|
373
|
+
definitions
|
|
363
374
|
end
|
|
364
|
-
memoize :
|
|
375
|
+
memoize :find_all_definitions
|
|
365
376
|
|
|
366
|
-
def
|
|
367
|
-
|
|
377
|
+
def all_public_definitions
|
|
378
|
+
find_all_definitions(public: true)
|
|
368
379
|
end
|
|
369
380
|
|
|
370
|
-
def
|
|
371
|
-
|
|
381
|
+
def all_private_definitions
|
|
382
|
+
find_all_definitions(public: false)
|
|
372
383
|
end
|
|
373
384
|
|
|
374
|
-
# Returns the
|
|
385
|
+
# Returns the definitions for this class in Array form.
|
|
375
386
|
#
|
|
376
387
|
# ==== Returns
|
|
377
|
-
# Array of
|
|
388
|
+
# Array of definition objects
|
|
378
389
|
#
|
|
379
|
-
def
|
|
380
|
-
|
|
390
|
+
def definitions
|
|
391
|
+
all_public_definitions.values
|
|
381
392
|
end
|
|
382
393
|
|
|
383
394
|
# The public methods defined in the project app class ulimately become
|
|
@@ -386,18 +397,18 @@ module Jets::Lambda::Dsl
|
|
|
386
397
|
# Example return value:
|
|
387
398
|
# [:index, :new, :create, :show]
|
|
388
399
|
def lambda_functions
|
|
389
|
-
|
|
400
|
+
all_public_definitions.keys
|
|
390
401
|
end
|
|
391
402
|
|
|
392
|
-
# Used in Jets::Cfn::
|
|
403
|
+
# Used in Jets::Cfn::Builder::Interface#build
|
|
393
404
|
# Overridden in rule/dsl.rb
|
|
394
405
|
def build?
|
|
395
|
-
!
|
|
406
|
+
!definitions.empty?
|
|
396
407
|
end
|
|
397
408
|
|
|
398
409
|
# Polymorphic support
|
|
399
410
|
def defpoly(lang, meth)
|
|
400
|
-
|
|
411
|
+
register_definition(meth, lang)
|
|
401
412
|
end
|
|
402
413
|
|
|
403
414
|
def python(meth)
|
data/lib/jets/lambda/function.rb
CHANGED
|
@@ -13,11 +13,11 @@ module Jets::Lambda
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def self.handler
|
|
16
|
-
|
|
16
|
+
handler_definition.meth
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
def self.
|
|
20
|
-
|
|
19
|
+
def self.handler_definition
|
|
20
|
+
definitions.first
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
# Used by main_processor.rb. Same interface as controllers and jobs.
|
|
@@ -36,18 +36,18 @@ module Jets::Lambda
|
|
|
36
36
|
code = IO.read(@code_path)
|
|
37
37
|
function_klass = Class.new(Jets::Lambda::Function)
|
|
38
38
|
function_klass.module_eval(code, @code_path)
|
|
39
|
-
|
|
39
|
+
adjust_definitions(function_klass)
|
|
40
40
|
function_klass # assign this to a Constant for a pretty class name
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
# For anonymous classes method_added during
|
|
43
|
+
# For anonymous classes method_added during definition registration contains ""
|
|
44
44
|
# for the class name. We adjust it here.
|
|
45
|
-
def
|
|
45
|
+
def adjust_definitions(klass)
|
|
46
46
|
class_name = @code_path.to_s.sub(/.*\/functions\//,'').sub(/\.rb$/, '')
|
|
47
47
|
class_name = class_name.camelize
|
|
48
|
-
klass.
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
klass.definitions.each do |definition|
|
|
49
|
+
definition.class_name = class_name
|
|
50
|
+
definition.type = "function"
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
end
|