jets 2.3.17 → 3.0.3

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/.python-version +1 -1
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +44 -0
  6. data/LICENSE.txt +1 -1
  7. data/README.md +5 -3
  8. data/backers.md +2 -0
  9. data/jets.gemspec +12 -10
  10. data/lib/jets.rb +9 -13
  11. data/lib/jets/application.rb +9 -2
  12. data/lib/jets/application/defaults.rb +17 -15
  13. data/lib/jets/autoloaders.rb +15 -1
  14. data/lib/jets/booter.rb +3 -3
  15. data/lib/jets/builders/code_builder.rb +16 -15
  16. data/lib/jets/builders/gem_replacer.rb +15 -4
  17. data/lib/jets/builders/lambda_layer.rb +4 -5
  18. data/lib/jets/builders/ruby_packager.rb +40 -20
  19. data/lib/jets/builders/tidy.rb +1 -2
  20. data/lib/jets/bundle.rb +6 -0
  21. data/lib/jets/cfn/builders/api_gateway_builder.rb +61 -7
  22. data/lib/jets/cfn/ship.rb +2 -1
  23. data/lib/jets/cfn/upload.rb +18 -2
  24. data/lib/jets/cli.rb +6 -1
  25. data/lib/jets/commands/base.rb +1 -1
  26. data/lib/jets/commands/call.rb +14 -1
  27. data/lib/jets/commands/clean.rb +1 -1
  28. data/lib/jets/commands/clean/base.rb +1 -1
  29. data/lib/jets/commands/configure.rb +51 -0
  30. data/lib/jets/commands/delete.rb +2 -2
  31. data/lib/jets/commands/gems.rb +2 -10
  32. data/lib/jets/commands/help/call.md +8 -0
  33. data/lib/jets/commands/help/gems/check.md +3 -5
  34. data/lib/jets/commands/main.rb +9 -1
  35. data/lib/jets/commands/new.rb +9 -1
  36. data/lib/jets/commands/sequence.rb +6 -0
  37. data/lib/jets/commands/templates/skeleton/Gemfile.tt +1 -1
  38. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +1 -1
  39. data/lib/jets/commands/templates/skeleton/public/index.html.tt +1 -1
  40. data/lib/jets/commands/url.rb +1 -0
  41. data/lib/jets/controller/base.rb +14 -4
  42. data/lib/jets/controller/middleware/main.rb +2 -1
  43. data/lib/jets/controller/params.rb +26 -4
  44. data/lib/jets/controller/rack/env.rb +18 -1
  45. data/lib/jets/controller/rendering.rb +5 -2
  46. data/lib/jets/controller/rendering/rack_renderer.rb +7 -1
  47. data/lib/jets/core.rb +12 -4
  48. data/lib/jets/dotenv/ssm.rb +18 -4
  49. data/lib/jets/generator.rb +2 -3
  50. data/lib/jets/internal/app/controllers/jets/public_controller.rb +2 -2
  51. data/lib/jets/internal/app/functions/jets/base_path.rb +10 -149
  52. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +81 -0
  53. data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +14 -24
  54. data/lib/jets/resource/api_gateway/base_path/function.rb +6 -1
  55. data/lib/jets/resource/api_gateway/deployment.rb +2 -0
  56. data/lib/jets/resource/api_gateway/method.rb +1 -1
  57. data/lib/jets/resource/api_gateway/resource.rb +1 -1
  58. data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +34 -0
  59. data/lib/jets/resource/api_gateway/rest_api/logical_id/message.rb +49 -0
  60. data/lib/jets/resource/child_stack/api_deployment.rb +2 -0
  61. data/lib/jets/resource/lambda/function.rb +1 -1
  62. data/lib/jets/router/dsl.rb +7 -1
  63. data/lib/jets/router/method_creator/code.rb +1 -1
  64. data/lib/jets/router/scope.rb +7 -3
  65. data/lib/jets/spec_helpers/controllers.rb +10 -3
  66. data/lib/jets/spec_helpers/controllers/request.rb +12 -5
  67. data/lib/jets/stack/main/dsl/lambda.rb +1 -1
  68. data/lib/jets/turbo.rb +1 -0
  69. data/lib/jets/version.rb +1 -1
  70. metadata +63 -56
  71. data/vendor/cfn-status/CHANGELOG.md +0 -14
  72. data/vendor/cfn-status/Gemfile +0 -4
  73. data/vendor/cfn-status/LICENSE.txt +0 -21
  74. data/vendor/cfn-status/README.md +0 -56
  75. data/vendor/cfn-status/Rakefile +0 -6
  76. data/vendor/cfn-status/bin/console +0 -14
  77. data/vendor/cfn-status/bin/setup +0 -8
  78. data/vendor/cfn-status/cfn-status.gemspec +0 -30
  79. data/vendor/cfn-status/lib/cfn-status.rb +0 -1
  80. data/vendor/cfn-status/lib/cfn_status.rb +0 -245
  81. data/vendor/cfn-status/lib/cfn_status/aws_service.rb +0 -51
  82. data/vendor/cfn-status/lib/cfn_status/version.rb +0 -3
  83. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json +0 -1103
  84. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json +0 -1104
  85. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json +0 -1103
  86. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json +0 -1103
  87. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json +0 -1104
  88. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json +0 -1103
  89. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
  90. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
  91. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
  92. data/vendor/cfn-status/spec/lib/cfn_status_spec.rb +0 -153
  93. data/vendor/cfn-status/spec/spec_helper.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 570f01c2fe2cff82700a1c8110b340a6897381d61fa5248f118b785fe399cefe
