database_cleaner-redis 2.0.0.beta → 2.0.0.beta2

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: 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