couch_potato 1.16.0 → 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3fd11db6b5bb37ef9b0d12115ae4586f8f0ec8afff586e7a2b381e1839af0196
4
- data.tar.gz: 7f03e40ec9297bb669f28559e251b72f5b8e849010b8861d992c75c5ed7737a3
3
+ metadata.gz: 541fbb6f39b68bad864b70d9abb9f824ccf5b85a42b0a652282f9362c1fa4a5b
4
+ data.tar.gz: 9684d42c720dad80be99d3e225a12fc0db0d413e6ef987accceddc0d46bab526
5
5
  SHA512:
6
- metadata.gz: 72bc1831a2b773d3f64682f1fbe20fb10acccad204fd057e92676c53fe03f5f56b462c02905b3f3ee52ddb6fa640f6dfe6a05a3f1e1aeb8e750eaecb76922a38
7
- data.tar.gz: 4a49349375cabe65b465c99336e3c0b05564d0b720faa6ae4d956633809ea52d6a73119118c7bc923d0ffde0aefd5af93f3fbdc587fed89696942b05ce421025
6
+ metadata.gz: 6e882ea7f5a1cfaeab4d62b610b5e34b18b7231f1923499a7bfc8b77b2f89a845303597d9ef0a85b681d39ff2ece08c465c7a98e2d4f74baa9c923f199136902
7
+ data.tar.gz: 2e6aef8d870ef30869c5154a7dd544f644592879ac8d46b3843854602eb378154850b07899c17f6fca99e0ca20e8b41598c116093ef9db2bf95c5fb89e312cf0
@@ -16,13 +16,13 @@ jobs:
16
16
  strategy:
17
17
  fail-fast: false
18
18
  matrix:
19
- ruby: ["3.0", "3.1", "3.2", "jruby"]
19
+ ruby: ["3.2", "3.3", "jruby"]
20
20
  gemfile:
21
- - "active_support_7_0"
22
- - "active_support_7_1"
21
+ - "active_support_7_2"
22
+ - "active_support_8_0"
23
23
  exclude:
24
24
  - ruby: "jruby"
25
- gemfile: "active_support_7_0"
25
+ gemfile: "active_support_8_0"
26
26
  steps:
27
27
  - uses: actions/checkout@v2
28
28
  - name: Set up CouchDB
data/CHANGES.md CHANGED
@@ -1,5 +1,16 @@
1
1
  ## Changes
2
2
 
3
+ # 1.18.0
4
+
5
+ - add testing Rails 7.2/8 on CI
6
+ - change gemspec to allow for Rails 8
7
+ - remove support for Rails < 7.2
8
+
9
+ # 1.17.0
10
+
11
+ - filter out nil ids for loading multiple documents
12
+ - cache nil documents
13
+
3
14
  # 1.16.0
4
15
 
5
16
  - add payload to ActiveSupport instrumentation calls
data/Rakefile CHANGED
@@ -26,7 +26,7 @@ end
26
26
 
27
27
  desc 'Run all specs for all gemfiles'
28
28
  task :spec do
29
- %w(7_1 7_0).each do |version|
29
+ %w(7_2 8_0).each do |version|
30
30
  Bundler.with_original_env do
31
31
  puts "Running tests with ActiveSupport #{version.sub('_', '.')}"
32
32
  sh "env BUNDLE_GEMFILE=gemfiles/active_support_#{version} bundle install"
data/couch_potato.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.version = CouchPotato::VERSION
14
14
  s.platform = Gem::Platform::RUBY
15
15
 
16
- s.add_dependency 'activemodel', ['>= 5.0', '< 8.0']
16
+ s.add_dependency 'activemodel', ['>= 7.2', '< 8.1']
17
17
  s.add_dependency 'couchrest', '~>2.0.0'
18
18
  s.add_dependency 'json', '~> 2.3'
19
19
 
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'railties', '~>7.0.8'
3
+ gem 'railties', '~>7.2.1'
4
4
  gem 'activemodel'
5
5
  gem 'execjs'
6
6
 
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'railties', '~>7.1.3'
3
+ gem 'railties', '~>8.0.1'
4
4
  gem 'activemodel'
5
5
  gem 'execjs'
6
6
 
@@ -149,7 +149,7 @@ module CouchPotato
149
149
 
150
150
  cached = cache && cache[id]
151
151
  if cache
152
- if cached
152
+ if cache.key?(id)
153
153
  ActiveSupport::Notifications.instrument('couch_potato.load.cached', id: id, doc: cached) do
154
154
  cached
155
155
  end
