database_cleaner-redis 1.8.0 → 2.0.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: 2b28c562a0dd611490e0dba780bc50817b58cad8a8a7abc29b54e89fb2736540
4
- data.tar.gz: d7eb8549c64e317b8405a5abc40993d910adfa666e0d5010c67ebf2b547c83ac
3
+ metadata.gz: 34cf05b7cd63a56e99575e17ac1c55ac5798260b53487a96206366360a22b83b
4
+ data.tar.gz: 9bb36fddce39ba5dbfcd2737fd9cbaa9d8c87ee6991d78fc79fdef20bf19d0ea
5
5
  SHA512:
6
- metadata.gz: b75e902e4541c16b986669dfbdc2139b9b603ef214c732f3a539e3cba6fb7af6a27b6933d416eb3b4af8bd3e98d69e283c3c444385ad60a647bc5416b1face30
7
- data.tar.gz: f17eb577d40e43bc3a11f69a2b81f035346d0e102f72c8bb0eaa76a21da5798ddd0a05976ef076c39ee2658aa85977863ef87752a6f792ebb85b7c9ab0be2149
6
+ metadata.gz: dbe641bedad651831fb743459c5b8ebd53d05f2c6d8605c026056b0dfa3f763d0d52b2262bea9a007694d7e2e9ba687e27d0cb0072211bb146cbb46151474208
7
+ data.tar.gz: e546420735bbc0c804efa4768d4e9d90b21abfc6fe12a44ec67bf8ceccc557cf072f63efeaa8a0518b2f1a5b96a8b7a5f27387dcdf65b947d76c69dd070400f1
data/.gitignore CHANGED
@@ -6,6 +6,9 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /.ruby-version
10
+ /.byebug_history
11
+ /Gemfile.lock
9
12
 
10
13
  # rspec failure tracking
11
14
  .rspec_status
@@ -1,5 +1,9 @@
1
- sudo: false
2
1
  language: ruby
2
+ services:
3
+ - redis
3
4
  rvm:
4
- - 2.2.9
5
- before_install: gem install bundler -v 1.17.2
5
+ - 2.5
6
+ - 2.6
7
+ - 2.7
8
+ before_script:
9
+ - bin/setup
data/Gemfile CHANGED
@@ -1,8 +1,12 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
3
  # Specify your gem's dependencies in database_cleaner-redis.gemspec
6
4
  gemspec
7
5
 
