jets 2.3.19 → 3.0.0

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 (88) 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 +28 -2
  6. data/README.md +2 -2
  7. data/backers.md +1 -0
  8. data/jets.gemspec +11 -10
  9. data/lib/jets.rb +9 -13
  10. data/lib/jets/application.rb +9 -2
  11. data/lib/jets/application/defaults.rb +17 -15
  12. data/lib/jets/autoloaders.rb +15 -1
  13. data/lib/jets/booter.rb +3 -3
  14. data/lib/jets/builders/code_builder.rb +16 -15
  15. data/lib/jets/builders/gem_replacer.rb +3 -16
  16. data/lib/jets/builders/lambda_layer.rb +4 -5
  17. data/lib/jets/builders/ruby_packager.rb +18 -42
  18. data/lib/jets/builders/tidy.rb +1 -2
  19. data/lib/jets/bundle.rb +6 -0
  20. data/lib/jets/cfn/builders/api_gateway_builder.rb +61 -7
  21. data/lib/jets/cfn/ship.rb +2 -1
  22. data/lib/jets/cli.rb +6 -1
  23. data/lib/jets/commands/base.rb +1 -1
  24. data/lib/jets/commands/call.rb +14 -1
  25. data/lib/jets/commands/clean.rb +1 -1
  26. data/lib/jets/commands/clean/base.rb +1 -1
  27. data/lib/jets/commands/configure.rb +51 -0
  28. data/lib/jets/commands/delete.rb +2 -2
  29. data/lib/jets/commands/gems.rb +2 -10
  30. data/lib/jets/commands/help/call.md +8 -0
  31. data/lib/jets/commands/help/gems/check.md +3 -5
  32. data/lib/jets/commands/main.rb +9 -1
  33. data/lib/jets/commands/new.rb +9 -1
  34. data/lib/jets/commands/sequence.rb +6 -0
  35. data/lib/jets/commands/templates/skeleton/Gemfile.tt +1 -1
  36. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +1 -1
  37. data/lib/jets/commands/templates/skeleton/public/index.html.tt +1 -1
  38. data/lib/jets/commands/url.rb +1 -0
  39. data/lib/jets/controller/base.rb +14 -4
  40. data/lib/jets/controller/middleware/main.rb +2 -1
  41. data/lib/jets/controller/params.rb +26 -4
  42. data/lib/jets/controller/rack/env.rb +18 -1
  43. data/lib/jets/controller/rendering.rb +5 -2
  44. data/lib/jets/controller/rendering/rack_renderer.rb +7 -1
  45. data/lib/jets/core.rb +12 -4
  46. data/lib/jets/dotenv/ssm.rb +18 -4
  47. data/lib/jets/generator.rb +2 -3
  48. data/lib/jets/internal/app/functions/jets/base_path.rb +10 -149
  49. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +81 -0
  50. data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +14 -24
  51. data/lib/jets/resource/api_gateway/base_path/function.rb +6 -1
  52. data/lib/jets/resource/api_gateway/deployment.rb +2 -0
  53. data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +34 -0
  54. data/lib/jets/resource/api_gateway/rest_api/logical_id/message.rb +49 -0
  55. data/lib/jets/resource/child_stack/api_deployment.rb +2 -0
  56. data/lib/jets/resource/lambda/function.rb +1 -1
  57. data/lib/jets/router/dsl.rb +7 -1
  58. data/lib/jets/router/method_creator/code.rb +1 -1
  59. data/lib/jets/router/scope.rb +7 -3
  60. data/lib/jets/spec_helpers/controllers.rb +10 -3
  61. data/lib/jets/spec_helpers/controllers/request.rb +12 -5
  62. data/lib/jets/stack/main/dsl/lambda.rb +1 -1
  63. data/lib/jets/turbo.rb +1 -0
  64. data/lib/jets/version.rb +1 -1
  65. metadata +51 -58
  66. data/vendor/cfn-status/CHANGELOG.md +0 -14
  67. data/vendor/cfn-status/Gemfile +0 -4
  68. data/vendor/cfn-status/LICENSE.txt +0 -21
  69. data/vendor/cfn-status/README.md +0 -56
  70. data/vendor/cfn-status/Rakefile +0 -6
  71. data/vendor/cfn-status/bin/console +0 -14
  72. data/vendor/cfn-status/bin/setup +0 -8
  73. data/vendor/cfn-status/cfn-status.gemspec +0 -30
  74. data/vendor/cfn-status/lib/cfn-status.rb +0 -1
  75. data/vendor/cfn-status/lib/cfn_status.rb +0 -245
  76. data/vendor/cfn-status/lib/cfn_status/aws_service.rb +0 -51
  77. data/vendor/cfn-status/lib/cfn_status/version.rb +0 -3
  78. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json +0 -1103
  79. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json +0 -1104
  80. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json +0 -1103
  81. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json +0 -1103
  82. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json +0 -1104
  83. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json +0 -1103
  84. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
  85. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
  86. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
  87. data/vendor/cfn-status/spec/lib/cfn_status_spec.rb +0 -153
  88. 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: 67a692a8d7ee829132db3e1e89d656b5b7885c6f280185cfe7bd6c9a3b9ebc59
