graphql-result_cache 0.1.4 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/gem-push.yml +45 -0
- data/.github/workflows/ruby.yml +31 -0
- data/.gitignore +3 -1
- data/Gemfile.lock +6 -6
- data/README.md +1 -0
- data/graphql-result_cache.gemspec +2 -2
- data/lib/graphql/result_cache/condition.rb +14 -6
- data/lib/graphql/result_cache/context_config.rb +5 -1
- data/lib/graphql/result_cache/version.rb +1 -1
- data/lib/graphql/result_cache.rb +6 -0
- metadata +12 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6f11b53f28b2c9c5bd70a0f985b106e6a8b530d1a236122db13cacd3f92229c
|
4
|
+
data.tar.gz: 37dea5a5328235136a09cb983f800b4cd91fa227fc20f2501d3a766ec7c00508
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64120b5bfb3d1e5ca80d3fb01d01a158cd441eaeda3640da504080edb04070669b9c0920ab2c08732f9dc6bc07162c8916c5c5361cac514b06c44fd5a781cd9e
|
7
|
+
data.tar.gz: 4080d919a8b2acc3b6dff84cace90799f13159705d2bda7aff567586bdaea982a8b5dcabb161f9b3e26d959119ce481a8821a1e830d35ec3e2508ac7714df63f
|
@@ -0,0 +1,45 @@
|
|
1
|
+
name: Ruby Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
name: Build + Publish
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
permissions:
|
14
|
+
contents: read
|
15
|
+
packages: write
|
16
|
+
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v2
|
19
|
+
- name: Set up Ruby 2.6
|
20
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
21
|
+
with:
|
22
|
+
ruby-version: 2.6.6
|
23
|
+
|
24
|
+
- name: Publish to GPR
|
25
|
+
run: |
|
26
|
+
mkdir -p $HOME/.gem
|
27
|
+
touch $HOME/.gem/credentials
|
28
|
+
chmod 0600 $HOME/.gem/credentials
|
29
|
+
printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
30
|
+
gem build *.gemspec
|
31
|
+
gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
|
32
|
+
env:
|
33
|
+
GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
|
34
|
+
OWNER: ${{ github.repository_owner }}
|
35
|
+
|
36
|
+
- name: Publish to RubyGems
|
37
|
+
run: |
|
38
|
+
mkdir -p $HOME/.gem
|
39
|
+
touch $HOME/.gem/credentials
|
40
|
+
chmod 0600 $HOME/.gem/credentials
|
41
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
42
|
+
gem build *.gemspec
|
43
|
+
gem push *.gem
|
44
|
+
env:
|
45
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on: [push, pull_request]
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
test:
|
14
|
+
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
strategy:
|
17
|
+
matrix:
|
18
|
+
ruby-version: ['2.5', '2.6', '2.7']
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v2
|
22
|
+
- name: Set up Ruby
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
25
|
+
# uses: ruby/setup-ruby@v1
|
26
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
27
|
+
with:
|
28
|
+
ruby-version: ${{ matrix.ruby-version }}
|
29
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
30
|
+
- name: Run tests
|
31
|
+
run: bundle exec rspec
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
graphql-result_cache (0.1.
|
4
|
+
graphql-result_cache (0.1.8)
|
5
5
|
graphql (~> 1.9)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
diff-lcs (1.3)
|
11
|
-
graphql (1.9.
|
12
|
-
rake (
|
11
|
+
graphql (1.9.12)
|
12
|
+
rake (13.0.1)
|
13
13
|
rspec (3.8.0)
|
14
14
|
rspec-core (~> 3.8.0)
|
15
15
|
rspec-expectations (~> 3.8.0)
|
@@ -28,10 +28,10 @@ PLATFORMS
|
|
28
28
|
ruby
|
29
29
|
|
30
30
|
DEPENDENCIES
|
31
|
-
bundler (
|
31
|
+
bundler (>= 2.2.10)
|
32
32
|
graphql-result_cache!
|
33
|
-
rake (
|
33
|
+
rake (>= 12.3.3)
|
34
34
|
rspec (~> 3.0)
|
35
35
|
|
36
36
|
BUNDLED WITH
|
37
|
-
|
37
|
+
2.2.31
|
data/README.md
CHANGED
@@ -105,6 +105,7 @@ GraphQL::ResultCache.configure do |config|
|
|
105
105
|
config.namespace = "GraphQL:Result" # Cache key namespace
|
106
106
|
config.expires_in = 1.hour # Expire time for the cache, default to 1.hour
|
107
107
|
config.client_hash = -> { Rails.cache.read(:deploy_version) } # GraphQL client package hash key, used in cache key generation, default to nil
|
108
|
+
config.except = ->(ctx) { !ctx[:result_cacheable] } # Exception rule, skip the cache while evaluated as true, default to nil
|
108
109
|
config.cache = Rails.cache # The cache object, default to Rails.cache in Rails
|
109
110
|
config.logger = Rails.logger # The Logger, default to Rails.logger in Rails
|
110
111
|
end
|
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
end
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_development_dependency 'bundler', '
|
23
|
-
spec.add_development_dependency 'rake', '
|
22
|
+
spec.add_development_dependency 'bundler', '>= 2.2.10'
|
23
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
24
24
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
25
25
|
|
26
26
|
spec.add_dependency 'graphql', '~> 1.9'
|
@@ -9,15 +9,23 @@ module GraphQL
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def true?
|
12
|
+
return false if except?
|
12
13
|
case @if
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
when Symbol
|
15
|
+
@obj.send(@if)
|
16
|
+
when Proc
|
17
|
+
@if.call(@obj, @args, @ctx)
|
18
|
+
else
|
19
|
+
true
|
19
20
|
end
|
20
21
|
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def except?
|
26
|
+
except = ::GraphQL::ResultCache.except
|
27
|
+
except.is_a?(Proc) ? except.call(@ctx) : except
|
28
|
+
end
|
21
29
|
end
|
22
30
|
end
|
23
31
|
end
|
@@ -39,7 +39,7 @@ module GraphQL
|
|
39
39
|
def cache_or_amend_result result, config_of_query
|
40
40
|
config_of_query.each do |config|
|
41
41
|
if config[:result].nil?
|
42
|
-
cache.write config[:key],
|
42
|
+
cache.write config[:key], dig(result, 'data', *config[:path]), cache_write_options.merge(expires_in: expires_in)
|
43
43
|
else
|
44
44
|
# result already got from cache, need to amend to response
|
45
45
|
result_hash = result.to_h
|
@@ -78,6 +78,10 @@ module GraphQL
|
|
78
78
|
::GraphQL::ResultCache.cache
|
79
79
|
end
|
80
80
|
|
81
|
+
def cache_write_options
|
82
|
+
::GraphQL::ResultCache.cache_write_options || {}
|
83
|
+
end
|
84
|
+
|
81
85
|
def logger
|
82
86
|
::GraphQL::ResultCache.logger
|
83
87
|
end
|
data/lib/graphql/result_cache.rb
CHANGED
@@ -11,12 +11,16 @@ module GraphQL
|
|
11
11
|
attr_accessor :expires_in
|
12
12
|
attr_accessor :namespace
|
13
13
|
attr_accessor :cache
|
14
|
+
attr_accessor :cache_write_options
|
14
15
|
attr_accessor :logger
|
15
16
|
|
16
17
|
# to expire the cache when client hash changes, should be a proc. eg:
|
17
18
|
# c.client_hash = -> { Rails.cache.read(:deploy_version) }
|
18
19
|
attr_accessor :client_hash
|
19
20
|
|
21
|
+
# global condition, skip the cache when the value is true, should be a proc.
|
22
|
+
attr_accessor :except
|
23
|
+
|
20
24
|
# ```
|
21
25
|
# GraphQL::ResultCache.configure do |c|
|
22
26
|
# c.namespace = "GraphQL:Result"
|
@@ -39,4 +43,6 @@ module GraphQL
|
|
39
43
|
end
|
40
44
|
end
|
41
45
|
|
46
|
+
GraphQL::Schema::Field.accepts_definition(:result_cache)
|
47
|
+
|
42
48
|
require 'graphql/result_cache/rails' if defined?(::Rails::Engine)
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-result_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ying Fu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.2.10
|
20
20
|
type: :development
|
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:
|
26
|
+
version: 2.2.10
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 12.3.3
|
34
34
|
type: :development
|
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:
|
40
|
+
version: 12.3.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,6 +73,8 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
+
- ".github/workflows/gem-push.yml"
|
77
|
+
- ".github/workflows/ruby.yml"
|
76
78
|
- ".gitignore"
|
77
79
|
- ".rspec"
|
78
80
|
- CODE_OF_CONDUCT.md
|