database_cleaner-redis 2.0.0.beta → 2.0.0.beta2
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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +0 -3
- data/Gemfile +7 -3
- data/README.md +30 -36
- data/database_cleaner-redis.gemspec +2 -4
- data/lib/database_cleaner/redis.rb +2 -2
- data/lib/database_cleaner/redis/deletion.rb +49 -0
- data/lib/database_cleaner/redis/version.rb +1 -1
- metadata +8 -9
- data/lib/database_cleaner/redis/base.rb +0 -41
- data/lib/database_cleaner/redis/truncation.rb +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e57c55915775c00cb979bb25726ebd472283ba74a07105ba86f17edac83a8859
|
4
|
+
data.tar.gz: 9a182760c2b5dcf189cdaa02fc69e38d35585cf2ce7ba82cfa2d1152122d24dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ff34beb34ea834090011c065ee51a25c128b1f6156d0e3c3d4b3bf9162a4448d459c5450125364534dffc60309c85ab4f73e9f17032b2de1e5a345e8131b76c
|
7
|
+
data.tar.gz: f8156d6e26c5d1e8172952de3bbdbbb8ed2734fc6ae296ac25ce1707d9171db5deeed3d5c22a0f1cd1470335418429cb2e9093f56ac267ce6bbab5cfe67480a5
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
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-core",
|
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
|
[](https://travis-ci.org/DatabaseCleaner/database_cleaner-redis)
|
4
4
|
[](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-redis)
|
5
|
+
[](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
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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,6 +1,4 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require "database_cleaner/redis/version"
|
1
|
+
require_relative "./lib/database_cleaner/redis/version"
|
4
2
|
|
5
3
|
Gem::Specification.new do |spec|
|
6
4
|
spec.name = "database_cleaner-redis"
|
@@ -20,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
20
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
19
|
spec.require_paths = ["lib"]
|
22
20
|
|
23
|
-
spec.add_dependency "database_cleaner-core", "2.0.0.
|
21
|
+
spec.add_dependency "database_cleaner-core", "~>2.0.0.beta2"
|
24
22
|
spec.add_dependency "redis"
|
25
23
|
|
26
24
|
spec.add_development_dependency "bundler"
|
@@ -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
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_cleaner-redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ernesto Tagwerker
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-05-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: database_cleaner-core
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 2.0.0.
|
20
|
+
version: 2.0.0.beta2
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 2.0.0.
|
27
|
+
version: 2.0.0.beta2
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: redis
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -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/
|
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: 1.3.1
|
125
124
|
requirements: []
|
126
|
-
rubygems_version: 3.0.
|
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,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
|