shark-on-lambda 2.0.0.rc1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -0
- data/{changelog.md → CHANGELOG.md} +7 -1
- data/lib/shark-on-lambda.rb +1 -1
- data/lib/shark_on_lambda.rb +9 -1
- data/lib/shark_on_lambda/application.rb +4 -2
- data/lib/shark_on_lambda/base_controller.rb +1 -10
- data/lib/shark_on_lambda/cacheable.rb +21 -0
- data/lib/shark_on_lambda/errors/base.rb +1 -1
- data/lib/shark_on_lambda/version.rb +1 -1
- data/shark-on-lambda.gemspec +2 -2
- metadata +16 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60c364794145282c0c04213abbf976f245f696442d827b2149e0ccaa1fe95d08
|
4
|
+
data.tar.gz: b1360ec675a7267f41ce6d2d385f2a5c5cae8cb87c93a958c79b8c326b4a635e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48d8ef1d01c5cfd04fc2c40effca3c53f29bb2b3deaecb8f240a545829425e279274e570e9ace27948a4ec738da115ed5c69cef4418e2023aa8dc99eedf240e2
|
7
|
+
data.tar.gz: ec1d9ce4bcb7b62be4f986be8763f31c3879ffc9b1eb800fe676a03df6a93f9313657696486a6a5fe993784fd8c5f601ed398d4c052b350fc02dde2d86f4624b
|
data/.rubocop.yml
CHANGED
@@ -10,10 +10,15 @@ Metrics/BlockLength:
|
|
10
10
|
Layout/LineLength:
|
11
11
|
Max: 80
|
12
12
|
|
13
|
+
Lint/EmptyClass:
|
14
|
+
Enabled: false
|
15
|
+
|
13
16
|
Naming/FileName:
|
14
17
|
Exclude:
|
15
18
|
- lib/shark-on-lambda.rb
|
16
19
|
- spec/shark-on-lambda_spec.rb
|
20
|
+
Naming/VariableNumber:
|
21
|
+
EnforcedStyle: snake_case
|
17
22
|
|
18
23
|
# TODO: Add documentation and remove the Style/Documentation exception.
|
19
24
|
Style/Documentation:
|
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
#### Unreleased
|
4
4
|
|
5
|
+
#### 2.1.0
|
6
|
+
- [Fix] `SharkOnLambda::BaseController#render` does not set content type `application/vnd.api+json`
|
7
|
+
- [Fix] `:jsonapi` Renderer sets content type `application/vnd.api+json` correctly
|
8
|
+
|
5
9
|
#### 2.0.0
|
6
10
|
- [Deprecate] Requiring `shark-on-lambda` is marked as deprecated in favour of requiring `shark_on_lambda`.
|
7
11
|
- [Break] `SharkOnLambda::Dispatcher` was removed in favour of routing via `ActionDispatch::Routing`.
|
@@ -9,6 +13,8 @@
|
|
9
13
|
- [Break] `SharkOnLambda::JsonapiController` was removed.
|
10
14
|
- [Break] Support for `path_parameters` in RSpec helpers was removed.
|
11
15
|
- [Break] Configuration files are not loaded automatically anymore.
|
16
|
+
- Added `SharkOnLambda::Cacheable`.
|
17
|
+
- Added `SharkOnLambda.cache` and `SharkOnLambda.global_cache`.
|
12
18
|
- Added support for routing.
|
13
19
|
- Use `rack-on-lambda` as an adapter for events from the (REST API flavoured) API Gateway.
|
14
20
|
|
@@ -22,7 +28,7 @@
|
|
22
28
|
- [Break] Remove the `ApiGateway` namespace, move all items from that namespace up by one level.
|
23
29
|
- [Break] Remove build rake tasks.
|
24
30
|
- [Added `SharkOnLambda::LambdaLogger`](https://www.pivotaltracker.com/story/show/169573932)
|
25
|
-
- Added support for Rack-compatible middleware.
|
31
|
+
- Added support for Rack-compatible middleware.
|
26
32
|
- `SharkOnLambda::BaseController` now acts more like `ActionController::BaseController`.
|
27
33
|
- Support `ActiveModel::Errors` nested validation errors.
|
28
34
|
- Added `SharkOnLambda::RSpec::Helpers` and `SharkOnLambda::RSpec::JsonapiHelpers`.
|
data/lib/shark-on-lambda.rb
CHANGED
@@ -4,7 +4,7 @@ require 'active_support/core_ext/string'
|
|
4
4
|
require 'active_support/deprecation'
|
5
5
|
|
6
6
|
deprecation_message = <<-MESSAGE.squish
|
7
|
-
Requiring `shark-on-lambda` is deprecated and will be removed in version 3.
|
7
|
+
Requiring `shark-on-lambda` is deprecated and will be removed in version 3.
|
8
8
|
Please require `shark_on_lambda` instead.
|
9
9
|
MESSAGE
|
10
10
|
ActiveSupport::Deprecation.warn(deprecation_message, caller(2))
|
data/lib/shark_on_lambda.rb
CHANGED
@@ -38,7 +38,7 @@ module SharkOnLambda
|
|
38
38
|
class << self
|
39
39
|
extend Forwardable
|
40
40
|
|
41
|
-
attr_writer :application, :env, :logger
|
41
|
+
attr_writer :application, :cache, :env, :global_cache, :logger
|
42
42
|
|
43
43
|
def_instance_delegators :application, :initialize!, :root
|
44
44
|
|
@@ -50,10 +50,18 @@ module SharkOnLambda
|
|
50
50
|
application.config
|
51
51
|
end
|
52
52
|
|
53
|
+
def cache
|
54
|
+
@cache ||= ActiveSupport::Cache::NullStore.new
|
55
|
+
end
|
56
|
+
|
53
57
|
def env
|
54
58
|
@env || ENV['STAGE'].presence || 'development'
|
55
59
|
end
|
56
60
|
|
61
|
+
def global_cache
|
62
|
+
@global_cache ||= ActiveSupport::Cache::NullStore.new
|
63
|
+
end
|
64
|
+
|
57
65
|
def logger
|
58
66
|
@logger ||= Logger.new($stdout)
|
59
67
|
end
|
@@ -37,7 +37,7 @@ module SharkOnLambda
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def config_for(name, env: SharkOnLambda.env)
|
40
|
-
config = load_config_file(name, env: env)
|
40
|
+
config = load_config_file(name, env: env, fail_with_exception: true)
|
41
41
|
config.deep_merge(load_config_file("#{name}.local", env: env))
|
42
42
|
end
|
43
43
|
|
@@ -53,10 +53,12 @@ module SharkOnLambda
|
|
53
53
|
@routes = ActionDispatch::Routing::RouteSet.new_with_config(router_config)
|
54
54
|
end
|
55
55
|
|
56
|
-
def load_config_file(name, env:)
|
56
|
+
def load_config_file(name, env:, fail_with_exception: false)
|
57
57
|
filename = "#{name}.yml"
|
58
58
|
config_file = SharkOnLambda.root.join('config', filename)
|
59
59
|
unless config_file.exist?
|
60
|
+
return {} unless fail_with_exception
|
61
|
+
|
60
62
|
raise ArgumentError,
|
61
63
|
"Could not load configuration. No such file - #{config_file}"
|
62
64
|
end
|
@@ -22,7 +22,7 @@ module SharkOnLambda
|
|
22
22
|
end
|
23
23
|
|
24
24
|
ActionController::Renderers.add :jsonapi do |object, options|
|
25
|
-
response.
|
25
|
+
response.content_type = 'application/vnd.api+json; charset=utf-8'
|
26
26
|
return { data: {} }.to_json if object.nil?
|
27
27
|
|
28
28
|
jsonapi_renderer = JsonapiRenderer.new(object)
|
@@ -52,15 +52,6 @@ module SharkOnLambda
|
|
52
52
|
self.response_body = no_body? ? nil : { data: {} }.to_json
|
53
53
|
end
|
54
54
|
|
55
|
-
def render(object, options = {})
|
56
|
-
options.merge!(
|
57
|
-
jsonapi: object,
|
58
|
-
content_type: 'application/vnd.api+json'
|
59
|
-
)
|
60
|
-
|
61
|
-
super(options)
|
62
|
-
end
|
63
|
-
|
64
55
|
private
|
65
56
|
|
66
57
|
def no_body?
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SharkOnLambda
|
4
|
+
module Cacheable
|
5
|
+
delegate :cache, :global_cache, to: SharkOnLambda
|
6
|
+
|
7
|
+
def cache_duration(item)
|
8
|
+
cache_durations[item] || cache_durations[:default]
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def cache_durations
|
14
|
+
return @cache_durations if defined?(@cache_durations)
|
15
|
+
|
16
|
+
settings = SharkOnLambda.application.config_for(:settings) || {}
|
17
|
+
@cache_durations = settings.fetch(:cache_durations, {})
|
18
|
+
@cache_durations = @cache_durations.with_indifferent_access
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -36,7 +36,7 @@ module SharkOnLambda
|
|
36
36
|
end
|
37
37
|
class_name_parts = message.to_s.split(/\s+/)
|
38
38
|
class_name_parts.map! { |word| word.gsub(/[^a-z]/i, '').capitalize }
|
39
|
-
class_name = class_name_parts.join
|
39
|
+
class_name = class_name_parts.join
|
40
40
|
const_set(class_name, error_class)
|
41
41
|
|
42
42
|
[status_code, error_class]
|
data/shark-on-lambda.gemspec
CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency 'activesupport', '~> 6.0.0'
|
37
37
|
spec.add_dependency 'jsonapi-rb', '~> 0.5.0'
|
38
38
|
spec.add_dependency 'rack', '>= 2.0.8', '< 3'
|
39
|
-
spec.add_dependency 'rack-on-lambda', '~> 1.0'
|
39
|
+
spec.add_dependency 'rack-on-lambda', '~> 1.0', '>= 1.0.1'
|
40
40
|
spec.add_dependency 'zeitwerk', '~> 2.3'
|
41
41
|
|
42
42
|
# TODO: Do we really need `activemodel`?
|
@@ -48,7 +48,7 @@ Gem::Specification.new do |spec|
|
|
48
48
|
spec.add_development_dependency 'pry-byebug'
|
49
49
|
spec.add_development_dependency 'rake'
|
50
50
|
spec.add_development_dependency 'rspec'
|
51
|
-
spec.add_development_dependency 'rubocop'
|
51
|
+
spec.add_development_dependency 'rubocop', '1.11.0'
|
52
52
|
spec.add_development_dependency 'simplecov'
|
53
53
|
spec.add_development_dependency 'yard'
|
54
54
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shark-on-lambda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Huy Dinh
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -79,6 +79,9 @@ dependencies:
|
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '1.0'
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 1.0.1
|
82
85
|
type: :runtime
|
83
86
|
prerelease: false
|
84
87
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -86,6 +89,9 @@ dependencies:
|
|
86
89
|
- - "~>"
|
87
90
|
- !ruby/object:Gem::Version
|
88
91
|
version: '1.0'
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 1.0.1
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
96
|
name: zeitwerk
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,16 +208,16 @@ dependencies:
|
|
202
208
|
name: rubocop
|
203
209
|
requirement: !ruby/object:Gem::Requirement
|
204
210
|
requirements:
|
205
|
-
- -
|
211
|
+
- - '='
|
206
212
|
- !ruby/object:Gem::Version
|
207
|
-
version:
|
213
|
+
version: 1.11.0
|
208
214
|
type: :development
|
209
215
|
prerelease: false
|
210
216
|
version_requirements: !ruby/object:Gem::Requirement
|
211
217
|
requirements:
|
212
|
-
- -
|
218
|
+
- - '='
|
213
219
|
- !ruby/object:Gem::Version
|
214
|
-
version:
|
220
|
+
version: 1.11.0
|
215
221
|
- !ruby/object:Gem::Dependency
|
216
222
|
name: simplecov
|
217
223
|
requirement: !ruby/object:Gem::Requirement
|
@@ -253,13 +259,13 @@ files:
|
|
253
259
|
- ".gitignore"
|
254
260
|
- ".rspec"
|
255
261
|
- ".rubocop.yml"
|
262
|
+
- CHANGELOG.md
|
256
263
|
- CODE_OF_CONDUCT.md
|
257
264
|
- LICENSE.txt
|
258
265
|
- README.md
|
259
266
|
- Rakefile
|
260
267
|
- bin/console
|
261
268
|
- bin/setup
|
262
|
-
- changelog.md
|
263
269
|
- doc/upgrade-from-0.6.x-to-1.x.md
|
264
270
|
- gems.rb
|
265
271
|
- lib/shark-on-lambda.rb
|
@@ -267,6 +273,7 @@ files:
|
|
267
273
|
- lib/shark_on_lambda/api_gateway_handler.rb
|
268
274
|
- lib/shark_on_lambda/application.rb
|
269
275
|
- lib/shark_on_lambda/base_controller.rb
|
276
|
+
- lib/shark_on_lambda/cacheable.rb
|
270
277
|
- lib/shark_on_lambda/configuration.rb
|
271
278
|
- lib/shark_on_lambda/errors/base.rb
|
272
279
|
- lib/shark_on_lambda/errors/base_serializer.rb
|
@@ -301,9 +308,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
301
308
|
version: '2.5'
|
302
309
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
303
310
|
requirements:
|
304
|
-
- - "
|
311
|
+
- - ">="
|
305
312
|
- !ruby/object:Gem::Version
|
306
|
-
version:
|
313
|
+
version: '0'
|
307
314
|
requirements: []
|
308
315
|
rubyforge_project:
|
309
316
|
rubygems_version: 2.7.6.2
|