ollama-ruby 0.3.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,63 +1,63 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe Ollama::Documents::MemoryCache do
4
- let :memory_cache do
4
+ let :cache do
5
5
  described_class.new prefix: 'test-'
6
6
  end
7
7
 
8
8
  it 'can be instantiated' do
9
- expect(memory_cache).to be_a described_class
9
+ expect(cache).to be_a described_class
10
10
  end
11
11
 
12
12
  it 'can get/set a key' do
13
13
  key, value = 'foo', { test: true }
14
14
  expect {
15
- memory_cache[key] = value
15
+ cache[key] = value
16
16
  }.to change {
17
- memory_cache[key]
17
+ cache[key]
18
18
  }.from(nil).to(value)
19
19
  end
20
20
 
21
21
  it 'can determine if key exists' do
22
22
  key, value = 'foo', { test: true }
23
23
  expect {
24
- memory_cache[key] = value
24
+ cache[key] = value
25
25
  }.to change {
26
- memory_cache.key?(key)
26
+ cache.key?(key)
27
27
  }.from(false).to(true)
28
28
  end
29
29
 
30
30
  it 'can delete' do
31
31
  key, value = 'foo', { test: true }
32
- memory_cache[key] = value
32
+ cache[key] = value
33
33
  expect {
34
- memory_cache.delete(key)
34
+ cache.delete(key)
35
35
  }.to change {
36
- memory_cache.key?(key)
36
+ cache.key?(key)
37
37
  }.from(true).to(false)
38
38
  end
39
39
 
40
40
  it 'returns size' do
41
41
  key, value = 'foo', { test: true }
42
42
  expect {
43
- memory_cache[key] = value
43
+ cache[key] = value
44
44
  }.to change {
45
- memory_cache.size
45
+ cache.size
46
46
  }.from(0).to(1)
47
47
  end
48
48
 
49
49
  it 'can clear' do
50
50
  key, value = 'foo', { test: true }
51
- memory_cache[key] = value
51
+ cache[key] = value
52
52
  expect {
53
- expect(memory_cache.clear).to eq memory_cache
53
+ expect(cache.clear).to eq cache
54
54
  }.to change {
55
- memory_cache.size
55
+ cache.size
56
56
  }.from(1).to(0)
57
57
  end
58
58
 
59
59
  it 'can iterate over keys under a prefix' do
60
- memory_cache['foo'] = 'bar'
61
- expect(memory_cache.to_a).to eq [ %w[ test-foo bar ] ]
60
+ cache['foo'] = 'bar'
61
+ expect(cache.to_a).to eq [ %w[ test-foo bar ] ]
62
62
  end
63
63
  end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Ollama::Documents::RedisBackedMemoryCache do
4
+ it 'raises ArgumentError if url is missing' do
5
+ expect {
6
+ described_class.new prefix: 'test-', url: nil
7
+ }.to raise_error ArgumentError
8
+ end
9
+
10
+ context 'test redis interactions' do
11
+ let :cache do
12
+ described_class.new prefix: 'test-', url: 'something'
13
+ end
14
+
15
+ let :data do
16
+ cache.instance_eval { @data }
17
+ end
18
+
19
+ let :redis_cache do
20
+ cache.instance_eval { @redis_cache }
21
+ end
22
+
23
+ let :redis do
24
+ double('Redis')
25
+ end
26
+
27
+ before do
28
+ allow_any_instance_of(Ollama::Documents::RedisCache).to\
29
+ receive(:redis).and_return(redis)
30
+ allow(redis).to receive(:scan_each)
31
+ end
32
+
33
+ it 'can be instantiated and initialized' do
34
+ cache = described_class.new prefix: 'test-', url: 'something'
35
+ expect(cache).to be_a described_class
36
+ end
37
+
38
+ it 'defaults to nil object_class' do
39
+ cache = described_class.new prefix: 'test-', url: 'something'
40
+ expect(cache.object_class).to be_nil
41
+ end
42
+
43
+ it 'can be configured with object_class' do
44
+ object_class = Class.new(JSON::GenericObject)
45
+ cache = described_class.new(prefix: 'test-', url: 'something', object_class:)
46
+ expect(cache.object_class).to eq object_class
47
+ end
48
+
49
+ it 'has Redis client' do
50
+ expect(cache.redis).to eq redis
51
+ end
52
+
53
+ it 'can get a key' do
54
+ key = 'foo'
55
+ expect(data).to receive(:[]).with('test-' + key).and_return 666
56
+ expect(cache[key]).to eq 666
57
+ end
58
+
59
+ it 'can set a value for a key' do
60
+ key, value = 'foo', { test: true }
61
+ expect(data).to receive(:[]=).with('test-' + key, { test: true }).and_call_original
62
+ expect(redis).to receive(:set).with('test-' + key, JSON(value))
63
+ cache[key] = value
64
+ end
65
+
66
+ it 'can determine if key exists' do
67
+ key = 'foo'
68
+ expect(data).to receive(:key?).with('test-' + key).and_return(false, true)
69
+ expect(cache.key?('foo')).to eq false
70
+ expect(cache.key?('foo')).to eq true
71
+ end
72
+
73
+ it 'can delete' do
74
+ key = 'foo'
75
+ expect(data).to receive(:delete).with('test-' + key)
76
+ expect(redis).to receive(:del).with('test-' + key)
77
+ cache.delete(key)
78
+ end
79
+
80
+ it 'returns size' do
81
+ allow(cache).to receive(:count).and_return 3
82
+ expect(cache.size).to eq 3
83
+ end
84
+
85
+ it 'can clear' do
86
+ expect(redis).to receive(:scan_each).with(match: 'test-*').and_yield(
87
+ 'test-foo'
88
+ )
89
+ expect(redis).to receive(:del).with('test-foo')
90
+ expect(cache.clear).to eq cache
91
+ end
92
+
93
+ it 'can iterate over keys under a prefix' do
94
+ data['test-foo'] = 'bar'
95
+ expect(cache.to_a).to eq [ %w[ test-foo bar ] ]
96
+ end
97
+
98
+ it 'can compute prefix with pre' do
99
+ expect(cache.pre('foo')).to eq 'test-foo'
100
+ end
101
+
102
+ it 'can remove prefix with unpre' do
103
+ expect(cache.unpre('test-foo')).to eq 'foo'
104
+ end
105
+ end
106
+ end
@@ -2,8 +2,19 @@ require 'spec_helper'
2
2
 
