fmcache 0.5.0 → 0.6.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: e8f39c6defd1204754f92cd66b60f31bb5ee374bfd3818d8a7d86af6d06cc13a
4
- data.tar.gz: c90c62883e589291e7d605e116881371a542a00d8f0cf59c45a05fc0c28353a2
3
+ metadata.gz: c6d8771265b25dacc9b0f9fa93154a12fc008017d8ea41f631881542f465b977
4
+ data.tar.gz: 1abeec41a34a16de0b62252b2fda1fd89b5433d91e5c62619705637aa6936814
5
5
  SHA512:
6
- metadata.gz: 2ca4ad6417c77e1dc8c4e7a0cd0c8c41f6e1fbefd0bec032b9b3442c24e28570cf01614f44d74d3e2ec8b7273bfc6eeacd0c2bba884cf8088bdd9a1a81c5efac
7
- data.tar.gz: 8fd64169c4dccd1775dae0a4eacfdbf6a029240422c19c422b1babb256115ca0fa84fc33e439b1ee68b5fc920ebcafe8137f2c2a3e3052f0018ff710c8d839b3
6
+ metadata.gz: 6d1d89d5bffc004390b336cef5f8d083ee4730f5378b88bef8d3181b2d80f77e753494c7b23377f130c5a21734cad8d26ba48a8b495c68be188f567ac1be9667
7
+ data.tar.gz: 2e9b91abb2d277691f67754d8e86e73d998fcd8fdeb4bb2fac4de2ff4d82a0c5deb27b7ff8e9d0a812883160ccba0a34e5c01b2e8dd0c254f03aa36300d60f1f
@@ -0,0 +1,30 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ pull_request:
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ name: Ruby ${{ matrix.ruby }}
14
+ strategy:
15
+ matrix:
16
+ ruby:
17
+ - '4.0'
18
+ - '3.4'
19
+
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ persist-credentials: false
24
+ - name: Set up Ruby
25
+ uses: ruby/setup-ruby@v1
26
+ with:
27
+ ruby-version: ${{ matrix.ruby }}
28
+ bundler-cache: true
29
+ - name: Run the default task
30
+ run: bundle exec rspec
@@ -0,0 +1,31 @@
1
+ name: Publish Gem
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ environment: publish
12
+ permissions:
13
+ id-token: write
14
+ contents: read
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ with:
19
+ persist-credentials: false
20
+
21
+ - name: Set up Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: '4.0'
25
+ bundler-cache: true
26
+
27
+ - name: Build gem
28
+ run: gem build fmcache.gemspec
29
+
30
+ - name: Publish to RubyGems
31
+ uses: rubygems/release-gem@v1
data/Gemfile CHANGED
@@ -4,3 +4,10 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in fmcache.gemspec
6
6
  gemspec
7
+
8
+ gem "bundler", "~> 2.7"
9
+ gem "rake", "~> 13.3"
10
+ gem "rspec", "~> 3.13"
11
+ gem "mock_redis", "~> 0.53"
12
+ gem "redis", "~> 5.4"
13
+ gem "activerecord"
data/Gemfile.lock CHANGED
@@ -1,67 +1,83 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fmcache (0.5.0)
4
+ fmcache (0.6.0)
5
5
  field_mask_parser (~> 0.4.3)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (5.2.2)
11
- activesupport (= 5.2.2)
12
- activerecord (5.2.2)
13
- activemodel (= 5.2.2)
14
- activesupport (= 5.2.2)
15
- arel (>= 9.0)
16
- activesupport (5.2.2)
17
- concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 0.7, < 2)
19
- minitest (~> 5.1)
20
- tzinfo (~> 1.1)
21
- arel (9.0.0)
22
- coderay (1.1.2)
23
- concurrent-ruby (1.1.3)
10
+ activemodel (8.1.2)
11
+ activesupport (= 8.1.2)
12
+ activerecord (8.1.2)
13
+ activemodel (= 8.1.2)
14
+ activesupport (= 8.1.2)
15
+ timeout (>= 0.4.0)
16
+ activesupport (8.1.2)
17
+ base64
18
+ bigdecimal
19
+ concurrent-ruby (~> 1.0, >= 1.3.1)
20
+ connection_pool (>= 2.2.5)
21
+ drb
22
+ i18n (>= 1.6, < 2)
23
+ json
24
+ logger (>= 1.4.2)
25
+ minitest (>= 5.1)
26
+ securerandom (>= 0.3)
27
+ tzinfo (~> 2.0, >= 2.0.5)
28
+ uri (>= 0.13.1)
29
+ base64 (0.3.0)
30
+ bigdecimal (4.0.1)
31
+ concurrent-ruby (1.3.6)
32
+ connection_pool (3.0.2)
24
33
  diff-lcs (1.3)
34
+ drb (2.2.3)
25
35
  field_mask_parser (0.4.3)
26
- i18n (1.2.0)
36
+ i18n (1.8.9)
27
37
  concurrent-ruby (~> 1.0)
