jets 3.2.1 → 4.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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/jets.gemspec +1 -1
  4. data/lib/jets/application/defaults.rb +2 -0
  5. data/lib/jets/application.rb +6 -7
  6. data/lib/jets/aws_info.rb +2 -2
  7. data/lib/jets/booter.rb +48 -1
  8. data/lib/jets/builders/code_builder.rb +2 -21
  9. data/lib/jets/builders/gem_replacer.rb +2 -7
  10. data/lib/jets/builders/ruby_packager.rb +37 -4
  11. data/lib/jets/cfn/builders/api_deployment_builder.rb +1 -1
  12. data/lib/jets/cfn/builders/api_gateway_builder.rb +25 -22
  13. data/lib/jets/cfn/builders/api_resources_builder.rb +1 -1
  14. data/lib/jets/cfn/builders/authorizer_builder.rb +1 -1
  15. data/lib/jets/cfn/builders/base_child_builder.rb +20 -1
  16. data/lib/jets/cfn/builders/interface.rb +19 -0
  17. data/lib/jets/cfn/builders/parent_builder.rb +3 -3
  18. data/lib/jets/cfn/builders/shared_builder.rb +1 -1
  19. data/lib/jets/cfn/built_template.rb +1 -1
  20. data/lib/jets/cfn/ship.rb +2 -2
  21. data/lib/jets/cfn/status.rb +1 -1
  22. data/lib/jets/cfn/upload.rb +2 -2
  23. data/lib/jets/cli.rb +10 -4
  24. data/lib/jets/commands/call/base_guesser.rb +1 -1
  25. data/lib/jets/commands/clean/log.rb +3 -3
  26. data/lib/jets/commands/configure.rb +1 -1
  27. data/lib/jets/commands/delete.rb +1 -1
  28. data/lib/jets/commands/deploy.rb +2 -2
  29. data/lib/jets/commands/stack_info.rb +1 -1
  30. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +1 -1
  31. data/lib/jets/commands/url.rb +1 -1
  32. data/lib/jets/core.rb +14 -2
  33. data/lib/jets/core_ext/file.rb +9 -0
  34. data/lib/jets/dotenv.rb +2 -2
  35. data/lib/jets/erb.rb +1 -1
  36. data/lib/jets/inflections.rb +1 -1
  37. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +1 -1
  38. data/lib/jets/internal/app/functions/jets/base_path.rb +93 -3
  39. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +65 -6
  40. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +6 -2
  41. data/lib/jets/lambda/dsl.rb +6 -1
  42. data/lib/jets/{naming.rb → names.rb} +3 -3
  43. data/lib/jets/preheat.rb +9 -6
  44. data/lib/jets/resource/api_gateway/base_path/role.rb +1 -1
  45. data/lib/jets/resource/api_gateway/deployment.rb +2 -2
  46. data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +1 -1
  47. data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +1 -1
  48. data/lib/jets/resource/api_gateway/rest_api/routes/change/media_types.rb +1 -1
  49. data/lib/jets/resource/api_gateway/rest_api/routes/change/page.rb +2 -2
  50. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +1 -1
  51. data/lib/jets/resource/api_gateway/rest_api.rb +1 -1
  52. data/lib/jets/resource/child_stack/api_deployment.rb +1 -1
  53. data/lib/jets/resource/child_stack/api_resource/page.rb +1 -1
  54. data/lib/jets/resource/child_stack/api_resource.rb +1 -1
  55. data/lib/jets/resource/child_stack/app_class.rb +1 -1
  56. data/lib/jets/resource/child_stack/shared.rb +1 -1
  57. data/lib/jets/resource/iam/base_role_definition.rb +0 -5
  58. data/lib/jets/resource/iam/policy.rb +31 -0
  59. data/lib/jets/resource/lambda/function/environment.rb +2 -1
  60. data/lib/jets/resource/lambda/function.rb +3 -3
  61. data/lib/jets/router/route.rb +16 -4
  62. data/lib/jets/tmp_loader.rb +1 -1
  63. data/lib/jets/turbo/database_yaml.rb +1 -1
  64. data/lib/jets/util/yamler.rb +16 -0
  65. data/lib/jets/version.rb +1 -1
  66. data/lib/jets.rb +1 -0
  67. metadata +7 -9
  68. data/.python-version +0 -1
  69. data/.ruby-version +0 -1