4
- data.tar.gz: e2e410d872acf41f19284e610043c5b39159469eb7f576b395b27c2db0ab6dde
3
+ metadata.gz: 64340de503207710a82a13ca132501a65e030dd295edf2aff5fec1499c6e4d43
4
+ data.tar.gz: 615dea597ff7fefafb59352aa3a68ef0c0b4b1338c7c9df1c36121e54c68fb7f
5
5
  SHA512:
6
- metadata.gz: 9f05d1c81c5d69b3a2921301c69a5522a8b81e3be48515e7219f8ffdb76e90e441a1a5234c1465403545b3034a4073c82a478229f02fed1506b6bafca57bb1f6
7
- data.tar.gz: 15ff2fdda4c2bc469f9cd08ebcbac4e393a29fdca7ac1980274d7ffcf9a4669b919af596e29088411a8896914a57acf7fe4f06ffcd9377fa72422eec764b36f0
6
+ metadata.gz: 208dc2bbe537c0b99bd09927185d8e75dee87a76dc1320b6755e2e53136a85c66940ff3e6f0c74d5e806d3d49b49125d351ec27d8ceb7207d17b55cb593c1cbe
7
+ data.tar.gz: 8e2f0b5ea3c84f907cc72e4eae4779da20d31d11affe6987ad55d2e92861b320104deeec00aefe5121bf5043f73b5ab2c3e5653b86297faaac00b88181651157
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,8 +3,34 @@
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
- ## [2.3.19] - 2021-01-28
7
- - #529 fix gem detection for some gems
6
+ ## [3.0.0]
7
+ * #328 i18n docs
8
+ * #391 Deploy Option: Auto Replace API Gateway
9
+ * #444 Ruby 2.7 Support
10
+ * #453 Update to Bootstrap4 official release
11
+ * #454 When the controller name is singular, the behavior of searching for the View file is different from expected.
12
+ * #457 Breaking change: Harden IAM policy and do allow list all buckets by default. Breaking change.
13
+ * #479 Create request completion log method
14
+ * #487 API Gateway Base Path
15
+ * #488 Add retry_limit and read_timeout options
16
+ * #491 Fix queryStringParameters handling for nested value in spec_helper
17
+ * #492 Add params keyword case with get method for spec helpers test
18
+ * #494 Update ruby_packager.rb
19
+ * #496 Add unicode test for spec_helpers test
20
+ * #499 default_iam_policy does not correctly include VPC related actions on resource creation
21
+ * Improve autoloader: Shouldnt have to to call `bundle exec` in front of jets anymore.
22
+ * `jets configure` command
23
+ * Big improvements to docs site, add search
24
+ * Use serverlessgems API
25
+ * Breaking: use do not pluralize controller names for views folder
26
+ * Shorten SSM secrets notation support
27
+ * Remove deprecations and warnings: bundle install, generate scaffold, webpacker, yarn license, etc
28
+ * Also setting the `config.iam_policy` appends to the default policy now.
29
+ * Upgrade to Rails 6.1 components
30
+ * Increase cloudformation output limit to 200
31
+ * Replace `--sure` with `-y` option
32
+ * Fix params helper in views
33
+ * Webpacker upgrade
8
34
 
