shark-on-lambda 1.0.0.rc3 → 2.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -3
  3. data/.rubocop.yml +4 -0
  4. data/README.md +70 -17
  5. data/changelog.md +19 -1
  6. data/doc/upgrade-from-0.6.x-to-1.x.md +122 -0
  7. data/lib/shark-on-lambda.rb +9 -0
  8. data/lib/shark_on_lambda.rb +14 -54
  9. data/lib/shark_on_lambda/api_gateway_handler.rb +3 -55
  10. data/lib/shark_on_lambda/application.rb +73 -5
  11. data/lib/shark_on_lambda/base_controller.rb +29 -9
  12. data/lib/shark_on_lambda/cacheable.rb +21 -0
  13. data/lib/shark_on_lambda/configuration.rb +1 -65
  14. data/lib/shark_on_lambda/inferrers/serializer_inferrer.rb +10 -7
  15. data/lib/shark_on_lambda/jsonapi_renderer.rb +16 -10
  16. data/lib/shark_on_lambda/middleware/base.rb +2 -4
  17. data/lib/shark_on_lambda/middleware/honeybadger.rb +45 -0
  18. data/lib/shark_on_lambda/middleware/jsonapi_rescuer.rb +21 -1
  19. data/lib/shark_on_lambda/middleware/lambda_logger.rb +8 -16
  20. data/lib/shark_on_lambda/rake_tasks.rb +16 -0
  21. data/lib/shark_on_lambda/request.rb +0 -3
  22. data/lib/shark_on_lambda/rspec/env_builder.rb +72 -31
  23. data/lib/shark_on_lambda/rspec/helpers.rb +5 -87
  24. data/lib/shark_on_lambda/rspec/request_helpers.rb +63 -0
  25. data/lib/shark_on_lambda/rspec/{jsonapi_helpers.rb → response_helpers.rb} +4 -10
  26. data/lib/shark_on_lambda/version.rb +1 -1
  27. data/shark-on-lambda.gemspec +7 -5
  28. metadata +33 -38
  29. data/gems.locked +0 -142
  30. data/lib/shark_on_lambda/concerns/resettable_singleton.rb +0 -18
  31. data/lib/shark_on_lambda/concerns/yaml_config_loader.rb +0 -28
  32. data/lib/shark_on_lambda/dispatcher.rb +0 -26
  33. data/lib/shark_on_lambda/inferrers/name_inferrer.rb +0 -66
  34. data/lib/shark_on_lambda/jsonapi_controller.rb +0 -29
  35. data/lib/shark_on_lambda/middleware/rescuer.rb +0 -38
  36. data/lib/shark_on_lambda/query.rb +0 -67
  37. data/lib/shark_on_lambda/rack_adapters/api_gateway.rb +0 -128
  38. data/lib/shark_on_lambda/secrets.rb +0 -43
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SharkOnLambda
4
- VERSION = '1.0.0.rc3'
4
+ VERSION = '2.0.0.rc2'
5
5
  end
@@ -30,18 +30,20 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ['lib']
32
32
 
33
- spec.add_dependency 'actionpack'
34
- spec.add_dependency 'activesupport'
35
- spec.add_dependency 'jsonapi-rb'
33
+ spec.required_ruby_version = '>= 2.5'
34
+
35
+ spec.add_dependency 'actionpack', '~> 6.0.0'
36
+ spec.add_dependency 'activesupport', '~> 6.0.0'
37
+ spec.add_dependency 'jsonapi-rb', '~> 0.5.0'
36
38
  spec.add_dependency 'rack', '>= 2.0.8', '< 3'
37
- spec.add_dependency 'zeitwerk', '~> 2.2'
39
+ spec.add_dependency 'rack-on-lambda', '~> 1.0'
40
+ spec.add_dependency 'zeitwerk', '~> 2.3'
38
41
 
39
42
  # TODO: Do we really need `activemodel`?
40
43
  # Or can we get away with mocking out ActiveModel::Errors?
41
44
  spec.add_development_dependency 'activemodel'
42
45
  spec.add_development_dependency 'bundler'
43
46
  spec.add_development_dependency 'factory_bot'
44
- spec.add_development_dependency 'fasterer'
45
47
  spec.add_development_dependency 'pry'
