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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb582bc2a161c4adbcc008b830dbc9112fb170b65b530d578a576017f8260bb5
4
- data.tar.gz: a5d145f3f98b3ae1460f03f9c693c457884fc322c903d9965b40ec35b303db69
3
+ metadata.gz: e57c55915775c00cb979bb25726ebd472283ba74a07105ba86f17edac83a8859
4
+ data.tar.gz: 9a182760c2b5dcf189cdaa02fc69e38d35585cf2ce7ba82cfa2d1152122d24dc
5
5
  SHA512:
6
- metadata.gz: 239c6585fd56cf54c621f03d092d7a7b6a7d4382aa1db0c06d4285c3067308d3246b2f3a90f39fbf222fd390fc6ef679c14f6335eba8c47df562e1d8add75024
7
- data.tar.gz: acac073d089209d26cf047ac4fb266d829e453d6d1db019f06cf5bf53131e53164342ac8b8aff2a765ba651d805bed69dc184de5bb8d5a3714990da05c1a9343
6
+ metadata.gz: 4ff34beb34ea834090011c065ee51a25c128b1f6156d0e3c3d4b3bf9162a4448d459c5450125364534dffc60309c85ab4f73e9f17032b2de1e5a345e8131b76c
7
+ data.tar.gz: f8156d6e26c5d1e8172952de3bbdbbb8ed2734fc6ae296ac25ce1707d9171db5deeed3d5c22a0f1cd1470335418429cb2e9093f56ac267ce6bbab5cfe67480a5
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /.ruby-version
10
+ /.byebug_history
10
11
  /Gemfile.lock
11
12
 
12
13
  # rspec failure tracking
@@ -2,11 +2,8 @@ language: ruby
2
2
  services:
3
3
  - redis
4
4
  rvm:
5
- - 2.4
6
5
  - 2.5
7
6
  - 2.6
8
7
  - 2.7
9
- before_install:
10
- - gem install bundler -v 1.17.3
11
8
  before_script:
12
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-core", github: "DatabaseCleaner/database_cleaner", branch: "master"
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,6 +1,4 @@
1
- lib = File.expand_path("../lib", __FILE__)
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.beta"
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"
@@ -1,5 +1,5 @@
1
1
  require "database_cleaner/redis/version"
2
2
  require "database_cleaner/core"
3
- require "database_cleaner/redis/truncation"
3
+ require "database_cleaner/redis/deletion"
4
4
 
5
- DatabaseCleaner[:redis].strategy = :truncation
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 = "2.0.0.beta"
3
+ VERSION = "2.0.0.beta2"
4
4
  end
5
5
  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.beta
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-04-05 00:00:00.000000000 Z
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.beta
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.beta
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/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: 1.3.1
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,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