8
- gem "database_cleaner", path: "../.."
6
+ gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
7
+ gem "byebug"
8
+
9
+ group :test do
10
+ gem "simplecov", require: false
11
+ gem "codecov", require: false
12
+ end
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/DatabaseCleaner/database_cleaner-redis.svg?branch=master)](https://travis-ci.org/DatabaseCleaner/database_cleaner-redis)
4
4
  [![Code Climate](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-redis/badges/gpa.svg)](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-redis)
5
+ [![codecov](https://codecov.io/gh/DatabaseCleaner/database_cleaner-redis/branch/master/graph/badge.svg)](https://codecov.io/gh/DatabaseCleaner/database_cleaner-redis)
5
6
 
6
7
  Clean your Redis databases with Database Cleaner.
7
8
 
@@ -18,42 +19,35 @@ end
18
19
 
19
20
  ## Supported Strategies
20
21
 
21
- <table>
22
- <tbody>
23
- <tr>
24
- <th>Truncation</th>
25
- <th>Transaction</th>
26
- <th>Deletion</th>
27
- </tr>
28
- <tr>
29
- <td> <b>Yes</b></td>
30
- <td> No</td>
31
- <td> No</td>
32
- </tr>
33
- </tbody>
34
- </table>
35
-
36
- (Default strategy is denoted in bold)
37
-
38
- ## Configuration options
39
-
40
- `:only` and `:except` take a list of strings to be passed to [`keys`](https://redis.io/commands/keys)).
41
-
42
- <table>
43
- <tbody>
44
- <tr>
45
- <th>ORM</th>
46
- <th>How to access</th>
47
- <th>Notes</th>
48
- </tr>
49
- <tr>
50
- <td>Redis</td>
51
- <td><code>DatabaseCleaner[:redis]</code></td>
52
- <td>Connection specified as Redis URI</td>
53
- </tr>
54
- </tbody>
55
- </table>
22
+ The redis adapter only has one strategy: the deletion strategy.
23
+
24
+ ## Strategy configuration options
25
+
26
+ `:only` and `:except` may take a list of strings to be passed to [`keys`](https://redis.io/commands/keys)):
27
+
28
+ ```ruby
29
+ # Only delete the "users" key, and keys that start with "cache".
30
+ DatabaseCleaner[:redis].strategy = :deletion, { only: ["users", "cache*"] }
31
+
32
+ # Delete all keys except the "users" key.
33
+ DatabaseCleaner[:redis].strategy = :deletion, { except: ["users"] }
34
+ ```
35
+
36
+ ## Adapter configuration options
37
+
38
+ `#db` defaults to `Redis.new`, but can be specified manually in a few ways:
39
+
40
+ ```ruby
41
+ # Redis URI string:
42
+ DatabaseCleaner[:redis].db = "redis://localhost:6379/0"
43
+
44
+ # Redis connection object:
45
+ DatabaseCleaner[:redis].db = Redis.new(url: "redis://localhost:6379/0")
46
+
47
+ # Back to default:
48
+ DatabaseCleaner[:redis].db = :default
49
+ ```
56
50
 
57
51
  ## COPYRIGHT
58
52
 
59
- See [LICENSE] for details.
53
+ See [LICENSE](LICENSE) for details.
@@ -1,12 +1,9 @@
1
-
2
- lib = File.expand_path("../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "database_cleaner/redis/version"
1
+ require_relative "./lib/database_cleaner/redis/version"
5
2
 
6
3
  Gem::Specification.new do |spec|
7
4
  spec.name = "database_cleaner-redis"
8
5
  spec.version = DatabaseCleaner::Redis::VERSION
9
- spec.authors = ["Ernesto Tagwerker"]
6
+ spec.authors = ["Ernesto Tagwerker", "Micah Geisel"]
10
7
  spec.email = ["ernesto@ombulabs.com"]
11
8
 
12
9
  spec.summary = "Strategies for cleaning databases using Redis. Can be used to ensure a clean state for testing."
@@ -21,10 +18,10 @@ Gem::Specification.new do |spec|
21
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
19
  spec.require_paths = ["lib"]
23
20
 
24
- spec.add_dependency "database_cleaner", "~> 1.8.0"
21
+ spec.add_dependency "database_cleaner-core", "~>2.0.0"
25
22
  spec.add_dependency "redis"
26
23
 
27
- spec.add_development_dependency "bundler", "~> 1.16"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "bundler"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec"
30
27
  end
@@ -1,4 +1,5 @@
1
1
  require "database_cleaner/redis/version"
2
- require "database_cleaner"
3
- require "database_cleaner/redis/truncation"
2
+ require "database_cleaner/core"
3
+ require "database_cleaner/redis/deletion"
4
4
 
5
+ DatabaseCleaner[:redis].strategy = :deletion
@@ -0,0 +1,49 @@
1
+ require "database_cleaner/strategy"
2
+
3
+ module DatabaseCleaner
4
+ module Redis
5
+ class Deletion < Strategy
6
+ def initialize only: [], except: []
7
+ @only = only
8
+ @except = except
9
+ end
10
+
11
+ def clean
12
+ if @only.none? && @except.none?
13
+ connection.flushdb
14
+ else
15
+ keys_to_delete.each do |key|
16
+ connection.del key
17
+ end
18
+ end
19
+
20
+ connection.quit unless db == :default
21
+ end
22
+
23
+ private
24
+
25
+ def keys_to_delete
26
+ only = expand_keys(@only)
27
+ except = expand_keys(@except)
28
+ only = connection.keys if only.none?
29
+ (only - except)
30
+ end
31
+
32
+ def expand_keys keys
33
+ keys.flat_map { |key| connection.keys(key) }
34
+ end
35
+
36
+ def connection
37
+ @connection ||= begin
38
+ if db == :default
39
+ ::Redis.new
40
+ elsif db.is_a?(::Redis) # pass directly the connection
41
+ db
42
+ else
43
+ ::Redis.new(url: db)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,5 +1,5 @@
1
1
  module DatabaseCleaner
2
2
  module Redis
3
- VERSION = "1.8.0"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,29 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_cleaner-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernesto Tagwerker
8
+ - Micah Geisel
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2020-01-30 00:00:00.000000000 Z
12
+ date: 2021-01-31 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: database_cleaner
15
+ name: database_cleaner-core
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: 1.8.0
20
+ version: 2.0.0
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: 1.8.0
27
+ version: 2.0.0
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: redis
29
30
  requirement: !ruby/object:Gem::Requirement
@@ -42,44 +43,44 @@ dependencies:
42
43
  name: bundler
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
- - - "~>"
46
+ - - ">="
46
47
  - !ruby/object:Gem::Version
47
- version: '1.16'
48
+ version: '0'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
- - - "~>"
53
+ - - ">="
53
54
  - !ruby/object:Gem::Version
54
- version: '1.16'
55
+ version: '0'
55
56
  - !ruby/object:Gem::Dependency
56
57
  name: rake
57
58
  requirement: !ruby/object:Gem::Requirement
58
59
  requirements:
59
- - - "~>"
60
+ - - ">="
60
61
  - !ruby/object:Gem::Version
61
- version: '10.0'
62
+ version: '0'
62
63
  type: :development
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
- - - "~>"
67
+ - - ">="
67
68
  - !ruby/object:Gem::Version
68
- version: '10.0'
69
+ version: '0'
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: rspec
71
72
  requirement: !ruby/object:Gem::Requirement
72
73
  requirements:
73
- - - "~>"
74
+ - - ">="
74
75
  - !ruby/object:Gem::Version
75
- version: '3.0'
76
+ version: '0'
76
77
  type: :development
77
78
  prerelease: false
78
79
  version_requirements: !ruby/object:Gem::Requirement
79
80
  requirements:
80
- - - "~>"
81
+ - - ">="
81
82
  - !ruby/object:Gem::Version
82
- version: '3.0'
83
+ version: '0'
83
84
  description: Strategies for cleaning databases using Redis. Can be used to ensure
84
85
  a clean state for testing.
85
86
  email:
@@ -92,7 +93,6 @@ files:
92
93
  - ".rspec"
93
94
  - ".travis.yml"
94
95
  - Gemfile
95
- - Gemfile.lock
96
96
  - LICENSE.txt
97
97
  - README.md
98
98
  - Rakefile
@@ -101,8 +101,7 @@ files:
101
101
  - database_cleaner-redis.gemspec
102
102
  - lib/database_cleaner-redis.rb
103
103
  - lib/database_cleaner/redis.rb
104
- - lib/database_cleaner/redis/base.rb
105
- - lib/database_cleaner/redis/truncation.rb
104
+ - lib/database_cleaner/redis/deletion.rb
106
105
  - lib/database_cleaner/redis/version.rb
107
106
  homepage: https://github.com/DatabaseCleaner/database_cleaner-redis
108
107
  licenses:
@@ -123,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
122
  - !ruby/object:Gem::Version
124
123
  version: '0'
125
124
  requirements: []
126
- rubygems_version: 3.0.4
125
+ rubygems_version: 3.0.3
127
126
  signing_key:
128
127
  specification_version: 4
129
128
  summary: Strategies for cleaning databases using Redis. Can be used to ensure a clean
@@ -1,44 +0,0 @@
1
- PATH
2
- remote: ../..
3
- specs:
4
- database_cleaner (1.8.0)
5
-
6
- PATH
7
- remote: .
8
- specs:
9
- database_cleaner-redis (1.8.0)
10
- database_cleaner (~> 1.8.0)
11
- redis
12
-
13
- GEM
14
- remote: https://rubygems.org/
15
- specs:
16
- diff-lcs (1.3)
17
- rake (10.4.2)
18
- redis (4.1.1)
19
- rspec (3.7.0)
20
- rspec-core (~> 3.7.0)
21
- rspec-expectations (~> 3.7.0)
22
- rspec-mocks (~> 3.7.0)
23
- rspec-core (3.7.1)
24
- rspec-support (~> 3.7.0)
25
- rspec-expectations (3.7.0)
26
- diff-lcs (>= 1.2.0, < 2.0)
27
- rspec-support (~> 3.7.0)
28
- rspec-mocks (3.7.0)
29
- diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.7.0)
31
- rspec-support (3.7.1)
32
-
33
- PLATFORMS
34
- ruby
35
-
36
- DEPENDENCIES
37
- bundler (~> 1.16)
38
- database_cleaner!
39
- database_cleaner-redis!
40
- rake (~> 10.0)
41
- rspec (~> 3.0)
42
-
43
- BUNDLED WITH
44
- 1.17.3
@@ -1,41 +0,0 @@
1
- require 'database_cleaner/generic/base'
2
-
3
- module DatabaseCleaner
4
- module Redis
5
- def self.available_strategies
6
- %w{truncation}
7
- end
8
-
9
- def self.default_strategy
10
- :truncation
11
- end
12
-
13
- module Base
14
- include ::DatabaseCleaner::Generic::Base
15
-
16
- def db=(desired_db)
17
- @db = desired_db
18
- end
19
-
20
- def db
21
- @db ||= :default
22
- end
23
-
24
- alias url db
25
-
26
- private
27
-
28
- def connection
29
- @connection ||= begin
30
- if url == :default
31
- ::Redis.new
32
- elsif db.is_a?(::Redis) # pass directly the connection
33
- db
34
- else
35
- ::Redis.new(:url => url)
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,26 +0,0 @@
1
- require 'database_cleaner/redis/base'
2
- require 'database_cleaner/generic/truncation'
3
-
4
- module DatabaseCleaner
5
- module Redis
6
- class Truncation
7
- include ::DatabaseCleaner::Redis::Base
8
- include ::DatabaseCleaner::Generic::Truncation
9
-
10
- def clean
11
- if @only
12
- @only.each do |term|
13
- connection.keys(term).each { |k| connection.del k }
14
- end
15
- elsif @tables_to_exclude
16
- keys_except = []
17
- @tables_to_exclude.each { |term| keys_except += connection.keys(term) }
18
- connection.keys.each { |k| connection.del(k) unless keys_except.include?(k) }
19
- else
20
- connection.flushdb
21
- end
22
- connection.quit unless url == :default
23
- end
24
- end
25
- end
26
- end