46
48
  spec.add_development_dependency 'pry-byebug'
47
49
  spec.add_development_dependency 'rake'
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shark-on-lambda
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc3
4
+ version: 2.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huy Dinh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-03 00:00:00.000000000 Z
11
+ date: 2020-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 6.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 6.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 6.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 6.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: jsonapi-rb
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.5.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.5.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rack
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -73,35 +73,35 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '3'
75
75
  - !ruby/object:Gem::Dependency
76
- name: zeitwerk
76
+ name: rack-on-lambda
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '2.2'
81
+ version: '1.0'
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '2.2'
88
+ version: '1.0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: activemodel
90
+ name: zeitwerk
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">="
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
95
+ version: '2.3'
96
+ type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - ">="
100
+ - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0'
102
+ version: '2.3'
103
103
  - !ruby/object:Gem::Dependency
104
- name: bundler
104
+ name: activemodel
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ">="
@@ -115,7 +115,7 @@ dependencies:
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  - !ruby/object:Gem::Dependency
118
- name: factory_bot
118
+ name: bundler
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - ">="
@@ -129,7 +129,7 @@ dependencies:
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  - !ruby/object:Gem::Dependency
132
- name: fasterer
132
+ name: factory_bot
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - ">="
@@ -260,36 +260,31 @@ files:
260
260
  - bin/console
261
261
  - bin/setup
262
262
  - changelog.md
263
- - gems.locked
263
+ - doc/upgrade-from-0.6.x-to-1.x.md
264
264
  - gems.rb
265
265
  - lib/shark-on-lambda.rb
266
266
  - lib/shark_on_lambda.rb
267
267
  - lib/shark_on_lambda/api_gateway_handler.rb
268
268
  - lib/shark_on_lambda/application.rb
269
269
  - lib/shark_on_lambda/base_controller.rb
270
- - lib/shark_on_lambda/concerns/resettable_singleton.rb
271
- - lib/shark_on_lambda/concerns/yaml_config_loader.rb
270
+ - lib/shark_on_lambda/cacheable.rb
272
271
  - lib/shark_on_lambda/configuration.rb
273
- - lib/shark_on_lambda/dispatcher.rb
274
272
  - lib/shark_on_lambda/errors/base.rb
275
273
  - lib/shark_on_lambda/errors/base_serializer.rb
276
- - lib/shark_on_lambda/inferrers/name_inferrer.rb
277
274
  - lib/shark_on_lambda/inferrers/serializer_inferrer.rb
278
- - lib/shark_on_lambda/jsonapi_controller.rb
279
275
  - lib/shark_on_lambda/jsonapi_parameters.rb
280
276
  - lib/shark_on_lambda/jsonapi_renderer.rb
281
277
  - lib/shark_on_lambda/middleware/base.rb
278
+ - lib/shark_on_lambda/middleware/honeybadger.rb
282
279
  - lib/shark_on_lambda/middleware/jsonapi_rescuer.rb
283
280
  - lib/shark_on_lambda/middleware/lambda_logger.rb
284
- - lib/shark_on_lambda/middleware/rescuer.rb
285
- - lib/shark_on_lambda/query.rb
286
- - lib/shark_on_lambda/rack_adapters/api_gateway.rb
281
+ - lib/shark_on_lambda/rake_tasks.rb
287
282
  - lib/shark_on_lambda/request.rb
288
283
  - lib/shark_on_lambda/response.rb
289
284
  - lib/shark_on_lambda/rspec/env_builder.rb
290
285
  - lib/shark_on_lambda/rspec/helpers.rb
291
- - lib/shark_on_lambda/rspec/jsonapi_helpers.rb
292
- - lib/shark_on_lambda/secrets.rb
286
+ - lib/shark_on_lambda/rspec/request_helpers.rb
287
+ - lib/shark_on_lambda/rspec/response_helpers.rb
293
288
  - lib/shark_on_lambda/version.rb
294
289
  - shark-on-lambda.gemspec
295
290
  homepage: https://github.com/Skudo/shark-on-lambda
@@ -304,7 +299,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
304
299
  requirements:
305
300
  - - ">="
306
301
  - !ruby/object:Gem::Version
307
- version: '0'
302
+ version: '2.5'
308
303
  required_rubygems_version: !ruby/object:Gem::Requirement
