database_cleaner-mongoid 1.99.0 → 2.0.0.beta
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 +5 -0
- data/.travis.yml +22 -3
- data/Appraisals +20 -0
- data/Gemfile +8 -4
- data/README.md +32 -34
- data/database_cleaner-mongoid.gemspec +7 -9
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/mongoid3.gemfile +14 -0
- data/gemfiles/mongoid4.gemfile +14 -0
- data/gemfiles/mongoid5.gemfile +14 -0
- data/gemfiles/mongoid6.gemfile +14 -0
- data/gemfiles/mongoid7.gemfile +14 -0
- data/lib/database_cleaner/mongoid.rb +2 -8
- data/lib/database_cleaner/mongoid/deletion.rb +24 -4
- data/lib/database_cleaner/mongoid/mongoid4_mixin.rb +30 -0
- data/lib/database_cleaner/mongoid/mongoid5_mixin.rb +27 -0
- data/lib/database_cleaner/mongoid/version.rb +1 -1
- metadata +44 -26
- data/Gemfile.lock +0 -71
- data/lib/database_cleaner/mongoid/base.rb +0 -20
- data/lib/database_cleaner/mongoid/mongo1_truncation_mixin.rb +0 -26
- data/lib/database_cleaner/mongoid/mongo2_truncation_mixin.rb +0 -38
- data/lib/database_cleaner/mongoid/mongoid_truncation_mixin.rb +0 -65
- data/lib/database_cleaner/mongoid/truncation.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09908dd4379c7eb6ef73067bb7a72484ab2379d9288e1e558821a3c4ae406c9f'
|
4
|
+
data.tar.gz: 011f27269025764bace1cd0bfef74176a29b52de47f6f4b4988399ba7d5e91b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e6e33f65c3f86b087241cc7c2a7658d15ccc89c67238698edfb27019cf54831c52b9f8398c44c74a2fae247b616222e95417a2756c33eb1e9249a83675990b4
|
7
|
+
data.tar.gz: 4867085a9058304a4e9f797228e9c8b02fdfd7eeaeda121fe74dbd4efc4284c76d152af322d88127d840b5701be0df0f851f4c48d264a89b73272073f9ebc64c
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,5 +1,24 @@
|
|
1
|
-
|
2
1
|
language: ruby
|
2
|
+
services:
|
3
|
+
- mongodb
|
3
4
|
rvm:
|
4
|
-
- 2.
|
5
|
-
|
5
|
+
- 2.5
|
6
|
+
- 2.6
|
7
|
+
- 2.7
|
8
|
+
gemfile:
|
9
|
+
- gemfiles/mongoid3.gemfile
|
10
|
+
- gemfiles/mongoid4.gemfile
|
11
|
+
- gemfiles/mongoid5.gemfile
|
12
|
+
- gemfiles/mongoid6.gemfile
|
13
|
+
- gemfiles/mongoid7.gemfile
|
14
|
+
jobs:
|
15
|
+
exclude:
|
16
|
+
# mongoid3-5 incompatible with BigDecimal changes in 2.7, it seems?
|
17
|
+
- rvm: 2.7
|
18
|
+
gemfile: gemfiles/mongoid3.gemfile
|
19
|
+
- rvm: 2.7
|
20
|
+
gemfile: gemfiles/mongoid4.gemfile
|
21
|
+
- rvm: 2.7
|
22
|
+
gemfile: gemfiles/mongoid5.gemfile
|
23
|
+
before_script:
|
24
|
+
- bin/setup
|
data/Appraisals
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
appraise "mongoid3" do
|
2
|
+
gem "mongoid", "~>3.0"
|
3
|
+
end
|
4
|
+
|
5
|
+
appraise "mongoid4" do
|
6
|
+
gem "mongoid", "~>4.0"
|
7
|
+
end
|
8
|
+
|
9
|
+
appraise "mongoid5" do
|
10
|
+
gem "mongoid", "~>5.0"
|
11
|
+
end
|
12
|
+
|
13
|
+
appraise "mongoid6" do
|
14
|
+
gem "mongoid", "~>6.0"
|
15
|
+
end
|
16
|
+
|
17
|
+
appraise "mongoid7" do
|
18
|
+
gem "mongoid", "~>7.0"
|
19
|
+
end
|
20
|
+
|
data/Gemfile
CHANGED
@@ -1,9 +1,13 @@
|
|
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-mongoid.gemspec
|
6
4
|
gemspec
|
7
5
|
|
8
|
-
gem "database_cleaner",
|
9
|
-
|
6
|
+
gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
|
7
|
+
|
8
|
+
gem "byebug"
|
9
|
+
|
10
|
+
group :test do
|
11
|
+
gem "simplecov", require: false
|
12
|
+
gem "codecov", require: false
|
13
|
+
end
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/DatabaseCleaner/database_cleaner-mongoid)
|
4
4
|
[](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-mongoid)
|
5
|
+
[](https://codecov.io/gh/DatabaseCleaner/database_cleaner-mongoid)
|
5
6
|
|
6
7
|
Clean your Mongoid databases with Database Cleaner.
|
7
8
|
|
@@ -18,40 +19,37 @@ 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
|
-
|
50
|
-
|
51
|
-
</tr>
|
52
|
-
</tbody>
|
53
|
-
</table>
|
22
|
+
The mongoid adapter only has one strategy: the deletion strategy.
|
23
|
+
|
24
|
+
## Strategy configuration options
|
25
|
+
|
26
|
+
`:only` and `:except` may take a list of collection names:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
# Only delete the "users" collection.
|
30
|
+
DatabaseCleaner[:mongoid].strategy = :deletion, { only: ["users"] }
|
31
|
+
|
32
|
+
# Delete all collections except the "users" collection.
|
33
|
+
DatabaseCleaner[:mongoid].strategy = :deletion, { except: ["users"] }
|
34
|
+
```
|
35
|
+
|
36
|
+
## Adapter configuration options
|
37
|
+
|
38
|
+
`#db` defaults to the default Mongoid database, but can be specified manually in a few ways:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
# Redis URI string:
|
42
|
+
DatabaseCleaner[:mongoid].db = :logs
|
43
|
+
|
44
|
+
# Back to default:
|
45
|
+
DatabaseCleaner[:mongoid].db = :default
|
46
|
+
|
47
|
+
# Multiple Mongoid databases can be specified:
|
48
|
+
DatabaseCleaner[:mongoid, connection: :default]
|
49
|
+
DatabaseCleaner[:mongoid, connection: :shard_1]
|
50
|
+
DatabaseCleaner[:mongoid, connection: :shard_2]
|
51
|
+
```
|
54
52
|
|
55
53
|
## COPYRIGHT
|
56
54
|
|
57
|
-
See [LICENSE] for details.
|
55
|
+
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/mongoid/version"
|
1
|
+
require_relative "./lib/database_cleaner/mongoid/version"
|
5
2
|
|
6
3
|
Gem::Specification.new do |spec|
|
7
4
|
spec.name = "database_cleaner-mongoid"
|
8
5
|
spec.version = DatabaseCleaner::Mongoid::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 Mongoid. Can be used to ensure a clean state for testing."
|
@@ -21,10 +18,11 @@ 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", "~>
|
21
|
+
spec.add_dependency "database_cleaner-core", "~>2.0.0.beta2"
|
25
22
|
spec.add_dependency "mongoid"
|
26
23
|
|
27
|
-
spec.add_development_dependency "bundler"
|
28
|
-
spec.add_development_dependency "
|
29
|
-
spec.add_development_dependency "
|
24
|
+
spec.add_development_dependency "bundler"
|
25
|
+
spec.add_development_dependency "appraisal"
|
26
|
+
spec.add_development_dependency "rake"
|
27
|
+
spec.add_development_dependency "rspec"
|
30
28
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
|
6
|
+
gem "byebug"
|
7
|
+
gem "mongoid", "~>3.0"
|
8
|
+
|
9
|
+
group :test do
|
10
|
+
gem "simplecov", require: false
|
11
|
+
gem "codecov", require: false
|
12
|
+
end
|
13
|
+
|
14
|
+
gemspec path: "../"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
|
6
|
+
gem "byebug"
|
7
|
+
gem "mongoid", "~>4.0"
|
8
|
+
|
9
|
+
group :test do
|
10
|
+
gem "simplecov", require: false
|
11
|
+
gem "codecov", require: false
|
12
|
+
end
|
13
|
+
|
14
|
+
gemspec path: "../"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
|
6
|
+
gem "byebug"
|
7
|
+
gem "mongoid", "~>5.0"
|
8
|
+
|
9
|
+
group :test do
|
10
|
+
gem "simplecov", require: false
|
11
|
+
gem "codecov", require: false
|
12
|
+
end
|
13
|
+
|
14
|
+
gemspec path: "../"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
|
6
|
+
gem "byebug"
|
7
|
+
gem "mongoid", "~>6.0"
|
8
|
+
|
9
|
+
group :test do
|
10
|
+
gem "simplecov", require: false
|
11
|
+
gem "codecov", require: false
|
12
|
+
end
|
13
|
+
|
14
|
+
gemspec path: "../"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
|
6
|
+
gem "byebug"
|
7
|
+
gem "mongoid", "~>7.0"
|
8
|
+
|
9
|
+
group :test do
|
10
|
+
gem "simplecov", require: false
|
11
|
+
gem "codecov", require: false
|
12
|
+
end
|
13
|
+
|
14
|
+
gemspec path: "../"
|
@@ -1,11 +1,5 @@
|
|
1
1
|
require "database_cleaner/mongoid/version"
|
2
|
-
require "database_cleaner"
|
3
|
-
require "database_cleaner/mongoid/truncation"
|
2
|
+
require "database_cleaner/core"
|
4
3
|
require "database_cleaner/mongoid/deletion"
|
5
4
|
|
6
|
-
|
7
|
-
def self.default_strategy
|
8
|
-
:truncation
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
5
|
+
DatabaseCleaner[:mongoid].strategy = :deletion
|
@@ -1,10 +1,30 @@
|
|
1
|
-
require 'database_cleaner/
|
1
|
+
require 'database_cleaner/strategy'
|
2
|
+
require 'database_cleaner/mongoid/mongoid4_mixin'
|
3
|
+
require 'database_cleaner/mongoid/mongoid5_mixin'
|
4
|
+
require 'mongoid/version'
|
2
5
|
|
3
6
|
module DatabaseCleaner
|
4
7
|
module Mongoid
|
5
|
-
class Deletion <
|
8
|
+
class Deletion < Strategy
|
9
|
+
def initialize only: [], except: []
|
10
|
+
@only = only
|
11
|
+
@except = except
|
12
|
+
end
|
13
|
+
|
14
|
+
if ::Mongoid::VERSION < '5'
|
15
|
+
include ::DatabaseCleaner::Mongoid::Mongoid4Mixin
|
16
|
+
else
|
17
|
+
include ::DatabaseCleaner::Mongoid::Mongoid5Mixin
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def collections_to_delete
|
23
|
+
only = @only.any? ? @only : collections
|
24
|
+
(only - @except).map do |name|
|
25
|
+
database[name].find
|
26
|
+
end
|
27
|
+
end
|
6
28
|
end
|
7
29
|
end
|
8
30
|
end
|
9
|
-
|
10
|
-
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module DatabaseCleaner
|
2
|
+
module Mongoid
|
3
|
+
module Mongoid4Mixin
|
4
|
+
def clean
|
5
|
+
collections_to_delete.each(&:remove_all)
|
6
|
+
wait_for_removals_to_finish
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def database
|
12
|
+
::Mongoid.default_session
|
13
|
+
end
|
14
|
+
|
15
|
+
def collections
|
16
|
+
if db != :default
|
17
|
+
database.use(db)
|
18
|
+
end
|
19
|
+
|
20
|
+
database.command(listCollections: 1, filter: { 'name' => { '$not' => /.?system\.|\$/ } })['cursor']['firstBatch'].map do |collection|
|
21
|
+
collection['name']
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def wait_for_removals_to_finish
|
26
|
+
database.command(getlasterror: 1)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module DatabaseCleaner
|
2
|
+
module Mongoid
|
3
|
+
module Mongoid5Mixin
|
4
|
+
def clean
|
5
|
+
collections_to_delete.each(&:delete_many)
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def database
|
11
|
+
if @db.nil? || @db == :default
|
12
|
+
::Mongoid::Clients.default
|
13
|
+
else
|
14
|
+
::Mongoid::Clients.with_name(@db)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def collections
|
19
|
+
if db != :default
|
20
|
+
database.use(db)
|
21
|
+
end
|
22
|
+
|
23
|
+
database.collections.collect { |c| c.namespace.split('.',2)[1] }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_cleaner-mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.beta
|
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:
|
12
|
+
date: 2020-05-30 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:
|
20
|
+
version: 2.0.0.beta2
|
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:
|
27
|
+
version: 2.0.0.beta2
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: mongoid
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,44 +43,58 @@ 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: '
|
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: '
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: appraisal
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
55
70
|
- !ruby/object:Gem::Dependency
|
56
71
|
name: rake
|
57
72
|
requirement: !ruby/object:Gem::Requirement
|
58
73
|
requirements:
|
59
|
-
- - "
|
74
|
+
- - ">="
|
60
75
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
76
|
+
version: '0'
|
62
77
|
type: :development
|
63
78
|
prerelease: false
|
64
79
|
version_requirements: !ruby/object:Gem::Requirement
|
65
80
|
requirements:
|
66
|
-
- - "
|
81
|
+
- - ">="
|
67
82
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
83
|
+
version: '0'
|
69
84
|
- !ruby/object:Gem::Dependency
|
70
85
|
name: rspec
|
71
86
|
requirement: !ruby/object:Gem::Requirement
|
72
87
|
requirements:
|
73
|
-
- - "
|
88
|
+
- - ">="
|
74
89
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
90
|
+
version: '0'
|
76
91
|
type: :development
|
77
92
|
prerelease: false
|
78
93
|
version_requirements: !ruby/object:Gem::Requirement
|
79
94
|
requirements:
|
80
|
-
- - "
|
95
|
+
- - ">="
|
81
96
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
97
|
+
version: '0'
|
83
98
|
description: Strategies for cleaning databases using Mongoid. Can be used to ensure
|
84
99
|
a clean state for testing.
|
85
100
|
email:
|
@@ -91,22 +106,25 @@ files:
|
|
91
106
|
- ".gitignore"
|
92
107
|
- ".rspec"
|
93
108
|
- ".travis.yml"
|
109
|
+
- Appraisals
|
94
110
|
- Gemfile
|
95
|
-
- Gemfile.lock
|
96
111
|
- LICENSE.txt
|
97
112
|
- README.md
|
98
113
|
- Rakefile
|
99
114
|
- bin/console
|
100
115
|
- bin/setup
|
101
116
|
- database_cleaner-mongoid.gemspec
|
117
|
+
- gemfiles/.bundle/config
|
118
|
+
- gemfiles/mongoid3.gemfile
|
119
|
+
- gemfiles/mongoid4.gemfile
|
120
|
+
- gemfiles/mongoid5.gemfile
|
121
|
+
- gemfiles/mongoid6.gemfile
|
122
|
+
- gemfiles/mongoid7.gemfile
|
102
123
|
- lib/database_cleaner-mongoid.rb
|
103
124
|
- lib/database_cleaner/mongoid.rb
|
104
|
-
- lib/database_cleaner/mongoid/base.rb
|
105
125
|
- lib/database_cleaner/mongoid/deletion.rb
|
106
|
-
- lib/database_cleaner/mongoid/
|
107
|
-
- lib/database_cleaner/mongoid/
|
108
|
-
- lib/database_cleaner/mongoid/mongoid_truncation_mixin.rb
|
109
|
-
- lib/database_cleaner/mongoid/truncation.rb
|
126
|
+
- lib/database_cleaner/mongoid/mongoid4_mixin.rb
|
127
|
+
- lib/database_cleaner/mongoid/mongoid5_mixin.rb
|
110
128
|
- lib/database_cleaner/mongoid/version.rb
|
111
129
|
homepage: https://github.com/DatabaseCleaner/database_cleaner-mongoid
|
112
130
|
licenses:
|
@@ -123,11 +141,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
141
|
version: '0'
|
124
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
143
|
requirements:
|
126
|
-
- - "
|
144
|
+
- - ">"
|
127
145
|
- !ruby/object:Gem::Version
|
128
|
-
version:
|
146
|
+
version: 1.3.1
|
129
147
|
requirements: []
|
130
|
-
rubygems_version: 3.0.
|
148
|
+
rubygems_version: 3.0.3
|
131
149
|
signing_key:
|
132
150
|
specification_version: 4
|
133
151
|
summary: Strategies for cleaning databases using Mongoid. Can be used to ensure a
|
data/Gemfile.lock
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ../..
|
3
|
-
specs:
|
4
|
-
database_cleaner (1.99.0)
|
5
|
-
|
6
|
-
PATH
|
7
|
-
remote: ..
|
8
|
-
specs:
|
9
|
-
database_cleaner-mongo (1.99.0)
|
10
|
-
database_cleaner (~> 1.99.0)
|
11
|
-
mongo
|
12
|
-
|
13
|
-
PATH
|
14
|
-
remote: .
|
15
|
-
specs:
|
16
|
-
database_cleaner-mongoid (1.99.0)
|
17
|
-
database_cleaner (~> 1.99.0)
|
18
|
-
mongoid
|
19
|
-
|
20
|
-
GEM
|
21
|
-
remote: https://rubygems.org/
|
22
|
-
specs:
|
23
|
-
activemodel (5.2.4.3)
|
24
|
-
activesupport (= 5.2.4.3)
|
25
|
-
activesupport (5.2.4.3)
|
26
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
27
|
-
i18n (>= 0.7, < 2)
|
28
|
-
minitest (~> 5.1)
|
29
|
-
tzinfo (~> 1.1)
|
30
|
-
bson (4.5.0)
|
31
|
-
concurrent-ruby (1.1.6)
|
32
|
-
diff-lcs (1.3)
|
33
|
-
i18n (1.5.1)
|
34
|
-
concurrent-ruby (~> 1.0)
|
35
|
-
minitest (5.14.1)
|
36
|
-
mongo (2.10.2)
|
37
|
-
bson (>= 4.4.2, < 5.0.0)
|
38
|
-
mongoid (7.0.7)
|
39
|
-
activemodel (>= 5.1, < 6.1)
|
40
|
-
mongo (>= 2.7.0, < 3.0.0)
|
41
|
-
rake (10.4.2)
|
42
|
-
rspec (3.7.0)
|
43
|
-
rspec-core (~> 3.7.0)
|
44
|
-
rspec-expectations (~> 3.7.0)
|
45
|
-
rspec-mocks (~> 3.7.0)
|
46
|
-
rspec-core (3.7.1)
|
47
|
-
rspec-support (~> 3.7.0)
|
48
|
-
rspec-expectations (3.7.0)
|
49
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
50
|
-
rspec-support (~> 3.7.0)
|
51
|
-
rspec-mocks (3.7.0)
|
52
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
53
|
-
rspec-support (~> 3.7.0)
|
54
|
-
rspec-support (3.7.1)
|
55
|
-
thread_safe (0.3.6)
|
56
|
-
tzinfo (1.2.7)
|
57
|
-
thread_safe (~> 0.1)
|
58
|
-
|
59
|
-
PLATFORMS
|
60
|
-
ruby
|
61
|
-
|
62
|
-
DEPENDENCIES
|
63
|
-
bundler (~> 1.16)
|
64
|
-
database_cleaner!
|
65
|
-
database_cleaner-mongo!
|
66
|
-
database_cleaner-mongoid!
|
67
|
-
rake (~> 10.0)
|
68
|
-
rspec (~> 3.0)
|
69
|
-
|
70
|
-
BUNDLED WITH
|
71
|
-
1.17.3
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'database_cleaner/generic/base'
|
2
|
-
module DatabaseCleaner
|
3
|
-
module Mongoid
|
4
|
-
def self.available_strategies
|
5
|
-
%w[truncation deletion]
|
6
|
-
end
|
7
|
-
|
8
|
-
module Base
|
9
|
-
include ::DatabaseCleaner::Generic::Base
|
10
|
-
|
11
|
-
def db=(desired_db)
|
12
|
-
@db = desired_db
|
13
|
-
end
|
14
|
-
|
15
|
-
def db
|
16
|
-
@db || :default
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module DatabaseCleaner
|
2
|
-
module Mongoid
|
3
|
-
module Mongo1TruncationMixin
|
4
|
-
def clean
|
5
|
-
if @only
|
6
|
-
collections.each { |c| c.send(truncate_method_name) if @only.include?(c.name) }
|
7
|
-
else
|
8
|
-
collections.each { |c| c.send(truncate_method_name) unless @tables_to_exclude.include?(c.name) }
|
9
|
-
end
|
10
|
-
true
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def collections
|
16
|
-
database.collections.select { |c| c.name !~ /^system\./ }
|
17
|
-
end
|
18
|
-
|
19
|
-
def truncate_method_name
|
20
|
-
# This constant only exists in the 2.x series.
|
21
|
-
defined?(::Mongo::VERSION) ? :delete_many : :remove
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module DatabaseCleaner
|
2
|
-
module Mongoid
|
3
|
-
module Mongo2TruncationMixin
|
4
|
-
def clean
|
5
|
-
if @only
|
6
|
-
collections.each { |c| database[c].find.delete_many if @only.include?(c) }
|
7
|
-
else
|
8
|
-
collections.each { |c| database[c].find.delete_many unless @tables_to_exclude.include?(c) }
|
9
|
-
end
|
10
|
-
true
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def database
|
16
|
-
if @db.nil? || @db == :default
|
17
|
-
::Mongoid::Clients.default
|
18
|
-
else
|
19
|
-
::Mongoid::Clients.with_name(@db)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def collections
|
24
|
-
if db != :default
|
25
|
-
database.use(db)
|
26
|
-
end
|
27
|
-
|
28
|
-
database.collections.collect { |c| c.namespace.split('.',2)[1] }
|
29
|
-
|
30
|
-
# database['system.namespaces'].find(:name => { '$not' => /\.system\.|\$/ }).to_a.map do |collection|
|
31
|
-
# _, name = collection['name'].split('.', 2)
|
32
|
-
# name
|
33
|
-
# end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'database_cleaner/generic/base'
|
2
|
-
require 'database_cleaner/generic/truncation'
|
3
|
-
|
4
|
-
module DatabaseCleaner
|
5
|
-
module Mongoid
|
6
|
-
module MongoidTruncationMixin
|
7
|
-
include ::DatabaseCleaner::Generic::Base
|
8
|
-
include ::DatabaseCleaner::Generic::Truncation
|
9
|
-
|
10
|
-
def db=(desired_db)
|
11
|
-
@db = desired_db
|
12
|
-
end
|
13
|
-
|
14
|
-
def db
|
15
|
-
@db ||= :default
|
16
|
-
end
|
17
|
-
|
18
|
-
def host_port=(desired_host)
|
19
|
-
@host = desired_host
|
20
|
-
end
|
21
|
-
|
22
|
-
def host
|
23
|
-
@host ||= '127.0.0.1:27017'
|
24
|
-
end
|
25
|
-
|
26
|
-
def db_version
|
27
|
-
@db_version ||= session.command('buildinfo' => 1)['version']
|
28
|
-
end
|
29
|
-
|
30
|
-
def clean
|
31
|
-
if @only
|
32
|
-
collections.each { |c| session[c].find.remove_all if @only.include?(c) }
|
33
|
-
else
|
34
|
-
collections.each { |c| session[c].find.remove_all unless @tables_to_exclude.include?(c) }
|
35
|
-
end
|
36
|
-
wait_for_removals_to_finish
|
37
|
-
true
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def collections
|
43
|
-
if db != :default
|
44
|
-
session.use(db)
|
45
|
-
end
|
46
|
-
|
47
|
-
if db_version.split('.').first.to_i >= 3
|
48
|
-
session.command(listCollections: 1, filter: { 'name' => { '$not' => /.?system\.|\$/ } })['cursor']['firstBatch'].map do |collection|
|
49
|
-
collection['name']
|
50
|
-
end
|
51
|
-
else
|
52
|
-
session['system.namespaces'].find(name: { '$not' => /\.system\.|\$/ }).to_a.map do |collection|
|
53
|
-
_, name = collection['name'].split('.', 2)
|
54
|
-
name
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def wait_for_removals_to_finish
|
60
|
-
session.command(getlasterror: 1)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'database_cleaner/mongoid/base'
|
2
|
-
require 'database_cleaner/generic/truncation'
|
3
|
-
require 'database_cleaner/mongoid/mongo1_truncation_mixin'
|
4
|
-
require 'database_cleaner/mongoid/mongo2_truncation_mixin'
|
5
|
-
require 'database_cleaner/mongoid/mongoid_truncation_mixin'
|
6
|
-
require 'mongoid/version'
|
7
|
-
|
8
|
-
module DatabaseCleaner
|
9
|
-
module Mongoid
|
10
|
-
class Truncation
|
11
|
-
include ::DatabaseCleaner::Mongoid::Base
|
12
|
-
include ::DatabaseCleaner::Generic::Truncation
|
13
|
-
|
14
|
-
if ::Mongoid::VERSION < '3'
|
15
|
-
|
16
|
-
include ::DatabaseCleaner::Mongoid::Mongo1TruncationMixin
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def database
|
21
|
-
::Mongoid.database
|
22
|
-
end
|
23
|
-
|
24
|
-
elsif ::Mongoid::VERSION < '5'
|
25
|
-
|
26
|
-
include ::DatabaseCleaner::Mongoid::MongoidTruncationMixin
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def session
|
31
|
-
::Mongoid::VERSION > "5.0.0" ? ::Mongoid.default_client : ::Mongoid.default_session
|
32
|
-
end
|
33
|
-
|
34
|
-
def database
|
35
|
-
if not(@db.nil? or @db == :default)
|
36
|
-
::Mongoid.databases[@db]
|
37
|
-
else
|
38
|
-
::Mongoid.database
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
else
|
43
|
-
|
44
|
-
include ::DatabaseCleaner::Mongoid::Mongo2TruncationMixin
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|