database_cleaner-core 2.0.0.beta2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ADAPTERS.md +0 -2
- data/History.rdoc +13 -1
- data/README.markdown +14 -5
- data/database_cleaner-core.gemspec +1 -1
- data/database_cleaner.gemspec +2 -4
- data/lib/database_cleaner/cleaners.rb +5 -5
- data/lib/database_cleaner/core.rb +4 -1
- data/lib/database_cleaner/null_strategy.rb +2 -2
- data/lib/database_cleaner/safeguard.rb +10 -10
- data/lib/database_cleaner/version.rb +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10b3a62dc4a34477c00150b01b020e1c8b3a36bfff77674e66c281b6a101187d
|
4
|
+
data.tar.gz: 0894cd2cf9a69c054ef04138fba09ec20a995e11aedbfa64b40177d8fb45d238
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4bdb0c48d6e51c3f7ff56284de6ddca71943fb0e93b90a51990b66e575b9175292afac2e778e6d815b969cb31a1522ce96ee75af7e16ec016081de4f9d8ab8d
|
7
|
+
data.tar.gz: 26e519e860c44e520feb51245ca44d3c4c0f1b7e8ef6d8af76dcbc8bd8dad35b0e6625855e98e07bd7d94dcccda9728c1bec443d139dbefdfe2f304a157d4e14
|
data/ADAPTERS.md
CHANGED
data/History.rdoc
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
== Development (unreleased)
|
2
|
+
|
3
|
+
== 2.0.0 2021-01-31
|
4
|
+
|
5
|
+
=== Changes
|
6
|
+
* Rename `url_whitelist` to `url_allowlist`
|
7
|
+
* Allowlist now supports regular expressions
|
8
|
+
* Fixed Ruby 2.7 deprecation warnings
|
9
|
+
|
10
|
+
=== Breaking changes
|
11
|
+
* Failed checks against the allowlist now raise `UrlNotAllowed` rather than `NotWhitelistedUrl`
|
12
|
+
|
1
13
|
== 2.0.0.beta2 2020-05-30
|
2
14
|
|
3
15
|
=== Features
|
@@ -17,7 +29,7 @@
|
|
17
29
|
* remove all deprecated code and get the specs passing again.
|
18
30
|
* Split off all adapter gems into their own repos: https://github.com/DatabaseCleaner/database_cleaner/pull/620
|
19
31
|
|
20
|
-
== 1.99.0
|
32
|
+
== 1.99.0 2021-01-31
|
21
33
|
|
22
34
|
== Changes
|
23
35
|
* Remove unnecessary dependency on database_cleaner-mongo from database_cleaner-mongoid: @botandrose
|
data/README.markdown
CHANGED
@@ -137,7 +137,7 @@ So what is fastest out of `:deletion` and `:truncation`? Well, it depends on you
|
|
137
137
|
|
138
138
|
Some people report much faster speeds with `:deletion` while others say `:truncation` is faster for them. The best approach therefore is it try all options on your test suite and see what is faster.
|
139
139
|
|
140
|
-
If you are using ActiveRecord then take a look at the [additional options](#
|
140
|
+
If you are using ActiveRecord then take a look at the [additional options](https://github.com/DatabaseCleaner/database_cleaner-active_record#strategy-configuration-options) available for `:truncation`.
|
141
141
|
|
142
142
|
Database Cleaner also includes a `null` strategy (that does no cleaning at all) which can be used with any ORM library.
|
143
143
|
You can also explicitly use it by setting your strategy to `nil`.
|
@@ -323,7 +323,7 @@ After copying and pasting code to do this several times I decided to package it
|
|
323
323
|
|
324
324
|
DatabaseCleaner comes with safeguards against:
|
325
325
|
|
326
|
-
* Running in production (checking for `ENV`, `RACK_ENV`, and `RAILS_ENV`)
|
326
|
+
* Running in production (checking for `ENV`, `APP_ENV`, `RACK_ENV`, and `RAILS_ENV`)
|
327
327
|
* Running against a remote database (checking for a `DATABASE_URL` that does not include `localhost`, `.local` or `127.0.0.1`)
|
328
328
|
|
329
329
|
Both safeguards can be disabled separately as follows.
|
@@ -342,11 +342,20 @@ DatabaseCleaner.allow_production = true
|
|
342
342
|
DatabaseCleaner.allow_remote_database_url = true
|
343
343
|
```
|
344
344
|
|
345
|
-
In Ruby, a URL
|
346
|
-
to one of the values specified in the url
|
345
|
+
In Ruby, a URL allowlist can be specified. When specified, DatabaseCleaner will only allow `DATABASE_URL` to be equal
|
346
|
+
to one of the values specified in the url allowlist like so:
|
347
347
|
|
348
348
|
```ruby
|
349
|
-
DatabaseCleaner.
|
349
|
+
DatabaseCleaner.url_allowlist = ['postgres://postgres@localhost', 'postgres://foo@bar']
|
350
|
+
```
|
351
|
+
|
352
|
+
Allowlist elements are matched with case equality (`===`), so regular expressions or procs may be used:
|
353
|
+
|
354
|
+
```ruby
|
355
|
+
DatabaseCleaner.url_allowlist = [
|
356
|
+
%r{^postgres://postgres@localhost}, # match any db with this prefix
|
357
|
+
proc {|uri| URI.parse(uri).user == "test" } # match any db authenticating with the 'test' user
|
358
|
+
]
|
350
359
|
```
|
351
360
|
|
352
361
|
## COPYRIGHT
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "listen"
|
25
25
|
spec.add_development_dependency "rspec"
|
26
26
|
|
27
|
-
spec.add_development_dependency "cucumber"
|
27
|
+
spec.add_development_dependency "cucumber", "~>3.0"
|
28
28
|
spec.add_development_dependency "activesupport"
|
29
29
|
spec.add_development_dependency "database_cleaner-active_record"
|
30
30
|
spec.add_development_dependency "sqlite3"
|
data/database_cleaner.gemspec
CHANGED
@@ -2,9 +2,7 @@ require_relative "./lib/database_cleaner/version"
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "database_cleaner"
|
5
|
-
|
6
|
-
# spec.version = DatabaseCleaner::VERSION
|
7
|
-
spec.version = "2.0.0.beta"
|
5
|
+
spec.version = DatabaseCleaner::VERSION
|
8
6
|
spec.authors = ["Ben Mabey", "Ernesto Tagwerker", "Micah Geisel"]
|
9
7
|
spec.email = ["ernesto@ombulabs.com"]
|
10
8
|
|
@@ -18,5 +16,5 @@ Gem::Specification.new do |spec|
|
|
18
16
|
spec.files = ["lib/database_cleaner.rb"]
|
19
17
|
spec.require_paths = ["lib"]
|
20
18
|
|
21
|
-
spec.add_dependency "database_cleaner-active_record", "~>2.0.0
|
19
|
+
spec.add_dependency "database_cleaner-active_record", "~>2.0.0"
|
22
20
|
end
|
@@ -7,10 +7,10 @@ module DatabaseCleaner
|
|
7
7
|
end
|
8
8
|
|
9
9
|
# FIXME this method conflates creation with lookup... both a command and a query. yuck.
|
10
|
-
def [](orm, opts
|
10
|
+
def [](orm, **opts)
|
11
11
|
raise ArgumentError if orm.nil?
|
12
|
-
fetch([orm, opts]) { add_cleaner(orm, opts) }
|
13
|
-
end
|
12
|
+
fetch([orm, opts]) { add_cleaner(orm, **opts) }
|
13
|
+
end
|
14
14
|
|
15
15
|
def strategy=(strategy)
|
16
16
|
values.each { |cleaner| cleaner.strategy = strategy }
|
@@ -37,8 +37,8 @@ module DatabaseCleaner
|
|
37
37
|
|
38
38
|
private
|
39
39
|
|
40
|
-
def add_cleaner(orm, opts
|
41
|
-
self[[orm, opts]] = Cleaner.new(orm, opts)
|
40
|
+
def add_cleaner(orm, **opts)
|
41
|
+
self[[orm, opts]] = Cleaner.new(orm, **opts)
|
42
42
|
end
|
43
43
|
|
44
44
|
def remove_duplicates
|
@@ -14,7 +14,10 @@ module DatabaseCleaner
|
|
14
14
|
:cleaning,
|
15
15
|
] => :cleaners
|
16
16
|
|
17
|
-
attr_accessor :allow_remote_database_url, :allow_production, :
|
17
|
+
attr_accessor :allow_remote_database_url, :allow_production, :url_allowlist
|
18
|
+
|
19
|
+
alias :url_whitelist :url_allowlist
|
20
|
+
alias :url_whitelist= :url_allowlist=
|
18
21
|
|
19
22
|
def cleaners
|
20
23
|
@cleaners ||= Cleaners.new
|
@@ -13,27 +13,27 @@ module DatabaseCleaner
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
class
|
16
|
+
class UrlNotAllowed < Error
|
17
17
|
def initialize
|
18
|
-
super("ENV['DATABASE_URL'] is set to a URL that is not on the
|
18
|
+
super("ENV['DATABASE_URL'] is set to a URL that is not on the allowlist. Please refer to https://github.com/DatabaseCleaner/database_cleaner#safeguards")
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
class
|
23
|
+
class AllowedUrl
|
24
24
|
def run
|
25
25
|
return if skip?
|
26
|
-
raise Error::
|
26
|
+
raise Error::UrlNotAllowed if database_url_not_allowed?
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
30
30
|
|
31
|
-
def
|
32
|
-
!DatabaseCleaner.
|
31
|
+
def database_url_not_allowed?
|
32
|
+
!DatabaseCleaner.url_allowlist.any? {|allowed| allowed === ENV['DATABASE_URL'] }
|
33
33
|
end
|
34
34
|
|
35
35
|
def skip?
|
36
|
-
!DatabaseCleaner.
|
36
|
+
!DatabaseCleaner.url_allowlist
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -67,12 +67,12 @@ module DatabaseCleaner
|
|
67
67
|
def skip?
|
68
68
|
ENV['DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL'] ||
|
69
69
|
DatabaseCleaner.allow_remote_database_url ||
|
70
|
-
DatabaseCleaner.
|
70
|
+
DatabaseCleaner.url_allowlist
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
74
|
class Production
|
75
|
-
KEYS = %w(ENV RACK_ENV RAILS_ENV)
|
75
|
+
KEYS = %w(ENV APP_ENV RACK_ENV RAILS_ENV)
|
76
76
|
|
77
77
|
def run
|
78
78
|
raise Error::ProductionEnv.new(key) if !skip? && given?
|
@@ -97,7 +97,7 @@ module DatabaseCleaner
|
|
97
97
|
CHECKS = [
|
98
98
|
RemoteDatabaseUrl,
|
99
99
|
Production,
|
100
|
-
|
100
|
+
AllowedUrl
|
101
101
|
]
|
102
102
|
|
103
103
|
def run
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_cleaner-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Mabey
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-01-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -85,16 +85,16 @@ dependencies:
|
|
85
85
|
name: cucumber
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
90
|
+
version: '3.0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - "
|
95
|
+
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
97
|
+
version: '3.0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: activesupport
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -204,11 +204,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
204
204
|
version: '0'
|
205
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
206
|
requirements:
|
207
|
-
- - "
|
207
|
+
- - ">="
|
208
208
|
- !ruby/object:Gem::Version
|
209
|
-
version:
|
209
|
+
version: '0'
|
210
210
|
requirements: []
|
211
|
-
rubygems_version: 3.0.
|
211
|
+
rubygems_version: 3.0.8
|
212
212
|
signing_key:
|
213
213
|
specification_version: 4
|
214
214
|
summary: Strategies for cleaning databases. Can be used to ensure a clean slate for
|