plucker_serializer 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5ce3615a6b455cef96024d0dd6d9cfadf30e1af519f88e03496927956a378aa
4
- data.tar.gz: ba1b98c83f64a135f9043d92e8ec0b9a5ff785144b774f2f6c78e915b589b75c
3
+ metadata.gz: 98c18aa3e96729279436e2e8e51f1fdd9b000927239dae2d4d269f42b2888314
4
+ data.tar.gz: 51a38fe79f8d167c6caf3a7d532c007dac88530c0bdd191e72137bd114e6c652
5
5
  SHA512:
6
- metadata.gz: 11751d1facbd07d422144a931b2e9487495ba294880dd064b754e3526bfa9212da5d73c3f9d65fff061a281ce9b4d63504167d66bfb02c4f0fa8305984823d6a
7
- data.tar.gz: c7e5ceabff25a46edac6e3a2c72b79b1f9f2c92c20bb32486b995de4e3d2ae6ebd608818201c6722514363b390b6978e9b1409f2a5606dbf9ac66b440c2e0c45
6
+ metadata.gz: e42c772ff7b205cf92e3cf75c8d6bfa9f6de7b931c70684651bef6e0c5e77ce2e9376862f907fbae2e60e78f1acf9e83f6f15ae57ab914a1326199f296fa85a1
7
+ data.tar.gz: 2a183004a3a9217880cc172e88c46713afd2a450f201e390b475892dbcc13521ca3b298dffdcb295af31a880a53816437774c109ceff33ffae527df59c5fdae2
data/lib/plucker/base.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'caching'
2
+ require_relative 'concerns/caching'
3
3
  require_relative 'descriptor'
4
4
  require_relative 'has_many'
5
5
  require_relative 'belongs_to'
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ require_relative 'concerns/caching'
3
+
2
4
  module Plucker
3
5
  class Collection
4
6
  include Enumerable
@@ -9,6 +9,7 @@ module Plucker
9
9
  with_options instance_writer: false, instance_reader: false do |serializer|
10
10
  serializer.class_attribute :_cache
11
11
  serializer.class_attribute :_cache_options
12
+ serializer.class_attribute :_cache_store
12
13
  end
13
14
  end
14
15
 
@@ -20,22 +21,18 @@ module Plucker
20
21
 
21
22
  def cache(options = {})
22
23
  self._cache = true
24
+ self._cache_store = Plucker.config.cache_store || ActiveSupport::Cache.lookup_store(:null_store)
23
25
  self._cache_options = options.blank? ? {} : options
24
26
  end
25
27
 
26
- def cache_store
27
- defined?(Rails) && Rails.cache
28
- end
29
-
30
28
  def cache_enabled?
31
- cache_store.present? && _cache.present?
29
+ self._cache_store.present? && _cache.present?
32
30
  end
33
31
  end
34
32
 
35
- ### INSTANCE METHODS
36
33
  def fetch
37
34
  if serializer_class.cache_enabled?
38
- serializer_class.cache_store.fetch(cache_key, version: cache_version, options: serializer_class._cache_options) do
35
+ self.class._cache_store.fetch(cache_key, version: cache_version, options: serializer_class._cache_options) do
39
36
  yield
40
37
  end
41
38
  else
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Plucker
4
+ class Configuration
5
+ attr_accessor :cache_store
6
+
7
+ def initialize
8
+ @cache_store = nil
9
+ end
10
+ end
11
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Plucker
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
@@ -1,4 +1,5 @@
1
1
  require "plucker/version"
2
+ require "plucker/configuration"
2
3
  require "plucker/base"
3
4
  require "plucker/attribute"
4
5
  require "plucker/collection"
@@ -8,4 +9,16 @@ require "plucker/has_one"
8
9
  require "plucker/has_many"
9
10
  require "plucker/field"
10
11
  require "plucker/descriptor"
11
- require "plucker/caching"
12
+ require "plucker/concerns/caching"
13
+
14
+ module Plucker
15
+ class << self
16
+ def config
17
+ @config ||= Configuration.new
18
+ end
19
+
20
+ def configure
21
+ yield(config)
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plucker_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henry Boisgibault
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-31 00:00:00.000000000 Z
11
+ date: 2022-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- description: A blazing fast JSON serializer
27
+ description: A blazing fast JSON serializer for ActiveRecord & Ruby objects
28
28
  email: henry@logora.fr
29
29
  executables: []
30
30
  extensions: []
@@ -33,8 +33,9 @@ files:
33
33
  - lib/plucker/attribute.rb
34
34
  - lib/plucker/base.rb
35
35
  - lib/plucker/belongs_to.rb
36
- - lib/plucker/caching.rb
37
36
  - lib/plucker/collection.rb
37
+ - lib/plucker/concerns/caching.rb
38
+ - lib/plucker/configuration.rb
38
39
  - lib/plucker/descriptor.rb
39
40
  - lib/plucker/field.rb
40
41
  - lib/plucker/has_many.rb
@@ -42,10 +43,14 @@ files:
42
43
  - lib/plucker/relationship.rb
43
44
  - lib/plucker/version.rb
44
45
  - lib/plucker_serializer.rb
45
- homepage:
46
+ homepage: https://github.com/plucker-serializer/plucker_serializer
46
47
  licenses:
47
48
  - MIT
48
- metadata: {}
49
+ metadata:
50
+ bug_tracker_uri: https://github.com/plucker-serializer/plucker_serializer/issues
51
+ source_code_uri: https://github.com/plucker-serializer/plucker_serializer
52
+ documentation_uri: https://github.com/plucker-serializer/plucker_serializer
53
+ changelog_uri: https://github.com/plucker-serializer/plucker_serializer/releases
49
54
  post_install_message:
50
55
  rdoc_options: []
51
56
  require_paths:
@@ -64,5 +69,5 @@ requirements: []
64
69
  rubygems_version: 3.1.2
65
70
  signing_key:
66
71
  specification_version: 4
67
- summary: A blazing fast JSON serializer with an easy-to-use API
72
+ summary: A blazing fast JSON serializer for ActiveRecord & Ruby objects
68
73
  test_files: []