@@ -164,6 +164,7 @@ module CouchPotato
164
164
  alias load load_document
165
165
 
166
166
  def load_documents(ids)
167
+ ids = ids.compact
167
168
  return [] if ids.empty?
168
169
 
169
170
  uncached_ids = ids - (cache&.keys || [])
@@ -177,7 +178,7 @@ module CouchPotato
177
178
  if cache
178
179
  uncached_ids.each do |id|
179
180
  doc = uncached_docs_by_id[id]
180
- cache[id] = doc if doc
181
+ cache[id] = doc
181
182
  end
182
183
  end
183
184
  ids.filter_map { |id| (cached_docs_by_id[id]) || uncached_docs_by_id[id] }
@@ -1,4 +1,4 @@
1
1
  module CouchPotato
2
- VERSION = '1.16.0'.freeze
2
+ VERSION = '1.18.0'.freeze
3
3
  RSPEC_VERSION = '4.1.0'.freeze
4
4
  end
@@ -37,6 +37,15 @@ RSpec.describe 'database caching' do
37
37
  db.load '1'
38
38
  end
39
39
 
40
+ it 'caches nil' do
41
+ allow(couchrest_db).to receive(:get).with('1').and_return(nil)
42
+
43
+ db.load '1'
44
+ db.load '1'
45
+
46
+ expect(couchrest_db).to have_received(:get).with('1').exactly(1).times
47
+ end
48
+
40
49
  it 'gets an object from the cache the 2nd time via #load!' do
41
50
  expect(couchrest_db).to receive(:get).with('1').exactly(1).times
42
51
 
@@ -92,6 +101,17 @@ RSpec.describe 'database caching' do
92
101
  expect(couchrest_db).to have_received(:bulk_load).with(['2']).exactly(1).times
93
102
  end
94
103
 
104
+ it 'caches nil' do
105
+ allow(couchrest_db).to receive(:bulk_load).with(['1']).and_return('rows' => [{'doc' => nil}])
106
+ allow(couchrest_db).to receive(:bulk_load).with(['2']).and_return('rows' => [{'doc' => doc2}])
107
+
108
+
109
+ db.load_document(['1'])
110
+ db.load_document(['1', '2'])
111
+
112
+ expect(couchrest_db).to have_received(:bulk_load).with(['1']).exactly(1).times
113
+ end
114
+
95
115
  it 'instruments the load call' do
96
116
  allow(couchrest_db).to receive(:bulk_load).with(['1'])
97
117
  .and_return('rows' => [{'doc' => doc1}])
@@ -137,22 +157,6 @@ RSpec.describe 'database caching' do
137
157
 
138
158
  expect(result).to eql([doc1, doc2])
139
159
  end
140
-
141
- it 'does not cache documents that do not respond to id' do
142
- doc1 = {
143
- 'id' => '1',
144
- }
145
- doc2 = {
146
- 'id' => '2',
147
- }
148
- allow(couchrest_db).to receive(:bulk_load).with(['1', '2'])
149
- .and_return('rows' => [{'doc' => doc1}, {'doc' => doc2}])
150
-
151
- db.load_document(['1', '2'])
152
- db.load_document(['1', '2'])
153
-
154
- expect(couchrest_db).to have_received(:bulk_load).with(['1', '2']).exactly(2).times
155
- end
156
160
  end
157
161
 
158
162
  context 'when switching the database' do
@@ -92,6 +92,12 @@ describe CouchPotato::Database, 'load' do
92
92
  db.load %w[1 2 3]
93
93
  end
94
94
 
95
+ it 'does not request anything when nil is given' do
96
+ expect(db.load([nil])).to eq([])
97
+
98
+ expect(couchrest_db).not_to have_received(:bulk_load)
99
+ end
100
+
95
101
  it 'returns only found documents' do
96
102
  expect(db.load(%w[1 2 3]).size).to eq(2)
97
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couch_potato
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.0
4
+ version: 1.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Lang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-02 00:00:00.000000000 Z
11
+ date: 2025-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '7.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '8.0'
22
+ version: '8.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '5.0'
29
+ version: '7.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '8.0'
32
+ version: '8.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: couchrest
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -130,8 +130,8 @@ files:
130
130
  - Rakefile
131
131
  - couch_potato-rspec.gemspec
132
132
  - couch_potato.gemspec
133
- - gemfiles/active_support_7_0
134
- - gemfiles/active_support_7_1
133
+ - gemfiles/active_support_7_2
134
+ - gemfiles/active_support_8_0
135
135
  - init.rb
136
136
  - lib/core_ext/date.rb
137
137
  - lib/core_ext/time.rb