4
- data.tar.gz: 64ad72c3d50974e7e816e5647dbcd3f5e26277144ab409b867e7f7ccc58e166e
3
+ metadata.gz: d96f517061ff84ddf9fb3499904cb915608ce720dca3782144781127d4c514c7
4
+ data.tar.gz: ed136863ef400a6aa43b82b8784c16606384144c36351adaeb85d48de42150fd
5
5
  SHA512:
6
- metadata.gz: 10c4489b8c063d2a3e94f63b9ebb0fda617a31f41bc92dcd77a32755307fef81930ba1359a3364f13baf8a3ea746234019343b7621bdf2ff27c6b86076fa473e
7
- data.tar.gz: 76bf5d77ab7f8b3064174aea1baea7eac92a787d217fb8a91c431132da9fba95ef342a6f8f145f2174c74cb6f4a914c5ba74ce8a6c06c5984528fdee0ce86c24
6
+ metadata.gz: 29d2a9608a6db8bd39e7a78fb30482121bd4bd3e17b2d92e89b28e5d502231f90f20f103e858e4719c893b41baab897d7e3904a6524cb4a67495825bc45b1ac5
7
+ data.tar.gz: 281fe5d70d2a52750f270465c0a846009e77d6115b9696ad9b8f65cb8fab897dc57f38be7301eed1c6b6f05c633e1eb831a470fa11b1f0097e9f4c550b7e0174
data/.gitmodules CHANGED
@@ -1,3 +0,0 @@
1
- [submodule "vendor/cfn-status"]
2
- path = vendor/cfn-status
3
- url = https://github.com/tongueroo/cfn-status.git
data/.python-version CHANGED
@@ -1 +1 @@
1
- 3.6.6
1
+ 3.8.6
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.7
1
+ 2.7.2
data/CHANGELOG.md CHANGED
@@ -3,6 +3,50 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [3.0.3] - 2021-03-24
7
+ - [#532](https://github.com/boltops-tools/jets/pull/532) Update Copy Write Year
8
+ - [#536](https://github.com/boltops-tools/jets/pull/536) use mini_mime instead
9
+
10
+ ## [3.0.2] - 2021-01-12
11
+ - update serverlessgems gem
12
+
13
+ ## [3.0.1] - 2021-01-12
14
+ - [#524](https://github.com/boltops-tools/jets/pull/524) fix native gem detection
15
+
16
+ ## [3.0.0]
17
+ * #328 i18n docs
18
+ * #391 Deploy Option: Auto Replace API Gateway
19
+ * #444 Ruby 2.7 Support
20
+ * #453 Update to Bootstrap4 official release
21
+ * #454 When the controller name is singular, the behavior of searching for the View file is different from expected.
22
+ * #457 Breaking change: Harden IAM policy and do allow list all buckets by default. Breaking change.
23
+ * #479 Create request completion log method
24
+ * #487 API Gateway Base Path
25
+ * #488 Add retry_limit and read_timeout options
26
+ * #491 Fix queryStringParameters handling for nested value in spec_helper
27
+ * #492 Add params keyword case with get method for spec helpers test
28
+ * #494 Update ruby_packager.rb
29
+ * #496 Add unicode test for spec_helpers test
30
+ * #499 default_iam_policy does not correctly include VPC related actions on resource creation
31
+ * Improve autoloader: Shouldnt have to to call `bundle exec` in front of jets anymore.
32
+ * `jets configure` command
33
+ * Big improvements to docs site, add search
34
+ * Use serverlessgems API
35
+ * Breaking: use do not pluralize controller names for views folder
36
+ * Shorten SSM secrets notation support
37
+ * Remove deprecations and warnings: bundle install, generate scaffold, webpacker, yarn license, etc
38
+ * Also setting the `config.iam_policy` appends to the default policy now.
39
+ * Upgrade to Rails 6.1 components
40
+ * Increase cloudformation output limit to 200
41
+ * Replace `--sure` with `-y` option
42
+ * Fix params helper in views
43
+ * Webpacker upgrade
44
+
45
+ ## [2.3.18]
46
+ - #514 Allow to define route that contains dot
47
+ - #515 set content type on upload by using extension so cloudfront will compress when serving
48
+ - #517 support nested query params in tests
49
+
6
50
  ## [2.3.17]
7
51
  - #472 Docs: Update cors-support.md
8
52
  - #475 Docs: Update activerecord.md to include db:create step
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2019 Tung Nguyen
1
+ Copyright (c) 2021 Tung Nguyen
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -5,13 +5,15 @@
5
5
  Ruby and Lambda splat out a baby and that child's name is [Jets](http://rubyonjets.com/).
6
6
 
7
7
  ![Build Status](https://codebuild.us-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiZ08vK2hjOHczQUVoUDhSYnBNNUU4T0gxQWJuOTlLaXpwVGQ1NjJ3NnVDY1dSdFVXQ3d2VXVSQzRFcU1qd1JPMndFZlByRktIcTUrZm5GWlM5dHpjM1ZrPSIsIml2UGFyYW1ldGVyU3BlYyI6Imluc1Qrd25GanhUdHlidjUiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=master)
8
- [![CircleCI](https://circleci.com/gh/tongueroo/jets.svg?style=svg)](https://circleci.com/gh/tongueroo/jets)
8
+ [![CircleCI](https://circleci.com/gh/boltops-tools/jets.svg?style=svg)](https://circleci.com/gh/boltops-tools/jets)
9
9
  [![Gem Version](https://badge.fury.io/rb/jets.svg)](https://badge.fury.io/rb/jets)
10
10
  [![Support](https://img.shields.io/badge/Support-Help-blue.svg)](http://rubyonjets.com/support/)
11
- [![Gitter Chat](https://badges.gitter.im/tongueroo/jets.png)](https://gitter.im/tongueroo/jets)
11
+ [![Gitter Chat](https://badges.gitter.im/boltops-tools/jets.png)](https://gitter.im/boltops-tools/jets)
12
12
 
13
13
  [![BoltOps Badge](https://img.boltops.com/boltops/badges/boltops-badge.png)](https://www.boltops.com)
14
14
 
15
+ Please **watch/star** this repo to help grow and support the project.
16
+
15
17
  **Upgrading**: If you are upgrading Jets, please check on the [Upgrading Notes](http://rubyonjets.com/docs/extras/upgrading/).
16
18
 
17
19
  ## What is Ruby on Jets?
@@ -189,7 +191,7 @@ For more documentation, check out the official docs: [Ruby on Jets](http://rubyo
189
191
  * [Official AWS Ruby Support for Jets](https://blog.boltops.com/2018/12/12/official-aws-ruby-support-for-jets-serverless-framework)
190
192
  * [Build an API with Jets](https://blog.boltops.com/2019/01/13/build-an-api-service-with-jets-ruby-serverless-framework)
191
193
  * [Serverless Ruby Cron Jobs Tutorial: Route53 Backup](https://blog.boltops.com/2019/01/03/serverless-ruby-cron-jobs-with-jets-route53-backup)
192
- * [Serverless Slack Commands: Fun with AWS Image Recognition](https://blog.boltops.com/2019/01/14/serverless-slack-commands-with-ruby)
194
+ * [Serverless Slack Commands: Fun with AWS Image Recognition](https://blog.boltops.com/2021/02/02/serverless-slack-commands-with-ruby)
193
195
  * [Jets Afterburner: Rails Support](https://blog.boltops.com/2018/12/21/jets-afterburner-serverless-rails-on-aws-lambda-in-5-minutes)
194
196
  * [Jets Mega Mode: Jets and Rails](https://blog.boltops.com/2018/11/03/jets-mega-mode-run-rails-on-aws-lambda)
195
197
  * [Toronto Serverless Presentation](https://blog.boltops.com/2018/09/25/toronto-serverless-presentation-jets-framework-on-aws-lambda)
data/backers.md CHANGED
@@ -15,4 +15,6 @@ Funds donated via Patreon go directly to support Tung Nguyen's full-time work on
15
15
  - Nate Clark
16
16
  - Hirokatsu Endo
17
17
  - Michael Choi
18
+ - Phan Lam
19
+ - Theron Welch
18
20
  <!--10 end-->
data/jets.gemspec CHANGED
@@ -27,11 +27,11 @@ Gem::Specification.new do |spec|
27
27
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_dependency "actionmailer", "~> 6.0.0"
31
- spec.add_dependency "actionpack", "~> 6.0.0"
32
- spec.add_dependency "actionview", "~> 6.0.0"
33
- spec.add_dependency "activerecord", "~> 6.0.0"
34
- spec.add_dependency "activesupport", "~> 6.0.0"
30
+ spec.add_dependency "actionmailer", "~> 6.1.0"
31
+ spec.add_dependency "actionpack", "~> 6.1.0"
32
+ spec.add_dependency "actionview", "~> 6.1.0"
33
+ spec.add_dependency "activerecord", "~> 6.1.0"
34
+ spec.add_dependency "activesupport", "~> 6.1.0"
35
35
  spec.add_dependency "aws-mfa-secure", "~> 0.4.0"
36
36
  spec.add_dependency "aws-sdk-apigateway"
37
37
  spec.add_dependency "aws-sdk-cloudformation"
@@ -43,27 +43,29 @@ Gem::Specification.new do |spec|
43
43
  spec.add_dependency "aws-sdk-sns"
44
44
  spec.add_dependency "aws-sdk-sqs"
45
45
  spec.add_dependency "aws-sdk-ssm"
46
+ spec.add_dependency "cfn-status"
46
47
  spec.add_dependency "cfn_camelizer", "~> 0.4.6"
47
- spec.add_dependency "cfnresponse"
48
+ spec.add_dependency "cfn_response"
48
49
  spec.add_dependency "dotenv"
49
50
  spec.add_dependency "gems" # jets-gems dependency
50
51
  spec.add_dependency "hashie"
51
- spec.add_dependency "jets-gems"
52
52
  spec.add_dependency "jets-html-sanitizer"
53
53
  spec.add_dependency "kramdown"
54
54
  spec.add_dependency "memoist"
55
- spec.add_dependency "mimemagic"
55
+ spec.add_dependency "mini_mime"
56
56
  spec.add_dependency "rack"
57
- spec.add_dependency "railties", "~> 6.0.0" # for ActiveRecord database_tasks.rb
57
+ spec.add_dependency "railties", "~> 6.1.0" # for ActiveRecord database_tasks.rb
58
58
  spec.add_dependency "rainbow"
59
59
  spec.add_dependency "recursive-open-struct"
60
+ spec.add_dependency "serverlessgems", "~> 0.1.2"
60
61
  spec.add_dependency "shotgun"
61
62
  spec.add_dependency "text-table"
62
63
  spec.add_dependency "thor"
63
64
  spec.add_dependency "zeitwerk"
64
65
 
65
- spec.add_development_dependency "byebug"
66
66
  spec.add_development_dependency "bundler"
67
+ spec.add_development_dependency "byebug"
67
68
  spec.add_development_dependency "rake"
69
+ spec.add_development_dependency "render_me_pretty"
68
70
  spec.add_development_dependency "rspec"
69
71
  end
data/lib/jets.rb CHANGED
@@ -1,6 +1,13 @@
1
1
  $stdout.sync = true unless ENV["JETS_STDOUT_SYNC"] == "0"
2
2
 
3
3
  $:.unshift(File.expand_path("../", __FILE__))
4
+
5
+ require "jets/core_ext/bundler"
6
+ require "jets/autoloaders"
7
+ Jets::Autoloaders.log! if ENV["JETS_AUTOLOAD_LOG"]
8
+ Jets::Autoloaders.once.setup # must be called before cli.setup
9
+ Jets::Autoloaders.cli.setup
10
+
4
11
  require "active_support"
5
12
  require "active_support/concern"
6
13
  require "active_support/core_ext"
@@ -8,24 +15,13 @@ require "active_support/dependencies"
8
15
  require "active_support/ordered_hash"
9
16
  require "active_support/ordered_options"
10
17
  require "cfn_camelizer"
18
+ require "cfn_status"
11
19
  require "fileutils"
12
- require "jets/gems"
13
20
  require "memoist"
14
21
  require "rainbow/ext/string"
15
-
16
- gem_root = File.dirname(__dir__)
17
- $:.unshift("#{gem_root}/lib")
18
- $:.unshift("#{gem_root}/vendor/cfn-status/lib")
19
- require "cfn_status"
20
-
21
- require "jets/core_ext/bundler"
22
-
23
- require "jets/autoloaders"
24
- Jets::Autoloaders.log! if ENV["JETS_AUTOLOAD_LOG"]
25
- Jets::Autoloaders.once.setup
22
+ require "serverlessgems"
26
23
 
27
24
  module Jets
28
- RUBY_VERSION = "2.5.3"
29
25
  MAX_FUNCTION_NAME_SIZE = 64
30
26
 
31
27
  class Error < StandardError; end
@@ -22,6 +22,7 @@ class Jets::Application
22
22
  load_environments_config
23
23
  load_db_config
24
24
  set_iam_policy # relies on dependent values, must be called afterwards
25
+ set_time_zone
25
26
  normalize_env_vars!
26
27
  end
27
28
 
@@ -64,7 +65,7 @@ class Jets::Application
64
65
  return ENV['JETS_PROJECT_NAME'] if ENV['JETS_PROJECT_NAME'] # override
65
66
 
66
67
  lines = IO.readlines("#{Jets.root}/config/application.rb")
67
- project_name_line = lines.find { |l| l =~ /config\.project_name.*=/ }
68
+ project_name_line = lines.find { |l| l =~ /config\.project_name.*=/ && l !~ /^\s+#/ }
68
69
  project_name_line.gsub(/.*=/,'').strip.gsub(/["']/,'') # project_name
69
70
  end
70
71
 
@@ -175,10 +176,16 @@ class Jets::Application
175
176
  end
176
177
 
177
178
  def set_iam_policy
178
- config.iam_policy ||= self.class.default_iam_policy
179
+ config.iam_policy ||= []
180
+ config.default_iam_policy ||= self.class.default_iam_policy
181
+ config.iam_policy = config.default_iam_policy | config.iam_policy
179
182
  config.managed_policy_definitions ||= [] # default empty
180
183
  end
181
184
 
185
+ def set_time_zone
186
+ Time.zone_default = Time.find_zone!(config.time_zone)
187
+ end
188
+
182
189
  # It is pretty easy to attempt to set environment variables without
183
190
  # the correct AWS Environment.Variables path struture.
184
191
  # Auto-fix it for convenience.
@@ -10,18 +10,12 @@ class Jets::Application
10
10
  effect: "Allow",
11
11
  resource: "arn:aws:logs:#{Jets.aws.region}:#{Jets.aws.account}:log-group:/aws/lambda/#{project_namespace}-*",
12
12
  }
13
- s3_bucket = Jets.aws.s3_bucket
14
13
  s3_readonly = {
15
- action: ["s3:Get*", "s3:List*"],
14
+ action: ["s3:Get*", "s3:List*", "s3:HeadBucket"],
16
15
  effect: "Allow",
17
- resource: "arn:aws:s3:::#{s3_bucket}*",
16
+ resource: "arn:aws:s3:::#{Jets.aws.s3_bucket}*",
18
17
  }
19
- s3_bucket = {
20
- action: ["s3:ListAllMyBuckets", "s3:HeadBucket"],
21
- effect: "Allow",
22
- resource: "arn:aws:s3:::*", # scoped to all buckets
23
- }
24
- policies = [logs, s3_readonly, s3_bucket]
18
+ policies = [logs, s3_readonly]
25
19
 
26
20
  cloudformation = {
27
21
  action: ["cloudformation:DescribeStacks", "cloudformation:DescribeStackResources"],
@@ -57,6 +51,7 @@ class Jets::Application
57
51
  config.autoload_paths = [] # allows for customization
58
52
  config.ignore_paths = [] # allows for customization
59
53
  config.logger = Jets::Logger.new($stderr)
54
+ config.time_zone = "UTC"
60
55
 
61
56
  # function properties defaults
62
57
  config.function = ActiveSupport::OrderedOptions.new
@@ -73,9 +68,9 @@ class Jets::Application
73
68
  config.prewarm.rack_ratio = 5
74
69
 
75
70
  config.gems = ActiveSupport::OrderedOptions.new
76
- config.gems.sources = [
77
- Jets.default_gems_source
78
- ]
71
+ config.gems.clean = false
72
+ config.gems.disable = false
73
+ config.gems.source = "https://api.serverlessgems.com/api/v1"
79
74
 
80
75
  config.inflections = ActiveSupport::OrderedOptions.new
81
76
  config.inflections.irregular = {}
@@ -95,12 +90,13 @@ class Jets::Application
95
90
  config.session.options = {}
96
91
 
97
92
  config.api = ActiveSupport::OrderedOptions.new
93
+ config.api.api_key_required = false # Turn off API key required
98
94
  config.api.authorization_type = "NONE"
99
- config.api.cors_authorization_type = nil # nil so ApiGateway::Cors#cors_authorization_type handles
95
+ config.api.auto_replace = nil # https://github.com/boltops-tools/jets/issues/391
100
96
  config.api.binary_media_types = ['multipart/form-data']
101
- config.api.endpoint_type = 'EDGE' # PRIVATE, EDGE, REGIONAL
97
+ config.api.cors_authorization_type = nil # nil so ApiGateway::Cors#cors_authorization_type handles
102
98
  config.api.endpoint_policy = nil # required when endpoint_type is EDGE
103
- config.api.api_key_required = false # Turn off API key required
99
+ config.api.endpoint_type = 'EDGE' # PRIVATE, EDGE, REGIONAL
104
100
 
105
101
  config.api.authorizers = ActiveSupport::OrderedOptions.new
106
102
  config.api.authorizers.default_token_source = "Auth" # method.request.header.Auth
@@ -151,6 +147,9 @@ class Jets::Application
151
147
  config.controllers.default_protect_from_forgery = nil
152
148
  config.controllers.filtered_parameters = []
153
149
 
150
+ config.app = ActiveSupport::OrderedOptions.new
151
+ config.app.domain = nil
152
+
154
153
  config.deploy = ActiveSupport::OrderedOptions.new
155
154
  config.deploy.stagger = ActiveSupport::OrderedOptions.new
156
155
  config.deploy.stagger.enabled = false
@@ -158,6 +157,9 @@ class Jets::Application
158
157
 
159
158
  config.hot_reload = Jets.env.development?
160
159
 
160
+ config.ruby = ActiveSupport::OrderedOptions.new
161
+ config.ruby.check = true
162
+
161
163
  config
162
164
  end
163
165
 
@@ -3,6 +3,8 @@ Jets::Bundle.setup
3
3
  require "zeitwerk"
4
4
 
5
5
  module Jets
6
+ module Commands ; end
7
+
6
8
  module Autoloaders
7
9
  class OnceInflector < Zeitwerk::Inflector
8
10
  def camelize(basename, _abspath)
@@ -21,6 +23,7 @@ module Jets
21
23
  def log!
22
24
  main.log!
23
25
  once.log!
26
+ cli.log!
24
27
  end
25
28
 
26
29
  def main
@@ -56,6 +59,17 @@ module Jets
56
59
  end
57
60
  memoize :once
58
61
 
62
+ def cli
63
+ Zeitwerk::Loader.new.tap do |loader|
64
+ loader.tag = "jets.cli"
65
+ loader.inflector = OnceInflector.new
66
+
67
+ loader.push_dir("#{__dir__}/commands", namespace: Jets::Commands)
68
+ loader.ignore("#{__dir__}/commands/templates*")
69
+ end
70
+ end
71
+ memoize :cli
72
+
59
73
  private
60
74
  def internal_app_paths
61
75
  %w[
@@ -84,7 +98,7 @@ module Jets
84
98
  builders/rackup_wrappers
85
99
  builders/reconfigure_rails
86
100
  builders/templates
87
- commands/templates
101
+ commands
88
102
  controller/middleware/webpacker_setup.rb
89
103
  core_ext
90
104
  internal
data/lib/jets/booter.rb CHANGED
@@ -83,7 +83,7 @@ class Jets::Booter
83
83
  # using ActiveRecord rake tasks outside of Rails.
84
84
  ActiveRecord::Tasks::DatabaseTasks.database_configuration = db_configs
85
85
 
86
- if db_configs[Jets.env].blank?
86
+ if db_configs.configs_for(env_name: Jets.env).blank?
87
87
  abort("ERROR: config/database.yml exists but no environment section configured for #{Jets.env}")
88
88
  end
89
89
  ActiveRecord::Base.configurations = db_configs
@@ -96,9 +96,9 @@ class Jets::Booter
96
96
  # the same.
97
97
  def connect_db
98
98
  primary_hash_config = ActiveRecord::Base.configurations.configs_for(env_name: Jets.env).find { |hash_config|
99
- hash_config.spec_name == "primary"
99
+ hash_config.name == "primary"
100
100
  }
101
- primary_config = primary_hash_config.config # config is a normal Ruby Hash
101
+ primary_config = primary_hash_config.configuration_hash # configuration_hash is a normal Ruby Hash
102
102
  ActiveRecord::Base.establish_connection(primary_config)
103
103
  end
104
104
 
@@ -373,28 +373,29 @@ module Jets::Builders
373
373
  end
374
374
  end
375
375
 
376
- def check_ruby_version
377
- unless ruby_version_supported?
378
- puts "You are using Ruby version #{RUBY_VERSION} which is not supported by Jets."
379
- ruby_variant = Jets::RUBY_VERSION.split('.')[0..1].join('.') + '.x'
380
- abort("Jets uses Ruby #{Jets::RUBY_VERSION}. You should use a variant of Ruby #{ruby_variant}".color(:red))
381
- end
382
- end
383
-
384
376
  def copy_ruby_version_file
385
377
  ruby_version_path = Jets.root.join(".ruby-version")
386
378
  return unless File.exists?(ruby_version_path)
387
379
  FileUtils.cp_r(ruby_version_path, build_area)
388
380
  end
389
381
 
390
- def ruby_version_supported?
391
- pattern = /(\d+)\.(\d+)\.(\d+)/
392
- md = RUBY_VERSION.match(pattern)
393
- ruby = {major: md[1], minor: md[2]}
394
- md = Jets::RUBY_VERSION.match(pattern)
395
- jets = {major: md[1], minor: md[2]}
382
+ SUPPORTED_RUBY_VERSIONS = %w[2.5 2.7]
383
+ def check_ruby_version
384
+ return unless ENV['JETS_RUBY_CHECK'] == '0' || Jets.config.ruby.check == false
385
+ return if ruby_version_supported?
386
+ puts <<~EOL.color(:red)
387
+ You are using Ruby version #{RUBY_VERSION} which is not supported by Jets.
388
+ Please use one of the Jets supported ruby versions: #{SUPPORTED_RUBY_VERSIONS.join(' ')}
389
+ If you would like to skip this check you can set: JETS_RUBY_CHECK=0
390
+ EOL
391
+ exit 1
392
+ end
396
393
 
397
- ruby[:major] == jets[:major] && ruby[:minor] == jets[:minor]
394
+ def ruby_version_supported?
395
+ md = RUBY_VERSION.match(/(\d+)\.(\d+)\.\d+/)
396
+ major, minor = md[1], md[2]
397
+ detected_ruby = [major, minor].join('.')
398
+ SUPPORTED_RUBY_VERSIONS.include?(detected_ruby)
398
399
  end
399
400
 
400
401
  # Group all the path settings together here
@@ -17,19 +17,30 @@ module Jets::Builders
17
17
  end
18
18
 
19
19
  # found gems will only have gems that were found
20
- found_gems.each do |gem_name, source|
21
- options = @options.merge(source_url: source)
22
- gem_extractor = Jets::Gems::Extract::Gem.new(gem_name, options)
20
+ found_gems.each do |gem_name|
21
+ gem_extractor = Jets::Gems::Extract::Gem.new(gem_name, @options)
23
22
  gem_extractor.run
23
+ rename_gem(gem_name)
24
24
  end
25
25
 
26
26
  tidy
27
27
  end
28
28
 
29
+ def rename_gem(gem_name)
30
+ ruby_folder = "#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}"
31
+ gems_folder = "#{ruby_folder}/gems"
32
+ expr = "#{gems_folder}/#{gem_name}-x*-{darwin,linux}"
33
+ src = Dir.glob(expr).first
34
+ return unless src
35
+
36
+ dest = src.sub("-darwin", "-linux")
37
+ FileUtils.mv(src, dest) unless File.exist?(dest) # looks like rename_gem actually runs twice
38
+ end
39
+
29
40
  def sh(command)
30
41
  puts "=> #{command}".color(:green)
31
42
  success = system(command)
32
- abort("Command Failed") unless success
43
+ abort("Command Failed: #{command}") unless success
33
44
  success
34
45
  end
35
46