jets 3.2.1 → 4.0.0

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