jets 2.3.19 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
  }