28
- method_source (0.9.2)
29
- minitest (5.11.3)
30
- mock_redis (0.19.0)
31
- pry (0.12.2)
32
- coderay (~> 1.1.0)
33
- method_source (~> 0.9.0)
34
- rake (10.5.0)
35
- redis (4.0.3)
36
- rspec (3.8.0)
37
- rspec-core (~> 3.8.0)
38
- rspec-expectations (~> 3.8.0)
39
- rspec-mocks (~> 3.8.0)
40
- rspec-core (3.8.0)
41
- rspec-support (~> 3.8.0)
42
- rspec-expectations (3.8.2)
38
+ json (2.18.1)
39
+ logger (1.7.0)
40
+ minitest (6.0.2)
41
+ drb (~> 2.0)
42
+ prism (~> 1.5)
43
+ mock_redis (0.53.0)
44
+ redis (~> 5)
45
+ prism (1.9.0)
46
+ rake (13.3.1)
47
+ redis (5.4.1)
48
+ redis-client (>= 0.22.0)
49
+ redis-client (0.26.4)
50
+ connection_pool
51
+ rspec (3.13.2)
52
+ rspec-core (~> 3.13.0)
53
+ rspec-expectations (~> 3.13.0)
54
+ rspec-mocks (~> 3.13.0)
55
+ rspec-core (3.13.6)
56
+ rspec-support (~> 3.13.0)
57
+ rspec-expectations (3.13.5)
43
58
  diff-lcs (>= 1.2.0, < 2.0)
44
- rspec-support (~> 3.8.0)
45
- rspec-mocks (3.8.0)
59
+ rspec-support (~> 3.13.0)
60
+ rspec-mocks (3.13.7)
46
61
  diff-lcs (>= 1.2.0, < 2.0)
47
- rspec-support (~> 3.8.0)
48
- rspec-support (3.8.0)
49
- thread_safe (0.3.6)
50
- tzinfo (1.2.5)
51
- thread_safe (~> 0.1)
62
+ rspec-support (~> 3.13.0)
63
+ rspec-support (3.13.7)
64
+ securerandom (0.4.1)
65
+ timeout (0.6.0)
66
+ tzinfo (2.0.6)
67
+ concurrent-ruby (~> 1.0)
68
+ uri (1.1.1)
52
69
 
53
70
  PLATFORMS
54
71
  ruby
55
72
 
56
73
  DEPENDENCIES
57
- activerecord (~> 5.2)
58
- bundler (~> 1.16)
74
+ activerecord
75
+ bundler (~> 2.7)
59
76
  fmcache!
60
- mock_redis (~> 0.19)
61
- pry (~> 0.11)
62
- rake (~> 10.0)
63
- redis (~> 4.0)
64
- rspec (~> 3.8)
77
+ mock_redis (~> 0.53)
78
+ rake (~> 13.3)
79
+ redis (~> 5.4)
80
+ rspec (~> 3.13)
65
81
 
66
82
  BUNDLED WITH
67
- 1.17.2
83
+ 2.7.2
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # FMCache
2
2
 