9
35
  ## [2.3.18]
10
36
  - #514 Allow to define route that contains dot
data/README.md CHANGED
@@ -5,10 +5,10 @@
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
 
data/backers.md CHANGED
@@ -16,4 +16,5 @@ Funds donated via Patreon go directly to support Tung Nguyen's full-time work on
16
16
  - Hirokatsu Endo
17
17
  - Michael Choi
18
18
  - Phan Lam
19
+ - Theron Welch
19
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,28 +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", "~> 0.2.3"
52
52
  spec.add_dependency "jets-html-sanitizer"
53
53
  spec.add_dependency "kramdown"
54
54
  spec.add_dependency "memoist"
55
55
  spec.add_dependency "mimemagic"
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"
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
- spec.add_development_dependency "cfn-status"
70
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,31 +17,18 @@ 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
24
- rename_gem(gem_name)
25
23
  end
26
24
 
27
25
  tidy
28
26
  end
29
27
 
30
- def rename_gem(gem_name)
31
- ruby_folder = "#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}"
32
- gems_folder = "#{ruby_folder}/gems"
33
- expr = "#{gems_folder}/#{gem_name}-x*-{darwin,linux}"
34
- src = Dir.glob(expr).first
35
- return unless src
36
-
37
- dest = src.sub("-darwin", "-linux")
38
- FileUtils.mv(src, dest) unless File.exist?(dest) # looks like rename_gem actually runs twice
39
- end
40
-
41
28
  def sh(command)
42
29
  puts "=> #{command}".color(:green)
43
30
  success = system(command)
44
- abort("Command Failed") unless success
31
+ abort("Command Failed: #{command}") unless success
45
32
  success
46
33
  end
47
34
 
@@ -7,7 +7,7 @@ module Jets::Builders
7
7
  # Then replace the binary gems.
8
8
  def build
9
9
  consolidate_gems_to_opt
10
- replace_compiled_gems
10
+ replace_compiled_gems unless Jets.config.gems.disable
11
11
  end
12
12
 
13
13
  # Also restructure the folder from:
@@ -17,13 +17,13 @@ module Jets::Builders
17
17
  #
18
18
  # For Lambda Layer structure
19
19
  def consolidate_gems_to_opt
20
- src = "#{stage_area}/code/vendor/gems/ruby/2.5.0"
21
- dest = "#{stage_area}/opt/ruby/gems/2.5.0"
20
+ src = "#{stage_area}/code/vendor/gems/ruby/#{Jets.ruby_folder}"
21
+ dest = "#{stage_area}/opt/ruby/gems/#{Jets.ruby_folder}"
22
22
  rsync_and_link(src, dest)
23
23
 
24
24
  return unless Jets.rack?
25
25
 
26
- src = "#{stage_area}/rack/vendor/gems/ruby/2.5.0"
26
+ src = "#{stage_area}/rack/vendor/gems/ruby/#{Jets.ruby_folder}"
27
27
  rsync_and_link(src, dest)
28
28
  end
29
29
 
@@ -59,7 +59,6 @@ module Jets::Builders
59
59
  project_root = "#{stage_area}/opt"
60
60
  headline "Replacing compiled gems with AWS Lambda Linux compiled versions: #{project_root}"
61
61
  options = {
62
- s3: "lambdagems2",
63
62
  build_root: cache_area, # used in jets-gems
64
63
  project_root: project_root, # used in gem_replacer and jets-gems
65
64
  }