3
3
  RSpec.describe Ollama::Documents::RedisCache do
4
4
  it 'can be instantiated' do
5
- redis_cache = described_class.new prefix: 'test-', url: 'something'
6
- expect(redis_cache).to be_a described_class
5
+ cache = described_class.new prefix: 'test-', url: 'something'
6
+ expect(cache).to be_a described_class
7
+ end
8
+
9
+ it 'defaults to nil object_class' do
10
+ cache = described_class.new prefix: 'test-', url: 'something'
11
+ expect(cache.object_class).to be_nil
12
+ end
13
+
14
+ it 'can be configured with object_class' do
15
+ object_class = Class.new(JSON::GenericObject)
16
+ cache = described_class.new(prefix: 'test-', url: 'something', object_class:)
17
+ expect(cache.object_class).to eq object_class
7
18
  end
8
19
 
9
20
  it 'raises ArgumentError if url is missing' do
@@ -13,7 +24,7 @@ RSpec.describe Ollama::Documents::RedisCache do
13
24
  end
14
25
 
15
26
  context 'test redis interactions' do
16
- let :redis_cache do
27
+ let :cache do
17
28
  described_class.new prefix: 'test-', url: 'something'
18
29
  end
19
30
 
@@ -26,32 +37,41 @@ RSpec.describe Ollama::Documents::RedisCache do
26
37
  end
27
38
 
28
39
  it 'has Redis client' do
29
- expect(redis_cache.redis).to eq redis
40
+ expect(cache.redis).to eq redis
30
41
  end
31
42
 
32
43
  it 'can get a key' do
33
44
  key = 'foo'
34
- expect(redis).to receive(:get).with('test-' + key).and_return 666
35
- redis_cache[key]
45
+ expect(redis).to receive(:get).with('test-' + key).and_return '"some_json"'
46
+ expect(cache[key]).to eq 'some_json'
36
47
  end
37
48
 
38
49
  it 'can set a value for a key' do
39
50
  key, value = 'foo', { test: true }
40
- expect(redis).to receive(:set).with('test-' + key, JSON(value))
41
- redis_cache[key] = value
51
+ expect(redis).to receive(:set).with('test-' + key, JSON(value), ex: nil)
52
+ cache[key] = value
53
+ end
54
+
55
+ it 'can set a value for a key with ttl' do
56
+ cache = described_class.new prefix: 'test-', url: 'something', ex: 3_600
57
+ key, value = 'foo', { test: true }
58
+ expect(redis).to receive(:set).with('test-' + key, JSON(value), ex: 3_600)
59
+ cache[key] = value
60
+ allow(redis).to receive(:ttl).with('test-' + key).and_return 3_600
61
+ expect(cache.ttl(key)).to eq 3_600
42
62
  end
