database_cleaner-redis 1.8.0 → 2.0.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: 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