resourcey 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/resourcey/controller.rb +5 -0
- data/lib/resourcey/controller_modules.rb +1 -0
- data/lib/resourcey/controller_serialization.rb +51 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9bb5e1455d2a6d29fb5f110ad7819a5324c44603
|
4
|
+
data.tar.gz: 833ae4b6ffe117772bc80d0964d99d6c1e7afb77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3b9e28a74cd3f235c782a12bec46e04a7d9d6927cd02a1e0d4df54f1c30dd428a490e29a3d76be11eb968209c1d12209394691f087850b3d306891af7e9821a
|
7
|
+
data.tar.gz: bc2dbe203fbcf3b24bcd7a8038d236e8599497b8a25d8cfc090e5601cc583c06d88f37aa103509adc2d304fa2037c622d9f6c6f95b1dbc9ab853c59b1b1e6bf2
|
data/lib/resourcey/controller.rb
CHANGED
@@ -6,6 +6,7 @@ module Resourcey
|
|
6
6
|
include Resourcey::ControllerPagination
|
7
7
|
include Resourcey::ControllerModel
|
8
8
|
include Resourcey::ControllerCollectionScope
|
9
|
+
include Resourcey::ControllerSerialization
|
9
10
|
|
10
11
|
def index
|
11
12
|
render json: serialized_collection(scoped_resources)
|
@@ -69,6 +70,10 @@ module Resourcey
|
|
69
70
|
end
|
70
71
|
|
71
72
|
def serializer
|
73
|
+
build_serializer_from_configuration || default_serializer
|
74
|
+
end
|
75
|
+
|
76
|
+
def default_serializer
|
72
77
|
name = "#{resource_model_name}Serializer"
|
73
78
|
name.safe_constantize || raise(Errors::ClassNotFound.new(name))
|
74
79
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Resourcey
|
2
|
+
module ControllerSerialization
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
class Configuration
|
6
|
+
attr_reader :actions_serializers
|
7
|
+
attr_accessor :fallback_serializer
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@actions_serializers = Hash.new.with_indifferent_access
|
11
|
+
@fallback_serializer = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def action(action_name, opts = {})
|
15
|
+
@actions_serializers[action_name] = opts[:serializer]
|
16
|
+
end
|
17
|
+
|
18
|
+
def default(opts = {})
|
19
|
+
@fallback_serializer = opts[:serializer]
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_serializer_for_action(action_name)
|
23
|
+
actions_serializers[action_name] || fallback_serializer
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
included do
|
28
|
+
class_attribute :serialization_config
|
29
|
+
end
|
30
|
+
|
31
|
+
module ClassMethods
|
32
|
+
def serialize_with(serializer_name)
|
33
|
+
self.serialization_config ||= Configuration.new
|
34
|
+
self.serialization_config.fallback_serializer =
|
35
|
+
serializer_name.to_s.classify.constantize
|
36
|
+
end
|
37
|
+
|
38
|
+
def configure_serialization
|
39
|
+
return unless block_given?
|
40
|
+
self.serialization_config ||= Configuration.new
|
41
|
+
yield(self.serialization_config)
|
42
|
+
self.serialization_config
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def build_serializer_from_configuration
|
47
|
+
return if serialization_config.nil?
|
48
|
+
serialization_config.get_serializer_for_action(action_name)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resourcey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- polakowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- lib/resourcey/controller_model.rb
|
96
96
|
- lib/resourcey/controller_modules.rb
|
97
97
|
- lib/resourcey/controller_pagination.rb
|
98
|
+
- lib/resourcey/controller_serialization.rb
|
98
99
|
- lib/resourcey/errors.rb
|
99
100
|
- lib/resourcey/filter.rb
|
100
101
|
- lib/resourcey/filter_processor.rb
|