@@ -136,9 +136,9 @@ module Jets::Resource::Lambda
136
136
  end
137
137
 
138
138
  def get_layers(runtime)
139
- return nil unless runtime =~ /^ruby/
139
+ return nil unless runtime =~ /^ruby/ || runtime =~ /^provided/
140
140
  return Jets.config.lambda.layers if Jets.config.gems.disable
141
-
141
+
142
142
  ["!Ref GemLayer"] + Jets.config.lambda.layers
143
143
  end
144
144
 
@@ -208,7 +208,7 @@ module Jets::Resource::Lambda
208
208
  def get_descripton(props)
209
209
  props[:description] || default_description
210
210
  end
211
-
211
+
212
212
  def default_description
213
213
  # Example values:
214
214
  # @app_class: Admin/PagesController
@@ -16,6 +16,22 @@ class Jets::Router
16
16
  @path = compute_path
17
17
  @to = compute_to
18
18
  @as = compute_as
19
+ # Pretty tricky. The @options[:mount_class] is a class that is mounted.
20
+ # For Grape apps, calling ActiveSupport to_json on a Grape class causes an infinite loop.
21
+ # Can reproduce with `GrapeApp.to_json`
22
+ # There's some type of collision between Grape and ActiveSupport to_json.
23
+ # Coerce mount_class option into a string so that when the route is serialized to JSON
24
+ # it is a string it won't cause an infinite loop. This allows the apigw routes to be
25
+ # saved to s3 and loaded back up at the end of a deploy.
26
+ # Related PR: smarter apigw routes paging calculation #635
27
+ # https://github.com/boltops-tools/jets/pull/635
28
+ # Debugging notes: https://gist.github.com/tongueroo/c9baa7e98d5ad68bbdd770fde4651963
29
+ @options[:mount_class] = @options[:mount_class].to_s if @options[:mount_class]
30
+ end
31
+
32
+ # Constantize back to the original class
33
+ def mount_class
34
+ @options[:mount_class].constantize
19
35
  end
20
36
 
21
37
  def compute_path
@@ -187,10 +203,6 @@ class Jets::Router
187
203
  end.to_h
188
204
  end
189
205
 
190
- def mount_class
191
- @options[:mount_class]
192
- end
193
-
194
206
  def to_h
195
207
  JSON.load(to_json)
196
208
  end
@@ -9,7 +9,7 @@ module Jets
9
9
  def initialize(yaml_path=nil)
10
10
  yaml_path ||= "#{Jets.root}/handlers/data.yml"
11
11
  return unless File.exist?(yaml_path)
12
- @data = YAML.load_file(yaml_path)
12
+ @data = Jets::Util::Yamler.load_file(yaml_path)
13
13
  @s3_bucket = @data['s3_bucket']
14
14
  @rack_zip = @data['rack_zip']
15
15
  end
@@ -5,7 +5,7 @@ class Jets::Turbo
5
5
  return unless File.exist?(current_yaml)
6
6
 
7
7
  vars = {}
8
- current_database = YAML.load_file(current_yaml)
8
+ current_database = Jets::Util::Yamler.load_file(current_yaml)
9
9
  database_names = infer_database_name(current_database)
10
10
  vars.merge!(database_names)
11
11
  vars['adapter'] = current_database['development']['adapter']
@@ -0,0 +1,16 @@
1
+ # Named Yamler to make it clear it's not the YAML class.
2
+ class Jets::Util
3
+ class Yamler
4
+ class << self
5
+ def load(text)
6
+ options = RUBY_VERSION =~ /^3/ ? {aliases: true} : {} # Ruby 3.0.0 deprecates aliases: true
7
+ YAML.load(text, **options)
8
+ end
9
+
10
+ def load_file(path)
11
+ options = RUBY_VERSION =~ /^3/ ? {aliases: true} : {} # Ruby 3.0.0 deprecates aliases: true
12
+ YAML.load_file(path, **options)
13
+ end
14
+ end
15
+ end
16
+ end
data/lib/jets/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "3.2.1"
2
+ VERSION = "4.0.0"
3
3
  end