309
304
  requirements:
310
305
  - - ">"
@@ -1,142 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- shark-on-lambda (1.0.0.rc3)
5
- actionpack
6
- activesupport
7
- jsonapi-rb
8
- rack (>= 2.0.8, < 3)
9
- zeitwerk (~> 2.2)
10
-
11
- GEM
12
- remote: https://rubygems.org/
13
- specs:
14
- actionpack (6.0.0)
15
- actionview (= 6.0.0)
16
- activesupport (= 6.0.0)
17
- rack (~> 2.0)
18
- rack-test (>= 0.6.3)
19
- rails-dom-testing (~> 2.0)
20
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
21
- actionview (6.0.0)
22
- activesupport (= 6.0.0)
23
- builder (~> 3.1)
24
- erubi (~> 1.4)
25
- rails-dom-testing (~> 2.0)
26
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
27
- activemodel (6.0.0)
28
- activesupport (= 6.0.0)
29
- activesupport (6.0.0)
30
- concurrent-ruby (~> 1.0, >= 1.0.2)
31
- i18n (>= 0.7, < 2)
32
- minitest (~> 5.1)
33
- tzinfo (~> 1.1)
34
- zeitwerk (~> 2.1, >= 2.1.8)
35
- ast (2.4.0)
36
- builder (3.2.4)
37
- byebug (11.0.1)
38
- coderay (1.1.2)
39
- colorize (0.8.1)
40
- concurrent-ruby (1.1.5)
41
- crass (1.0.6)
42
- diff-lcs (1.3)
43
- docile (1.3.2)
44
- erubi (1.9.0)
45
- factory_bot (5.1.1)
46
- activesupport (>= 4.2.0)
47
- fasterer (0.8.2)
48
- colorize (~> 0.7)
49
- ruby_parser (>= 3.14.1)
50
- i18n (1.7.0)
51
- concurrent-ruby (~> 1.0)
52
- jaro_winkler (1.5.4)
53
- json (2.2.0)
54
- jsonapi-deserializable (0.2.0)
55
- jsonapi-rb (0.5.0)
56
- jsonapi-deserializable (~> 0.2.0)
57
- jsonapi-serializable (~> 0.3.0)
58
- jsonapi-renderer (0.2.2)
59
- jsonapi-serializable (0.3.1)
60
- jsonapi-renderer (~> 0.2.0)
61
- loofah (2.4.0)
62
- crass (~> 1.0.2)
63
- nokogiri (>= 1.5.9)
64
- method_source (0.9.2)
65
- mini_portile2 (2.4.0)
66
- minitest (5.13.0)
67
- nokogiri (1.10.8)
68
- mini_portile2 (~> 2.4.0)
69
- parallel (1.18.0)
70
- parser (2.6.5.0)
71
- ast (~> 2.4.0)
72
- pry (0.12.2)
73
- coderay (~> 1.1.0)
74
- method_source (~> 0.9.0)
75
- pry-byebug (3.7.0)
76
- byebug (~> 11.0)
77
- pry (~> 0.10)
78
- rack (2.2.2)
79
- rack-test (1.1.0)
80
- rack (>= 1.0, < 3)
81
- rails-dom-testing (2.0.3)
82
- activesupport (>= 4.2.0)
83
- nokogiri (>= 1.6)
84
- rails-html-sanitizer (1.3.0)
85
- loofah (~> 2.3)
86
- rainbow (3.0.0)
87
- rake (13.0.0)
88
- rspec (3.9.0)
89
- rspec-core (~> 3.9.0)
90
- rspec-expectations (~> 3.9.0)
91
- rspec-mocks (~> 3.9.0)
92
- rspec-core (3.9.0)
93
- rspec-support (~> 3.9.0)
94
- rspec-expectations (3.9.0)
95
- diff-lcs (>= 1.2.0, < 2.0)
96
- rspec-support (~> 3.9.0)
97
- rspec-mocks (3.9.0)
98
- diff-lcs (>= 1.2.0, < 2.0)
99
- rspec-support (~> 3.9.0)
100
- rspec-support (3.9.0)
101
- rubocop (0.76.0)
102
- jaro_winkler (~> 1.5.1)
103
- parallel (~> 1.10)
104
- parser (>= 2.6)
105
- rainbow (>= 2.2.2, < 4.0)
106
- ruby-progressbar (~> 1.7)
107
- unicode-display_width (>= 1.4.0, < 1.7)
108
- ruby-progressbar (1.10.1)
109
- ruby_parser (3.14.2)
110
- sexp_processor (~> 4.9)
111
- sexp_processor (4.14.1)
112
- simplecov (0.17.1)
113
- docile (~> 1.1)
114
- json (>= 1.8, < 3)
115
- simplecov-html (~> 0.10.0)
116
- simplecov-html (0.10.2)
117
- thread_safe (0.3.6)
118
- tzinfo (1.2.5)
119
- thread_safe (~> 0.1)
120
- unicode-display_width (1.6.0)
121
- yard (0.9.20)
122
- zeitwerk (2.2.1)
123
-
124
- PLATFORMS
125
- ruby
126
-
127
- DEPENDENCIES
128
- activemodel
129
- bundler
130
- factory_bot
131
- fasterer
132
- pry
133
- pry-byebug
134
- rake
135
- rspec
136
- rubocop
137
- shark-on-lambda!
138
- simplecov
139
- yard
140
-
141
- BUNDLED WITH
142
- 2.1.4
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SharkOnLambda
4
- module Concerns
5
- module ResettableSingleton
6
- def self.included(base)
7
- base.include(Singleton)
8
- base.extend(ClassMethods)
9
- end
10
-
11
- module ClassMethods
12
- def reset
13
- @singleton__instance__ = nil
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SharkOnLambda
4
- module Concerns
5
- module YamlConfigLoader
6
- def load_yaml_files(stage:, fallback: :default, paths:)
7
- result = HashWithIndifferentAccess.new
8
- paths.each do |path|
9
- data = load_yaml_file(stage: stage, fallback: fallback, path: path)
10
- result.deep_merge!(data)
11
- end
12
- result
13
- end
14
-
15
- protected
16
-
17
- def load_yaml_file(stage:, fallback:, path:)
18
- return {} unless File.exist?(path)
19
-
20
- data = YAML.load_file(path)
21
- return {} unless data.is_a?(Hash)
22
-
23
- data = data.with_indifferent_access
24
- data[stage] || data[fallback] || {}
25
- end
26
- end
27
- end
28
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SharkOnLambda
4
- class Dispatcher
5
- def call(env)
6
- request = Request.new(env)
7
- response = Response.new
8
-
9
- controller = controller_class(env)
10
- action = controller_action(env)
11
- controller.dispatch(action, request, response)
12
-
13
- response.prepare!
14
- end
15
-
16
- private
17
-
18
- def controller_action(env)
19
- env['shark.action']
20
- end
21
-
22
- def controller_class(env)
23
- env['shark.controller'].camelize.constantize
24
- end
25
- end
26
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SharkOnLambda
4
- module Inferrers
5
- class NameInferrer
6
- class << self
7
- def from_controller_name(class_name)
8
- from_name(:controller, class_name)
9
- end
10
-
11
- def from_deserializer_name(class_name)
12
- from_name(:deserializer, class_name)
13
- end
14
-
15
- def from_handler_name(class_name)
16
- from_name(:handler, class_name)
17
- end
18
-
19
- def from_model_name(class_name)
20
- from_name(:model, class_name)
21
- end
22
-
23
- def from_serializer_name(class_name)
24
- from_name(:serializer, class_name)
25
- end
26
-
27
- protected
28
-
29
- def from_name(type, class_name)
30
- base = class_name.underscore
31
- base = case type
32
- when :controller, :deserializer, :handler, :serializer
33
- base.sub(/_#{type}\z/, '')
34
- when :model
35
- base
36
- end
37
- new(base)
38
- end
39
- end
40
-
41
- def initialize(base)
42
- @base = base
43
- end
44
-
45
- def controller
46
- "#{@base}_controller".camelize
47
- end
48
-
49
- def deserializer
50
- "#{@base}_deserializer".camelize
51
- end
52
-
53
- def handler
54
- "#{@base}_handler".camelize
55
- end
56
-
57
- def model
58
- @base.camelize
59
- end
60
-
61
- def serializer
62
- "#{@base}_serializer".camelize
63
- end
64
- end
65
- end
66
- end