3
- [![Build Status](https://travis-ci.org/south37/fmcache.svg?branch=master)](https://travis-ci.org/south37/fmcache)
3
+ [![Build Status](https://travis-ci.org/wantedly/fmcache.svg?branch=master)](https://travis-ci.org/wantedly/fmcache)
4
4
  [![Gem Version](https://badge.fury.io/rb/fmcache.svg)](https://badge.fury.io/rb/fmcache)
5
5
 
6
6
  Library for caching json masked by FieldMask
@@ -57,7 +57,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
57
57
 
58
58
  ## Contributing
59
59
 
60
- Bug reports and pull requests are welcome on GitHub at https://github.com/south37/fmcache.
60
+ Bug reports and pull requests are welcome on GitHub at https://github.com/wantedly/fmcache.
61
61
 
62
62
  ## License
63
63
 
data/fmcache.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = %q{Library for caching json masked by FieldMask}
13
13
  spec.description = %q{Library for caching json masked by FieldMask}
14
- spec.homepage = "https://github.com/south37/fmcache"
14
+ spec.homepage = "https://github.com/wantedly/fmcache"
15
15
  spec.license = "MIT"
16
16
 
17
17
  # Specify which files should be added to the gem when it is released.
@@ -23,12 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.16"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "rspec", "~> 3.8"
29
- spec.add_development_dependency "pry", "~> 0.11"
30
- spec.add_development_dependency "mock_redis", "~> 0.19"
31
- spec.add_development_dependency "redis", "~> 4.0"
32
- spec.add_development_dependency "activerecord", "~> 5.2"
33
26
  spec.add_dependency "field_mask_parser", "~> 0.4.3"
34
27
  end
@@ -8,13 +8,15 @@ module FMCache
8
8
  # @param [Proc, nil] notifier
9
9
  # @param [#dump#load, nil] json_serializer
10
10
  # @param [String, nil] id_key_prefix
11
+ # @param [Proc, nil] save_condition
11
12
  def initialize(
12
13
  client:,
13
14
  fm_parser:,
14
15
  ttl: DEFAULT_TTL,
15
16
  notifier: nil,
16
17
  json_serializer: nil,
17
- id_key_prefix: nil
18
+ id_key_prefix: nil,
19
+ save_condition: nil
18
20
  )
19
21
  @client = Client.new(client, notifier)
20
22
  @fm_parser = wrap(fm_parser)
@@ -23,6 +25,7 @@ module FMCache
23
25
  @encoder = Encoder.new(@id_key_gen)
24
26
  @decoder = Decoder.new(@fm_parser)
25
27
  @jsonizer = Jsonizer.new(json_serializer)
28
+ @save_condition = save_condition
26
29
  end
27
30
 
28
31
  attr_reader :client, :fm_parser, :encoder, :decoder
@@ -31,6 +34,7 @@ module FMCache
31
34
  # @param [FieldMaskParser::Node] field_mask
32
35
  # @return [Boolean]
33
36
  def write(values:, field_mask:)
37
+ values = values.select { |value| @save_condition.call(value) } if @save_condition
34
38
  normalize!(field_mask)
35
39
  h = encode(values, field_mask)
36
40
  client.set(values: @jsonizer.jsonize(h), ttl: @ttl)
@@ -56,10 +60,11 @@ module FMCache
56
60
 
57
61
  # @param [<Integer | String>] ids
58
62
  # @param [FieldMaskParser::Node] field_mask
63
+ # @param [Boolean] skip_write
59
64
  # @yieldparam [<Integer>, FieldMaskParser::Node] ids, field_mask
60
65
  # @yieldreturn [<Hash>]
61
66
  # @return [<Hash>]
62
- def fetch(ids:, field_mask:, &block)
67
+ def fetch(ids:, field_mask:, skip_write: false, &block)
63
68
  ids = ids.map(&:to_i)
64
69
  normalize!(field_mask)
65
70
 
@@ -68,7 +73,7 @@ module FMCache
68
73
 
69
74
  # NOTE: get new data
70
75
  d = block.call(incomplete_info.ids, incomplete_info.field_mask)
71
- write(values: d, field_mask: incomplete_info.field_mask)
76
+ write(values: d, field_mask: incomplete_info.field_mask) unless skip_write
72
77
 
73
78
  older = encode(incomplete_values, field_mask)
74
79
  newer = encode(d, incomplete_info.field_mask)
@@ -80,7 +85,7 @@ module FMCache
80
85
  else
81
86
  # NOTE: Fallback to block.call with full field_mask
82
87
  d2 = block.call(i_i.ids, field_mask)
83
- write(values: d2, field_mask: field_mask)
88
+ write(values: d2, field_mask: field_mask) unless skip_write
84
89
  r = values + d2
85
90
  end
86
91
 
@@ -1,3 +1,3 @@
1
1
  module FMCache
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,113 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fmcache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nao Minami
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2019-11-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.16'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.16'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.8'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.8'
55
- - !ruby/object:Gem::Dependency
56
- name: pry
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.11'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.11'
69
- - !ruby/object:Gem::Dependency
70
- name: mock_redis
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.19'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.19'
83
- - !ruby/object:Gem::Dependency
84
- name: redis
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '4.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '4.0'
97
- - !ruby/object:Gem::Dependency
98
- name: activerecord
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '5.2'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '5.2'
111
12
  - !ruby/object:Gem::Dependency
112
13
  name: field_mask_parser
113
14
  requirement: !ruby/object:Gem::Requirement
@@ -129,9 +30,10 @@ executables: []
129
30
  extensions: []
130
31
  extra_rdoc_files: []
131
32
  files:
33
+ - ".github/workflows/main.yml"
34
+ - ".github/workflows/publish.yml"
132
35
  - ".gitignore"
133
36
  - ".rspec"
134
- - ".travis.yml"
135
37
  - Gemfile
136
38
  - Gemfile.lock
137
39
  - LICENSE.txt
@@ -158,11 +60,10 @@ files:
158
60
  - lib/fmcache/jsonizer.rb
159
61
  - lib/fmcache/jsonizer/default_json_serializer.rb
160
62
  - lib/fmcache/version.rb
161
- homepage: https://github.com/south37/fmcache
63
+ homepage: https://github.com/wantedly/fmcache
162
64
  licenses:
163
65
  - MIT
164
66
  metadata: {}
165
- post_install_message:
166
67
  rdoc_options: []
167
68
  require_paths:
168
69
  - lib
@@ -177,8 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
78
  - !ruby/object:Gem::Version
178
79
  version: '0'
179
80
  requirements: []
180
- rubygems_version: 3.0.3
181
- signing_key:
81
+ rubygems_version: 4.0.3
182
82
  specification_version: 4
183
83
  summary: Library for caching json masked by FieldMask
184
84
  test_files: []
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.5.1
5
- before_install:
6
- - gem install bundler -v 1.16.2
7
- script:
8
- - bundle exec rspec