data/lib/jets.rb CHANGED
@@ -3,6 +3,7 @@ $stdout.sync = true unless ENV["JETS_STDOUT_SYNC"] == "0"
3
3
  $:.unshift(File.expand_path("../", __FILE__))
4
4
 
5
5
  require "jets/core_ext/bundler"
6
+ require "jets/core_ext/file"
6
7
  require "jets/autoloaders"
7
8
  Jets::Autoloaders.log! if ENV["JETS_AUTOLOAD_LOG"]
8
9
  Jets::Autoloaders.once.setup # must be called before cli.setup
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-03 00:00:00.000000000 Z
11
+ date: 2023-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -599,9 +599,7 @@ files:
599
599
  - ".github/PULL_REQUEST_TEMPLATE.md"
600
600
  - ".gitignore"
601
601
  - ".gitmodules"
602
- - ".python-version"
603
602
  - ".rspec"
604
- - ".ruby-version"
605
603
  - CHANGELOG.md
606
604
  - CONDUCT.md
607
605
  - CONTRIBUTING.md
@@ -814,6 +812,7 @@ files:
814
812
  - lib/jets/controller/stage.rb
815
813
  - lib/jets/core.rb
816
814
  - lib/jets/core_ext/bundler.rb
815
+ - lib/jets/core_ext/file.rb
817
816
  - lib/jets/core_ext/kernel.rb
818
817
  - lib/jets/db.rb
819
818
  - lib/jets/dotenv.rb
@@ -882,7 +881,7 @@ files:
882
881
  - lib/jets/middleware/default_stack.rb
883
882
  - lib/jets/middleware/layer.rb
884
883
  - lib/jets/middleware/stack.rb
885
- - lib/jets/naming.rb
884
+ - lib/jets/names.rb
886
885
  - lib/jets/overrides/lambda.rb
887
886
  - lib/jets/overrides/lambda/marshaller.rb
888
887
  - lib/jets/overrides/rails.rb
@@ -947,6 +946,7 @@ files:
947
946
  - lib/jets/resource/iam/class_role.rb
948
947
  - lib/jets/resource/iam/function_role.rb
949
948
  - lib/jets/resource/iam/managed_policy.rb
949
+ - lib/jets/resource/iam/policy.rb
950
950
  - lib/jets/resource/iam/policy_document.rb
951
951
  - lib/jets/resource/iot/topic_rule.rb
952
952
  - lib/jets/resource/lambda/event_source_mapping.rb
@@ -1038,6 +1038,7 @@ files:
1038
1038
  - lib/jets/turbo/rails.rb
1039
1039
  - lib/jets/turbo/templates/config/database.yml
1040
1040
  - lib/jets/util.rb
1041
+ - lib/jets/util/yamler.rb
1041
1042
  - lib/jets/version.rb
1042
1043
  - readme/prerelease.md
1043
1044
  - readme/testing.md
@@ -1094,16 +1095,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
1094
1095
  - - ">="
1095
1096
  - !ruby/object:Gem::Version
1096
1097
  version: 2.5.0
1097
- - - "<"
1098
- - !ruby/object:Gem::Version
1099
- version: 3.0.0
1100
1098
  required_rubygems_version: !ruby/object:Gem::Requirement
1101
1099
  requirements:
1102
1100
  - - ">="
1103
1101
  - !ruby/object:Gem::Version
1104
1102
  version: '0'
1105
1103
  requirements: []
1106
- rubygems_version: 3.4.6
1104
+ rubygems_version: 3.4.10
1107
1105
  signing_key:
1108
1106
  specification_version: 4
1109
1107
  summary: Ruby Serverless Framework
data/.python-version DELETED
@@ -1 +0,0 @@
1
- 3.8.6
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.7.7