43
63
 
44
64
  it 'can determine if key exists' do
45
65
  key = 'foo'
46
66
  expect(redis).to receive(:exists?).with('test-' + key).and_return(false, true)
47
- expect(redis_cache.key?('foo')).to eq false
48
- expect(redis_cache.key?('foo')).to eq true
67
+ expect(cache.key?('foo')).to eq false
68
+ expect(cache.key?('foo')).to eq true
49
69
  end
50
70
 
51
71
  it 'can delete' do
52
72
  key = 'foo'
53
73
  expect(redis).to receive(:del).with('test-' + key)
54
- redis_cache.delete(key)
74
+ cache.delete(key)
55
75
  end
56
76
 
57
77
  it 'returns size' do
@@ -59,7 +79,7 @@ RSpec.describe Ollama::Documents::RedisCache do
59
79
  and_yield('test-foo').
60
80
  and_yield('test-bar').
61
81
  and_yield('test-baz')
62
- expect(redis_cache.size).to eq 3
82
+ expect(cache.size).to eq 3
63
83
  end
64
84
 
65
85
  it 'can clear' do
@@ -67,20 +87,20 @@ RSpec.describe Ollama::Documents::RedisCache do
67
87
  'test-foo'
68
88
  )
69
89
  expect(redis).to receive(:del).with('test-foo')
70
- expect(redis_cache.clear).to eq redis_cache
90
+ expect(cache.clear).to eq cache
71
91
  end
72
92
 
73
93
  it 'can iterate over keys under a prefix' do
74
94
  expect(redis).to receive(:scan_each).with(match: 'test-*')
75
- redis_cache.to_a
95
+ cache.to_a
76
96
  end
77
97
 
78
98
  it 'can compute prefix with pre' do
79
- expect(redis_cache.pre('foo')).to eq 'test-foo'
99
+ expect(cache.pre('foo')).to eq 'test-foo'
80
100
  end
81
101
 
82
102
  it 'can remove prefix with unpre' do
83
- expect(redis_cache.unpre('test-foo')).to eq 'foo'
103
+ expect(cache.unpre('test-foo')).to eq 'foo'
84
104
  end
85
105
  end
86
106
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  RSpec.describe Ollama::Documents::Splitters::Character do
4
4
  let :splitter do
5
- described_class.new chunk_size: 23
5
+ described_class.new chunk_size: 23, combining_string: ''
6
6
  end
7
7
 
8
8
  it 'can be instantiated' do
@@ -10,29 +10,41 @@ RSpec.describe Ollama::Documents::Splitters::Character do
10
10
  end
11
11
 
12
12
  it 'can split' do
13
- text = [ "A" * 10 ] * 10 * "\n\n"
13
+ text = [ ?A * 10 ] * 10 * "\n\n"
14
14
  result = splitter.split(text)
15
15
  expect(result.count).to eq 5
16
16
  expect(result.to_a.join('')).to eq ?A * 100
17
17
  end
18
18
 
19
+ it 'can split combining with separation' do
20
+ splitter = described_class.new chunk_size: 25, include_separator: false,
21
+ combining_string: ?X
22
+ text = [ ?A * 10 ] * 10 * "\n\n"
23
+ result = splitter.split(text)
24
+ expect(result.count).to eq 5
25
+ expect(result.to_a.join(?B)).to eq\
26
+ "AAAAAAAAAAXAAAAAAAAAAXBAAAAAAAAAAAAAAAAAAAAXBAAAAAAAAAAAAAAAAAAAAXB"\
27
+ "AAAAAAAAAAAAAAAAAAAAXBAAAAAAAAAAAAAAAAAAAAX"
28
+ end
29
+
19
30
  it 'can split including separator' do
20
- splitter = described_class.new chunk_size: 25, include_separator: true
21
- text = [ "A" * 10 ] * 10 * "\n\n"
31
+ splitter = described_class.new chunk_size: 25, include_separator: true,
32
+ combining_string: ''
33
+ text = [ ?A * 10 ] * 10 * "\n\n"
22
34
  result = splitter.split(text)
23
35
  expect(result.count).to eq 5
24
36
  expect(result.to_a.join('')).to eq text
25
37
  end
26
38
 
27
39
  it 'cannot split' do
28
- text = [ "A" * 10 ] * 10 * "\n"
40
+ text = [ ?A * 10 ] * 10 * "\n"
29
41
  result = splitter.split(text)
30
42
  expect(result.count).to eq 1
31
43
  expect(result.to_a.join('').count(?A)).to eq text.count(?A)
32
44
  end
33
45
 
34
46
  it 'cannot split2' do
