jets-fs 1.6.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 +7 -0
- data/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +126 -0
- data/.codebuild/README.md +68 -0
- data/.codebuild/bin/jets +3 -0
- data/.codebuild/buildspec-base.yml +14 -0
- data/.codebuild/integration.sh +72 -0
- data/.codebuild/jets.postman_collection.json +323 -0
- data/.codebuild/scripts/install-docker.sh +12 -0
- data/.codebuild/scripts/install-dynamodb-local.sh +22 -0
- data/.codebuild/scripts/install-java.sh +22 -0
- data/.codebuild/scripts/install-node.sh +4 -0
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +73 -0
- data/.github/ISSUE_TEMPLATE/documentation.md +27 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +64 -0
- data/.github/ISSUE_TEMPLATE/question.md +16 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- data/.gitignore +24 -0
- data/.gitmodules +6 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +533 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +190 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +21 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets +14 -0
- data/jets.gemspec +61 -0
- data/lib/jets.rb +71 -0
- data/lib/jets/application.rb +308 -0
- data/lib/jets/aws_info.rb +111 -0
- data/lib/jets/aws_services.rb +60 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +130 -0
- data/lib/jets/builders.rb +16 -0
- data/lib/jets/builders/code_builder.rb +379 -0
- data/lib/jets/builders/code_size.rb +57 -0
- data/lib/jets/builders/gem_replacer.rb +76 -0
- data/lib/jets/builders/handler_generator.rb +172 -0
- data/lib/jets/builders/lambda_layer.rb +69 -0
- data/lib/jets/builders/md5.rb +60 -0
- data/lib/jets/builders/md5_zip.rb +61 -0
- data/lib/jets/builders/purger.rb +35 -0
- data/lib/jets/builders/rack_packager.rb +51 -0
- data/lib/jets/builders/rackup_wrappers/rackup +19 -0
- data/lib/jets/builders/rackup_wrappers/rackup.rb +7 -0
- data/lib/jets/builders/reconfigure_rails.rb +114 -0
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +16 -0
- data/lib/jets/builders/ruby_packager.rb +207 -0
- data/lib/jets/builders/shim_vars.rb +5 -0
- data/lib/jets/builders/shim_vars/app.rb +78 -0
- data/lib/jets/builders/shim_vars/base.rb +25 -0
- data/lib/jets/builders/shim_vars/shared.rb +37 -0
- data/lib/jets/builders/templates/handler.rb +12 -0
- data/lib/jets/builders/tidy.rb +107 -0
- data/lib/jets/builders/util.rb +31 -0
- data/lib/jets/camelizer.rb +67 -0
- data/lib/jets/cfn.rb +6 -0
- data/lib/jets/cfn/builders.rb +20 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +58 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +80 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +82 -0
- data/lib/jets/cfn/builders/controller_builder.rb +42 -0
- data/lib/jets/cfn/builders/function_builder.rb +14 -0
- data/lib/jets/cfn/builders/interface.rb +127 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/parent_builder.rb +93 -0
- data/lib/jets/cfn/builders/rule_builder.rb +24 -0
- data/lib/jets/cfn/builders/shared_builder.rb +14 -0
- data/lib/jets/cfn/ship.rb +189 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +189 -0
- data/lib/jets/commands.rb +27 -0
- data/lib/jets/commands/base.rb +164 -0
- data/lib/jets/commands/build.rb +217 -0
- data/lib/jets/commands/call.rb +174 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +112 -0
- data/lib/jets/commands/call/base_guesser.rb +33 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +23 -0
- data/lib/jets/commands/clean/base.rb +24 -0
- data/lib/jets/commands/clean/build.rb +13 -0
- data/lib/jets/commands/clean/log.rb +107 -0
- data/lib/jets/commands/console.rb +13 -0
- data/lib/jets/commands/db.rb +15 -0
- data/lib/jets/commands/db/environment-task.rake +3 -0
- data/lib/jets/commands/db/tasks.rb +44 -0
- data/lib/jets/commands/dbconsole.rb +131 -0
- data/lib/jets/commands/delete.rb +143 -0
- data/lib/jets/commands/deploy.rb +131 -0
- data/lib/jets/commands/dynamodb.rb +22 -0
- data/lib/jets/commands/dynamodb/migrate.rb +9 -0
- data/lib/jets/commands/dynamodb/migrator.rb +36 -0
- data/lib/jets/commands/gems.rb +21 -0
- data/lib/jets/commands/help.rb +9 -0
- data/lib/jets/commands/help/build.md +6 -0
- data/lib/jets/commands/help/call.md +61 -0
- data/lib/jets/commands/help/clean/build.md +5 -0
- data/lib/jets/commands/help/clean/log.md +5 -0
- data/lib/jets/commands/help/console.md +18 -0
- data/lib/jets/commands/help/db/generate.md +8 -0
- data/lib/jets/commands/help/dbconsole.md +9 -0
- data/lib/jets/commands/help/delete.md +22 -0
- data/lib/jets/commands/help/deploy.md +32 -0
- data/lib/jets/commands/help/dynamodb/generate.md +52 -0
- data/lib/jets/commands/help/dynamodb/migrate.md +4 -0
- data/lib/jets/commands/help/gems/check.md +8 -0
- data/lib/jets/commands/help/generate.md +22 -0
- data/lib/jets/commands/help/import/rack.md +13 -0
- data/lib/jets/commands/help/import/rails.md +11 -0
- data/lib/jets/commands/help/new.md +42 -0
- data/lib/jets/commands/help/routes.md +16 -0
- data/lib/jets/commands/help/runner.md +17 -0
- data/lib/jets/commands/help/server.md +15 -0
- data/lib/jets/commands/help/status.md +14 -0
- data/lib/jets/commands/help/upgrade.md +5 -0
- data/lib/jets/commands/help/url.md +6 -0
- data/lib/jets/commands/import.rb +18 -0
- data/lib/jets/commands/import/base.rb +49 -0
- data/lib/jets/commands/import/cheatsheet.rb +35 -0
- data/lib/jets/commands/import/rack.rb +16 -0
- data/lib/jets/commands/import/rail.rb +74 -0
- data/lib/jets/commands/import/sequence.rb +90 -0
- data/lib/jets/commands/import/templates/config/database.yml +26 -0
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +89 -0
- data/lib/jets/commands/main.rb +152 -0
- data/lib/jets/commands/markdown.rb +8 -0
- data/lib/jets/commands/markdown/creator.rb +58 -0
- data/lib/jets/commands/markdown/index.rb +27 -0
- data/lib/jets/commands/markdown/page.rb +125 -0
- data/lib/jets/commands/markdown/shell.rb +11 -0
- data/lib/jets/commands/new.rb +157 -0
- data/lib/jets/commands/rake_command.rb +61 -0
- data/lib/jets/commands/rake_tasks.rb +45 -0
- data/lib/jets/commands/runner.rb +18 -0
- data/lib/jets/commands/sequence.rb +99 -0
- data/lib/jets/commands/stack_info.rb +30 -0
- data/lib/jets/commands/templates/skeleton/.gitignore +12 -0
- data/lib/jets/commands/templates/skeleton/.jetskeep +1 -0
- data/lib/jets/commands/templates/skeleton/.rspec +3 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +35 -0
- data/lib/jets/commands/templates/skeleton/Procfile +7 -0
- data/lib/jets/commands/templates/skeleton/README.md +11 -0
- data/lib/jets/commands/templates/skeleton/Rakefile +2 -0
- data/lib/jets/commands/templates/skeleton/app/controllers/application_controller.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/helpers/application_helper.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +4 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_record.rb +3 -0
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +25 -0
- data/lib/jets/commands/templates/skeleton/config.ru +5 -0
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +66 -0
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +26 -0
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +22 -0
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +4 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +4 -0
- data/lib/jets/commands/templates/skeleton/config/routes.rb +9 -0
- data/lib/jets/commands/templates/skeleton/db/.gitkeep +0 -0
- data/lib/jets/commands/templates/skeleton/public/404.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/422.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/500.html +66 -0
- data/lib/jets/commands/templates/skeleton/public/favicon.ico +0 -0
- data/lib/jets/commands/templates/skeleton/public/index.html.tt +91 -0
- data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +15 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-index.json +51 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-show.json +53 -0
- data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +30 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +14 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/src/jets/crud.js +87 -0
- data/lib/jets/commands/upgrade.rb +146 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack +19 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +19 -0
- data/lib/jets/commands/url.rb +68 -0
- data/lib/jets/commands/webpacker_template.rb +18 -0
- data/lib/jets/controller.rb +16 -0
- data/lib/jets/controller/base.rb +103 -0
- data/lib/jets/controller/callbacks.rb +62 -0
- data/lib/jets/controller/cookies.rb +40 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware.rb +5 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +119 -0
- data/lib/jets/controller/middleware/local/api_gateway.rb +93 -0
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +38 -0
- data/lib/jets/controller/middleware/local/route_matcher.rb +97 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack.rb +5 -0
- data/lib/jets/controller/rack/adapter.rb +63 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +84 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +238 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/core.rb +211 -0
- data/lib/jets/core_ext/kernel.rb +56 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +39 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +41 -0
- data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
- data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +39 -0
- data/lib/jets/generator/templates/erb/scaffold/edit.html.erb +6 -0
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +29 -0
- data/lib/jets/generator/templates/erb/scaffold/new.html.erb +5 -0
- data/lib/jets/generator/templates/erb/scaffold/show.html.erb +9 -0
- data/lib/jets/generator/templates/rails/assets/javascript.js +2 -0
- data/lib/jets/generator/templates/rails/assets/stylesheet.css +4 -0
- data/lib/jets/generator/templates/rails/controller/controller.rb +13 -0
- data/lib/jets/generator/templates/rails/helper/helper.rb +4 -0
- data/lib/jets/generator/templates/rails/scaffold/scaffold.css +80 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb +62 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +79 -0
- data/lib/jets/inflections.rb +32 -0
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +31 -0
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +25 -0
- data/lib/jets/internal/app/functions/jets/base_path.rb +153 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +62 -0
- data/lib/jets/io.rb +14 -0
- data/lib/jets/job.rb +4 -0
- data/lib/jets/job/base.rb +29 -0
- data/lib/jets/job/dsl.rb +108 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda.rb +18 -0
- data/lib/jets/lambda/dsl.rb +384 -0
- data/lib/jets/lambda/function.rb +29 -0
- data/lib/jets/lambda/function_constructor.rb +55 -0
- data/lib/jets/lambda/functions.rb +34 -0
- data/lib/jets/lambda/task.rb +111 -0
- data/lib/jets/logger.rb +24 -0
- data/lib/jets/mega.rb +7 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +140 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +38 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +49 -0
- data/lib/jets/middleware/layer.rb +34 -0
- data/lib/jets/middleware/stack.rb +77 -0
- data/lib/jets/naming.rb +49 -0
- data/lib/jets/overrides/lambda.rb +1 -0
- data/lib/jets/overrides/lambda/marshaller.rb +31 -0
- data/lib/jets/overrides/rails.rb +4 -0
- data/lib/jets/overrides/rails/asset_tag_helper.rb +114 -0
- data/lib/jets/overrides/rails/common_methods.rb +20 -0
- data/lib/jets/overrides/rails/rendering_helper.rb +26 -0
- data/lib/jets/overrides/rails/url_helper.rb +25 -0
- data/lib/jets/poly_fun.rb +82 -0
- data/lib/jets/poly_fun/base_executor.rb +125 -0
- data/lib/jets/poly_fun/lambda_executor.rb +16 -0
- data/lib/jets/poly_fun/node_error.rb +8 -0
- data/lib/jets/poly_fun/node_executor.rb +54 -0
- data/lib/jets/poly_fun/python_error.rb +8 -0
- data/lib/jets/poly_fun/python_executor.rb +23 -0
- data/lib/jets/preheat.rb +117 -0
- data/lib/jets/processors.rb +4 -0
- data/lib/jets/processors/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +59 -0
- data/lib/jets/rack_server.rb +80 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +74 -0
- data/lib/jets/resource/api_gateway.rb +9 -0
- data/lib/jets/resource/api_gateway/base_path.rb +5 -0
- data/lib/jets/resource/api_gateway/base_path/function.rb +42 -0
- data/lib/jets/resource/api_gateway/base_path/mapping.rb +44 -0
- data/lib/jets/resource/api_gateway/base_path/role.rb +76 -0
- data/lib/jets/resource/api_gateway/cors.rb +61 -0
- data/lib/jets/resource/api_gateway/deployment.rb +78 -0
- data/lib/jets/resource/api_gateway/domain_name.rb +59 -0
- data/lib/jets/resource/api_gateway/method.rb +98 -0
- data/lib/jets/resource/api_gateway/resource.rb +78 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +60 -0
- data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +42 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +63 -0
- data/lib/jets/resource/api_gateway/rest_api/routes.rb +11 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +12 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +130 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/to.rb +29 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/variable.rb +39 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision.rb +123 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +26 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack.rb +7 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +29 -0
- data/lib/jets/resource/child_stack/app_class.rb +112 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +90 -0
- data/lib/jets/resource/config.rb +4 -0
- data/lib/jets/resource/config/config_rule.rb +74 -0
- data/lib/jets/resource/config/managed_rule.rb +15 -0
- data/lib/jets/resource/events.rb +3 -0
- data/lib/jets/resource/events/rule.rb +31 -0
- data/lib/jets/resource/iam.rb +8 -0
- data/lib/jets/resource/iam/application_role.rb +27 -0
- data/lib/jets/resource/iam/base_role_definition.rb +47 -0
- data/lib/jets/resource/iam/class_role.rb +74 -0
- data/lib/jets/resource/iam/function_role.rb +54 -0
- data/lib/jets/resource/iam/managed_policy.rb +22 -0
- data/lib/jets/resource/iam/policy_document.rb +41 -0
- data/lib/jets/resource/lambda.rb +5 -0
- data/lib/jets/resource/lambda/function.rb +216 -0
- data/lib/jets/resource/lambda/function/environment.rb +61 -0
- data/lib/jets/resource/lambda/gem_layer.rb +17 -0
- data/lib/jets/resource/lambda/layer_version.rb +44 -0
- data/lib/jets/resource/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +77 -0
- data/lib/jets/resource/route53.rb +3 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3.rb +17 -0
- data/lib/jets/resource/sns.rb +3 -0
- data/lib/jets/resource/sqs.rb +3 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +175 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule.rb +4 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +52 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +98 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +103 -0
- data/lib/jets/stack/builder.rb +38 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/function.rb +60 -0
- data/lib/jets/stack/main.rb +5 -0
- data/lib/jets/stack/main/dsl.rb +33 -0
- data/lib/jets/stack/main/extensions/base.rb +45 -0
- data/lib/jets/stack/main/extensions/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/extensions/lambda.rb +71 -0
- data/lib/jets/stack/main/extensions/sns.rb +12 -0
- data/lib/jets/stack/main/extensions/sqs.rb +36 -0
- data/lib/jets/stack/output.rb +38 -0
- data/lib/jets/stack/output/dsl.rb +19 -0
- data/lib/jets/stack/output/lookup.rb +36 -0
- data/lib/jets/stack/parameter.rb +38 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +32 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +30 -0
- data/lib/jets/turbo.rb +47 -0
- data/lib/jets/turbo/database_yaml.rb +41 -0
- data/lib/jets/turbo/project/.gitignore +12 -0
- data/lib/jets/turbo/project/.jetskeep +1 -0
- data/lib/jets/turbo/project/Gemfile +16 -0
- data/lib/jets/turbo/project/Rakefile +2 -0
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +2 -0
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +2 -0
- data/lib/jets/turbo/project/app/jobs/application_job.rb +4 -0
- data/lib/jets/turbo/project/config.ru +5 -0
- data/lib/jets/turbo/project/config/application.rb +4 -0
- data/lib/jets/turbo/project/config/routes.rb +4 -0
- data/lib/jets/turbo/rail.rb +113 -0
- data/lib/jets/turbo/templates/config/database.yml +26 -0
- data/lib/jets/util.rb +38 -0
- data/lib/jets/version.rb +3 -0
- data/readme/prerelease.md +6 -0
- data/readme/testing.md +60 -0
- metadata +859 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Jets::Middleware
|
|
2
|
+
class DefaultStack
|
|
3
|
+
attr_reader :config, :app
|
|
4
|
+
def initialize(app, config)
|
|
5
|
+
@app = app
|
|
6
|
+
@config = config
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def build_stack
|
|
10
|
+
Stack.new do |middleware|
|
|
11
|
+
middleware.use Rack::Runtime
|
|
12
|
+
middleware.use Jets::Controller::Middleware::Cors if cors_enabled?
|
|
13
|
+
middleware.use Rack::MethodOverride # must come before Middleware::Local for multipart post forms to work
|
|
14
|
+
middleware.use Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only
|
|
15
|
+
middleware.use session_store, session_options # use session_store, session_options
|
|
16
|
+
middleware.use Rack::Head
|
|
17
|
+
middleware.use Rack::ConditionalGet
|
|
18
|
+
middleware.use Rack::ETag
|
|
19
|
+
use_webpacker(middleware)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
def cors_enabled?
|
|
25
|
+
Jets.config.cors
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Written as method to easily not include webpacker for case when either
|
|
29
|
+
# webpacker not installed at all or disabled upon `jets deploy`.
|
|
30
|
+
def use_webpacker(middleware)
|
|
31
|
+
return unless Jets.webpacker? # checks for local development if webpacker installed
|
|
32
|
+
# Different check for middleware because we need webpacker helpers for url helpers.
|
|
33
|
+
# But we dont want to actually serve via webpacker middleware when running on AWS.
|
|
34
|
+
# By this time the url helpers are serving assets out of s3.
|
|
35
|
+
return if File.exist?("#{Jets.root}/config/disable-webpacker-middleware.txt") # created as part of `jets deploy`
|
|
36
|
+
require "jets/controller/middleware/webpacker_setup"
|
|
37
|
+
middleware.use Webpacker::DevServerProxy
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def session_store
|
|
41
|
+
Jets.config.session[:store] # do not use dot notation. session.store is a method on ActiveSupport::OrderedOptions.new
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def session_options
|
|
45
|
+
defaults = { secret: ENV['SECRET_KEY_BASE'] }
|
|
46
|
+
defaults.merge(Jets.config.session.options)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Jets::Middleware
|
|
2
|
+
class Layer
|
|
3
|
+
attr_reader :args, :block, :klass
|
|
4
|
+
|
|
5
|
+
def initialize(klass, args, block)
|
|
6
|
+
@klass = klass
|
|
7
|
+
@args = args
|
|
8
|
+
@block = block
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def name; klass.name; end
|
|
12
|
+
|
|
13
|
+
def ==(middleware)
|
|
14
|
+
case middleware
|
|
15
|
+
when Layer
|
|
16
|
+
klass == middleware.klass
|
|
17
|
+
when Class
|
|
18
|
+
klass == middleware
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def inspect
|
|
23
|
+
if klass.is_a?(Class)
|
|
24
|
+
klass.to_s
|
|
25
|
+
else
|
|
26
|
+
klass.class.to_s
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def build(app)
|
|
31
|
+
klass.new(app, *args, &block)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module Jets::Middleware
|
|
2
|
+
class Stack
|
|
3
|
+
include Enumerable
|
|
4
|
+
|
|
5
|
+
attr_accessor :middlewares
|
|
6
|
+
def initialize(*args)
|
|
7
|
+
@middlewares = []
|
|
8
|
+
yield(self) if block_given?
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def each
|
|
12
|
+
@middlewares.each { |x| yield x }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def size
|
|
16
|
+
middlewares.size
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def last
|
|
20
|
+
middlewares.last
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def [](i)
|
|
24
|
+
middlewares[i]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def unshift(klass, *args, &block)
|
|
28
|
+
middlewares.unshift(build_middleware(klass, args, block))
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def initialize_copy(other)
|
|
32
|
+
self.middlewares = other.middlewares.dup
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def insert(index, klass, *args, &block)
|
|
36
|
+
index = assert_index(index, :before)
|
|
37
|
+
middlewares.insert(index, build_middleware(klass, args, block))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
alias_method :insert_before, :insert
|
|
41
|
+
|
|
42
|
+
def insert_after(index, *args, &block)
|
|
43
|
+
index = assert_index(index, :after)
|
|
44
|
+
insert(index + 1, *args, &block)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def swap(target, *args, &block)
|
|
48
|
+
index = assert_index(target, :before)
|
|
49
|
+
insert(index, *args, &block)
|
|
50
|
+
middlewares.delete_at(index + 1)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def delete(target)
|
|
54
|
+
middlewares.delete_if { |m| m.klass == target }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def use(klass, *args, &block)
|
|
58
|
+
middlewares.push(build_middleware(klass, args, block))
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def build(app = Proc.new)
|
|
62
|
+
middlewares.freeze.reverse.inject(app) { |a, e| e.build(a) }
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
|
|
67
|
+
def assert_index(index, where)
|
|
68
|
+
i = index.is_a?(Integer) ? index : middlewares.index { |m| m.klass == index }
|
|
69
|
+
raise "No such middleware to insert #{where}: #{index.inspect}" unless i
|
|
70
|
+
i
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def build_middleware(klass, args, block)
|
|
74
|
+
Layer.new(klass, args, block)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
data/lib/jets/naming.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# This class groups the naming in one place.
|
|
2
|
+
# Some naming is for CloudFormation
|
|
3
|
+
# Some are for the Build process
|
|
4
|
+
class Jets::Naming
|
|
5
|
+
# Mainly used by build.rb
|
|
6
|
+
class << self
|
|
7
|
+
extend Memoist
|
|
8
|
+
|
|
9
|
+
def app_template_path(app_class)
|
|
10
|
+
underscored = app_class.to_s.underscore.gsub('/','-')
|
|
11
|
+
"#{template_path_prefix}-app-#{underscored}.yml"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def shared_template_path(shared_class)
|
|
15
|
+
underscored = shared_class.to_s.underscore.gsub('/','-')
|
|
16
|
+
"#{template_path_prefix}-shared-#{underscored}.yml"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def template_path_prefix
|
|
20
|
+
"#{Jets.build_root}/templates/#{Jets.config.project_namespace}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# consider moving these methods into cfn/builder/helpers.rb or that area.
|
|
24
|
+
def parent_template_path
|
|
25
|
+
"#{template_path_prefix}.yml"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# consider moving these methods into cfn/builder/helpers.rb or that area.
|
|
29
|
+
def api_gateway_template_path
|
|
30
|
+
"#{template_path_prefix}-api-gateway.yml"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def api_deployment_template_path
|
|
34
|
+
"#{template_path_prefix}-api-deployment.yml"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def shared_resources_template_path
|
|
38
|
+
"#{template_path_prefix}-shared-resources.yml"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def parent_stack_name
|
|
42
|
+
File.basename(parent_template_path, ".yml")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def gateway_api_name
|
|
46
|
+
"#{Jets.config.project_namespace}"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "jets/overrides/lambda/marshaller"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
# Hack AwsLambda Ruby Runtime to fix .to_json issue collision with ActiveSupport.
|
|
4
|
+
# To reproduce:
|
|
5
|
+
# Create a shared resource from the docs and call sns.publish
|
|
6
|
+
#
|
|
7
|
+
# Causes an infinite loop when calling sns.publish somehow.
|
|
8
|
+
# Overriding with JSON.dump and follow up with AWS ticket.
|
|
9
|
+
module AwsLambda
|
|
10
|
+
class Marshaller
|
|
11
|
+
class << self
|
|
12
|
+
# By default, just runs #to_json on the method's response value.
|
|
13
|
+
# This can be overwritten by users who know what they are doing.
|
|
14
|
+
# The response is an array of response, content-type.
|
|
15
|
+
# If returned without a content-type, it is assumed to be application/json
|
|
16
|
+
# Finally, StringIO/IO is used to signal a response that shouldn't be
|
|
17
|
+
# formatted as JSON, and should get a different content-type header.
|
|
18
|
+
def marshall_response(method_response)
|
|
19
|
+
case method_response
|
|
20
|
+
when StringIO, IO
|
|
21
|
+
[method_response, 'application/unknown']
|
|
22
|
+
else
|
|
23
|
+
# Orignal method calls .to_json but this collides with ActiveSupport's to_json
|
|
24
|
+
# method_response.to_json # application/json is assumed
|
|
25
|
+
JSON.dump(method_response)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Override to prepend stage name when on AWS.
|
|
2
|
+
module Jets::AssetTagHelper
|
|
3
|
+
extend Memoist
|
|
4
|
+
include Jets::CommonMethods
|
|
5
|
+
include Jets::AwsServices
|
|
6
|
+
|
|
7
|
+
def javascript_include_tag(*sources, **options)
|
|
8
|
+
sources = sources.map { |s| s3_public_url(s, :javascripts) }
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def stylesheet_link_tag(*sources, **options)
|
|
13
|
+
sources = sources.map { |s| s3_public_url(s, :stylesheets) }
|
|
14
|
+
super
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Locally:
|
|
18
|
+
#
|
|
19
|
+
# image_tag("jets.png") => /images/jets.png
|
|
20
|
+
# image_tag("/images/jets.png") => /images/jets.png
|
|
21
|
+
#
|
|
22
|
+
# Remotely:
|
|
23
|
+
#
|
|
24
|
+
# image_tag("jets.png") => https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1kih4n2te0n66/jets/public/images/jets.png
|
|
25
|
+
def image_tag(source, options = {})
|
|
26
|
+
source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
|
|
27
|
+
|
|
28
|
+
# mimic original behavior to get /images in source
|
|
29
|
+
source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
|
|
30
|
+
if on_aws? && !source.starts_with?('http')
|
|
31
|
+
source = "#{s3_public}#{source}"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
super
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def asset_path(source, options = {})
|
|
38
|
+
source = source.to_s # convert to String because passing a posts.photo object to results in failure to resolve the immage to a URL since we haven't defined polymorphic_url yet
|
|
39
|
+
# mimic original behavior to get /images in source
|
|
40
|
+
source = "/images/#{source}" unless source.starts_with?('/') || source.starts_with?('http')
|
|
41
|
+
|
|
42
|
+
# Examples to help understand:
|
|
43
|
+
#
|
|
44
|
+
# puts "AssetTagHelper#asset_path source #{source}"
|
|
45
|
+
# puts "AssetTagHelper#asset_path asset_folder?(source) #{asset_folder?(source).inspect}"
|
|
46
|
+
# AssetTagHelper#asset_path source /packs/images/myimage-e5f675d1ba26865fd65e919beb5bb86b.png
|
|
47
|
+
# AssetTagHelper#asset_path asset_folder?(source) "images"
|
|
48
|
+
#
|
|
49
|
+
if on_aws? && asset_folder?(source) && !source.starts_with?('http')
|
|
50
|
+
source = "#{s3_public}#{source}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
super
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Serves favicon out of s3 when on API gateway.
|
|
57
|
+
#
|
|
58
|
+
# Useful helper for API Gateway since serving binary data like images without
|
|
59
|
+
# an Accept header doesnt work well. You can changed Media Types to '*/*'
|
|
60
|
+
# but then that messes up form data.
|
|
61
|
+
def favicon_path(path='favicon.ico')
|
|
62
|
+
on_aws? ? "#{s3_public}/#{path}" : "/#{path}"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
# Whatever is configured in Jets.config.assets.folders
|
|
67
|
+
# Example: packs, images, assets
|
|
68
|
+
def asset_folder?(url)
|
|
69
|
+
Jets.config.assets.folders.detect do |folder|
|
|
70
|
+
url.include?(folder)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# User can use:
|
|
75
|
+
# javascript_include_tag "assets/test"
|
|
76
|
+
#
|
|
77
|
+
# Rails automatically adds "javscript" in front, to become:
|
|
78
|
+
#
|
|
79
|
+
# /javascripts/assets/test
|
|
80
|
+
#
|
|
81
|
+
# We want to add the API Gateway stage name in front for this:
|
|
82
|
+
#
|
|
83
|
+
# /stag/javascript/asset/test
|
|
84
|
+
#
|
|
85
|
+
# But adding it in front results in this:
|
|
86
|
+
#
|
|
87
|
+
# /javascript/stag/asset/test
|
|
88
|
+
#
|
|
89
|
+
# If there's a / in front then rails will not add the "javascript":
|
|
90
|
+
# So we can add the javascript ourselves and then add the stag with a
|
|
91
|
+
# / in front.
|
|
92
|
+
def s3_public_url(url, asset_type)
|
|
93
|
+
unless url.starts_with?('/') or url.starts_with?('http')
|
|
94
|
+
url = "/#{asset_type}/#{url}" # /javascript/asset/test
|
|
95
|
+
end
|
|
96
|
+
add_s3_public(url)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Example:
|
|
100
|
+
# Url: /packs/application-e7654c50abd78161b641.js
|
|
101
|
+
# Returns: https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1jg5o076egkk4/jets/public/packs/application-e7654c50abd78161b641.js
|
|
102
|
+
def add_s3_public(url)
|
|
103
|
+
return url unless on_aws?
|
|
104
|
+
"#{s3_public}#{url}"
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def s3_public
|
|
108
|
+
# s3_base_url.txt is created as part of the build process
|
|
109
|
+
s3_base_url = IO.read("#{Jets.root}/config/s3_base_url.txt").strip
|
|
110
|
+
"#{s3_base_url}/public"
|
|
111
|
+
end
|
|
112
|
+
memoize :s3_public
|
|
113
|
+
end
|
|
114
|
+
ActionView::Helpers.send(:include, Jets::AssetTagHelper)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Jets::CommonMethods
|
|
2
|
+
extend Memoist
|
|
3
|
+
# Add API Gateway Stage Name
|
|
4
|
+
def add_stage_name(url)
|
|
5
|
+
return url unless add_stage?(url)
|
|
6
|
+
|
|
7
|
+
stage_name = Jets::Resource::ApiGateway::Deployment.stage_name
|
|
8
|
+
"/#{stage_name}#{url}"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def add_stage?(url)
|
|
12
|
+
request.host.include?("amazonaws.com") && url.starts_with?('/')
|
|
13
|
+
end
|
|
14
|
+
memoize :add_stage?
|
|
15
|
+
|
|
16
|
+
def on_aws?
|
|
17
|
+
!request.headers['HTTP_X_AMZN_TRACE_ID'].nil?
|
|
18
|
+
end
|
|
19
|
+
memoize :on_aws?
|
|
20
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Jets::RenderingHelper
|
|
2
|
+
# ensure that we always add the controller view name. So when rendering
|
|
3
|
+
# a partial:
|
|
4
|
+
# <%= render "mypartial" %>
|
|
5
|
+
# gets turned into:
|
|
6
|
+
# <%= render "articles/mypartial" %>
|
|
7
|
+
def render(options = {}, locals = {}, &block)
|
|
8
|
+
if options.is_a?(String) && !options.include?('/')
|
|
9
|
+
folder = _get_containing_folder(caller[0])
|
|
10
|
+
partial_name = options # happens to be the partial name
|
|
11
|
+
partial_name = "#{folder}/#{partial_name}"
|
|
12
|
+
options = partial_name
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
super(options, locals, &block)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Ugly, going back up the caller stack to find out what view path
|
|
19
|
+
# we are in
|
|
20
|
+
def _get_containing_folder(caller_line)
|
|
21
|
+
text = caller_line.split(':').first
|
|
22
|
+
# .../fixtures/apps/demo/app/views/posts/index.html.erb
|
|
23
|
+
text.split('/')[-2] # posts
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
ActionView::Helpers.send(:include, Jets::RenderingHelper)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require "action_view"
|
|
2
|
+
|
|
3
|
+
# hackety hack
|
|
4
|
+
module Jets::UrlHelper
|
|
5
|
+
include Jets::CommonMethods
|
|
6
|
+
|
|
7
|
+
# Basic implementation of url_for to allow use helpers without routes existence
|
|
8
|
+
def url_for(options = nil) # :nodoc:
|
|
9
|
+
url = case options
|
|
10
|
+
when String
|
|
11
|
+
options
|
|
12
|
+
when :back
|
|
13
|
+
_back_url
|
|
14
|
+
# TODO: hook this up to Jets implmentation of config/routes.rb
|
|
15
|
+
# when ActiveRecord::Base
|
|
16
|
+
# record = options
|
|
17
|
+
# record.id
|
|
18
|
+
else
|
|
19
|
+
raise ArgumentError, "Please provided a String to link_to as the the second argument. The Jets link_to helper takes as the second argument."
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
add_stage_name(url)
|
|
23
|
+
end
|
|
24
|
+
end # UrlHelper
|
|
25
|
+
ActionView::Helpers.send(:include, Jets::UrlHelper)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
module Jets
|
|
2
|
+
class PolyFun
|
|
3
|
+
autoload :LambdaExecutor, 'jets/poly_fun/lambda_executor' # main class delegates to other classes
|
|
4
|
+
|
|
5
|
+
autoload :BaseExecutor, 'jets/poly_fun/base_executor'
|
|
6
|
+
autoload :PythonExecutor, 'jets/poly_fun/python_executor'
|
|
7
|
+
autoload :NodeExecutor, 'jets/poly_fun/node_executor'
|
|
8
|
+
|
|
9
|
+
autoload :PythonError, 'jets/poly_fun/python_error'
|
|
10
|
+
autoload :NodeError, 'jets/poly_fun/node_error'
|
|
11
|
+
|
|
12
|
+
extend Memoist
|
|
13
|
+
|
|
14
|
+
def initialize(app_class, app_meth)
|
|
15
|
+
@app_class = app_class # already a Constant, IE: PostController
|
|
16
|
+
@app_meth = app_meth.to_sym
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def run(event, context={})
|
|
20
|
+
check_private_method!
|
|
21
|
+
|
|
22
|
+
if task.lang == :ruby
|
|
23
|
+
# controller = PostsController.new(event, content)
|
|
24
|
+
# resp = controller.edit
|
|
25
|
+
run_ruby_code(event, context)
|
|
26
|
+
else
|
|
27
|
+
executor = LambdaExecutor.new(task)
|
|
28
|
+
resp = executor.run(event, context)
|
|
29
|
+
if resp["errorMessage"]
|
|
30
|
+
raise_error(resp)
|
|
31
|
+
end
|
|
32
|
+
resp
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def run_ruby_code(event, context)
|
|
37
|
+
@app_class.process(event, context, @app_meth)
|
|
38
|
+
rescue Exception => e
|
|
39
|
+
Jets.on_exception(e)
|
|
40
|
+
raise(e)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def raise_error(resp)
|
|
44
|
+
backtrace = resp["stackTrace"] + caller
|
|
45
|
+
backtrace = backtrace.map { |l| l.sub(/^\s+/,'') }
|
|
46
|
+
# Adjust the paths from the tmp path to the app path to improve user debugging
|
|
47
|
+
# experience. Example:
|
|
48
|
+
# From:
|
|
49
|
+
# File "/tmp/jets/lite/executor/20180917-16777-43a9e48/app/controllers/jets/public_controller/python/show.py", line 32
|
|
50
|
+
# To:
|
|
51
|
+
# File "app/controllers/jets/public_controller/python/show.py", line 32 backtrace =
|
|
52
|
+
backtrace = backtrace.map do |l|
|
|
53
|
+
if l.include?(Jets.build_root) && !l.include?("lambda_executor.")
|
|
54
|
+
l.sub(/\/tmp\/jets.*executor\/\d{8}-+.*?\//, '')
|
|
55
|
+
else
|
|
56
|
+
l
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# IE: Jets::PolyFun::PythonError
|
|
61
|
+
error_class = "Jets::PolyFun::#{task.lang.to_s.classify}Error".constantize
|
|
62
|
+
raise error_class.new(resp["errorMessage"], backtrace)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def task
|
|
66
|
+
task = @app_class.all_public_tasks[@app_meth]
|
|
67
|
+
# Provider user a better error message to user than a nil failure.
|
|
68
|
+
unless task
|
|
69
|
+
raise "Unable to find #{@app_class}##{@app_meth}"
|
|
70
|
+
end
|
|
71
|
+
task
|
|
72
|
+
end
|
|
73
|
+
memoize :task
|
|
74
|
+
|
|
75
|
+
def check_private_method!
|
|
76
|
+
private_detected = @app_class.all_private_tasks.keys.include?(@app_meth)
|
|
77
|
+
return unless private_detected # Ok to continue
|
|
78
|
+
|
|
79
|
+
raise "The #{@app_class}##{@app_meth} is a private method. Unable to call it unless it is public"
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|