35
- text = "A" * 25
47
+ text = ?A * 25
36
48
  result = splitter.split(text)
37
49
  expect(result.count).to eq 1
38
50
  expect(result.to_a.join('')).to eq ?A * 25
@@ -48,7 +60,7 @@ end
48
60
 
49
61
  RSpec.describe Ollama::Documents::Splitters::RecursiveCharacter do
50
62
  let :splitter do
51
- described_class.new chunk_size: 23
63
+ described_class.new chunk_size: 23, combining_string: ''
52
64
  end
53
65
 
54
66
  it 'can be instantiated' do
@@ -56,7 +68,7 @@ RSpec.describe Ollama::Documents::Splitters::RecursiveCharacter do
56
68
  end
57
69
 
58
70
  it 'can split' do
59
- text = [ "A" * 10 ] * 10 * "\n\n"
71
+ text = [ ?A * 10 ] * 10 * "\n\n"
60
72
  result = splitter.split(text)
61
73
  expect(result.count).to eq 5
62
74
  expect(result.to_a.join('')).to eq ?A * 100
@@ -65,30 +77,32 @@ RSpec.describe Ollama::Documents::Splitters::RecursiveCharacter do
65
77
  it 'cannot split' do
66
78
  splitter = described_class.new chunk_size: 23, include_separator: true,
67
79
  separators: described_class::DEFAULT_SEPARATORS[0..-2]
68
- text = "A" * 25
80
+ text = ?A * 25
69
81
  result = splitter.split(text)
70
82
  expect(result.count).to eq 1
71
83
  expect(result.to_a.join('')).to eq ?A * 25
72
84
  end
73
85
 
74
86
  it 'can split including separator' do
75
- splitter = described_class.new chunk_size: 25, include_separator: true
76
- text = [ "A" * 10 ] * 10 * "\n\n"
87
+ splitter = described_class.new chunk_size: 25, include_separator: true,
88
+ combining_string: ''
89
+ text = [ ?A * 10 ] * 10 * "\n\n"
77
90
  result = splitter.split(text)
78
91
  expect(result.count).to eq 5
79
92
  expect(result.to_a.join('')).to eq text
80
93
  end
81
94
 
82
95
  it 'can split single newline as well' do
83
- text = [ "A" * 10 ] * 10 * "\n"
96
+ text = [ ?A * 10 ] * 10 * "\n"
84
97
  result = splitter.split(text)
85
98
  expect(result.count).to eq 5
86
99
  expect(result.to_a.join('')).to eq ?A * 100
87
100
  end
88
101
 
89
102
  it 'can split single newline as well including separator' do
90
- splitter = described_class.new chunk_size: 25, include_separator: true
91
- text = [ "A" * 10 ] * 10 * "\n"
103
+ splitter = described_class.new chunk_size: 25, include_separator: true,
104
+ combining_string: ''
105
+ text = [ ?A * 10 ] * 10 * "\n"
92
106
  result = splitter.split(text)
93
107
  expect(result.count).to eq 5
94
108
  expect(result.to_a.join('')).to eq text
@@ -33,6 +33,28 @@ RSpec.describe Ollama::Utils::Fetcher do
33
33
  end
34
34
  end
35
35
 
36
+ it 'can #get without ssl peer verification' do
37
+ fetcher = described_class.new(
38
+ http_options: { ssl_verify_peer: false }
39
+ )
40
+ stub_request(:get, 'https://www.example.com/hello').
41
+ with(headers: fetcher.headers).
42
+ to_return(
43
+ status: 200,
44
+ body: 'world',
45
+ headers: { 'Content-Type' => 'text/plain' },
46
+ )
47
+ expect(Excon).to receive(:new).with(
48
+ 'https://www.example.com/hello',
49
+ hash_including(ssl_verify_peer: false)
50
+ ).and_call_original
51
+ fetcher.get(url) do |tmp|
52
+ expect(tmp).to be_a Tempfile
53
+ expect(tmp.read).to eq 'world'
54
+ expect(tmp.content_type).to eq 'text/plain'
55
+ end
56
+ end
57
+
36
58
  it 'can #get and fallback from streaming' do
37
59
  stub_request(:get, 'https://www.example.com/hello').
38
60
  with(headers: fetcher.headers).
@@ -56,7 +78,9 @@ RSpec.describe Ollama::Utils::Fetcher do
56
78
  with(headers: fetcher.headers).
57
79
  to_return(status: 500)
58
80
  fetcher.get(url) do |tmp|
59
- expect(tmp).to be_nil
81
+ expect(tmp).to be_a StringIO
82
+ expect(tmp.read).to eq ''
83
+ expect(tmp.content_type).to eq 'text/plain'
60
84
  end
61
85
  end
62
86
 
@@ -71,4 +95,21 @@ RSpec.describe Ollama::Utils::Fetcher do
71
95
  expect(file.content_type).to eq 'application/x-ruby'
72
96
  end
73
97
  end
98
+
99
+ it 'can .execute' do
100
+ described_class.execute('echo -n hello world') do |file|
101
+ expect(file).to be_a Tempfile
102
+ expect(file.read).to eq 'hello world'
103
+ expect(file.content_type).to eq 'text/plain'
104
+ end
105
+ end
106
+
107
+ it 'can .execute and fail' do
108
+ allow(IO).to receive(:popen).and_raise StandardError
109
+ described_class.execute('foobar') do |file|
110
+ expect(file).to be_a StringIO
111
+ expect(file.read).to be_empty
112
+ expect(file.content_type).to eq 'text/plain'
113
+ end
114
+ end
74
115
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ollama-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-15 00:00:00.000000000 Z
11
+ date: 2024-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.17.1
19
+ version: 1.18.0
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: 1.17.1
26
+ version: 1.18.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: all_images
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: debug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: excon
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -276,6 +304,34 @@ dependencies:
276
304
  - - "~>"
277
305
  - !ruby/object:Gem::Version
278
306
  version: '2.0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: logger
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - "~>"
312
+ - !ruby/object:Gem::Version
313
+ version: '1.0'
314
+ type: :runtime
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - "~>"
319
+ - !ruby/object:Gem::Version
320
+ version: '1.0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: json
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - "~>"
326
+ - !ruby/object:Gem::Version
327
+ version: '2.0'
328
+ type: :runtime
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - "~>"
333
+ - !ruby/object:Gem::Version
334
+ version: '2.0'
279
335
  description: Library that allows interacting with the Ollama API
280
336
  email: flori@ping.de
281
337
  executables:
@@ -303,8 +359,10 @@ extra_rdoc_files:
303
359
  - lib/ollama/commands/show.rb
304
360
  - lib/ollama/commands/tags.rb
305
361
  - lib/ollama/documents.rb
306
- - lib/ollama/documents/memory_cache.rb
307
- - lib/ollama/documents/redis_cache.rb
362
+ - lib/ollama/documents/cache/common.rb
363
+ - lib/ollama/documents/cache/memory_cache.rb
364
+ - lib/ollama/documents/cache/redis_backed_memory_cache.rb
365
+ - lib/ollama/documents/cache/redis_cache.rb
308
366
  - lib/ollama/documents/splitters/character.rb
309
367
  - lib/ollama/documents/splitters/semantic.rb
310
368
  - lib/ollama/dto.rb
@@ -367,8 +425,10 @@ files:
367
425
  - lib/ollama/commands/show.rb
368
426
  - lib/ollama/commands/tags.rb
369
427
  - lib/ollama/documents.rb
370
- - lib/ollama/documents/memory_cache.rb
371
- - lib/ollama/documents/redis_cache.rb
428
+ - lib/ollama/documents/cache/common.rb
429
+ - lib/ollama/documents/cache/memory_cache.rb
430
+ - lib/ollama/documents/cache/redis_backed_memory_cache.rb
431
+ - lib/ollama/documents/cache/redis_cache.rb
372
432
  - lib/ollama/documents/splitters/character.rb
373
433
  - lib/ollama/documents/splitters/semantic.rb
374
434
  - lib/ollama/dto.rb
@@ -420,6 +480,7 @@ files:
420
480
  - spec/ollama/commands/show_spec.rb
421
481
  - spec/ollama/commands/tags_spec.rb
422
482
  - spec/ollama/documents/memory_cache_spec.rb
483
+ - spec/ollama/documents/redis_backed_memory_cache_spec.rb
423
484
  - spec/ollama/documents/redis_cache_spec.rb
424
485
  - spec/ollama/documents/splitters/character_spec.rb
425
486
  - spec/ollama/documents/splitters/semantic_spec.rb
@@ -486,6 +547,7 @@ test_files:
486
547
  - spec/ollama/commands/show_spec.rb
487
548
  - spec/ollama/commands/tags_spec.rb
488
549
  - spec/ollama/documents/memory_cache_spec.rb
550
+ - spec/ollama/documents/redis_backed_memory_cache_spec.rb
489
551
  - spec/ollama/documents/redis_cache_spec.rb
490
552
  - spec/ollama/documents/splitters/character_spec.rb
491
553
  - spec/ollama/documents/splitters/semantic_spec.rb