database_flusher 0.2.3 → 0.3.0
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5757e018763a6a24a1ab1d4458342652e37c6dd
|
4
|
+
data.tar.gz: eef0f72db7a2688c90cb43829dce03f5cbc04484
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8202dd0665c71467cd1d9ad20740453e94e7b674f432c6dd4c6238a2ae02cb1f061a017ea84faea86e0c73d57268ddd179edfd1f9aef1adeaf63a76a6729dc51
|
7
|
+
data.tar.gz: 19f3166b15a7d8933d478a00b01fe875acf0d15fd00fd4fccf06317ec956c518e88416936b5a88a75b822e3ac8e3e713aaa0d5b57fc753b135a36e6b630a609c
|
data/README.md
CHANGED
@@ -96,6 +96,26 @@ After do
|
|
96
96
|
end
|
97
97
|
```
|
98
98
|
|
99
|
+
In case of unclean test shutdown, you can clean the whole database, using:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
RSpec.configure do |config|
|
103
|
+
config.before :suite do
|
104
|
+
if File.exists?('.~lock')
|
105
|
+
puts "Unclean shutdown, cleaning the whole database..."
|
106
|
+
DatabaseFlusher[:active_record].clean_with(:deletion)
|
107
|
+
DatabaseFlusher[:mongoid].clean_with(:deletion)
|
108
|
+
else
|
109
|
+
File.open('.~lock', 'a') {}
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
config.after :suite do
|
114
|
+
File.unlink('.~lock')
|
115
|
+
end
|
116
|
+
end
|
117
|
+
```
|
118
|
+
|
99
119
|
## Contributing
|
100
120
|
|
101
121
|
Bug reports and pull requests are welcome on GitHub at https://github.com/ebeigarts/database_flusher. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
@@ -7,7 +7,7 @@ require 'database_flusher/active_record/adapters/sqlite_adapter'
|
|
7
7
|
module DatabaseFlusher
|
8
8
|
module ActiveRecord
|
9
9
|
class DeletionStrategy
|
10
|
-
attr_reader :tables
|
10
|
+
attr_reader :tables
|
11
11
|
|
12
12
|
class Subscriber
|
13
13
|
def initialize(strategy)
|
@@ -34,10 +34,6 @@ module DatabaseFlusher
|
|
34
34
|
'sql.active_record',
|
35
35
|
Subscriber.new(self)
|
36
36
|
)
|
37
|
-
connection = ::ActiveRecord::Base.connection
|
38
|
-
@adapter = DatabaseFlusher::ActiveRecord.
|
39
|
-
const_get("#{connection.adapter_name}Adapter").
|
40
|
-
new(connection)
|
41
37
|
end
|
42
38
|
|
43
39
|
def stop
|
@@ -55,6 +51,31 @@ module DatabaseFlusher
|
|
55
51
|
|
56
52
|
tables.clear
|
57
53
|
end
|
54
|
+
|
55
|
+
def clean_all
|
56
|
+
adapter.delete(*all_tables)
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def connection
|
62
|
+
@connection ||= ::ActiveRecord::Base.connection
|
63
|
+
end
|
64
|
+
|
65
|
+
def adapter
|
66
|
+
@adapter ||= DatabaseFlusher::ActiveRecord.
|
67
|
+
const_get("#{connection.adapter_name}Adapter").
|
68
|
+
new(connection)
|
69
|
+
end
|
70
|
+
|
71
|
+
def all_tables
|
72
|
+
tables = connection.tables
|
73
|
+
tables.reject do |t|
|
74
|
+
(t == ::ActiveRecord::Migrator.schema_migrations_table_name) ||
|
75
|
+
(::ActiveRecord::Base.respond_to?(:internal_metadata_table_name) &&
|
76
|
+
(t == ::ActiveRecord::Base.internal_metadata_table_name))
|
77
|
+
end
|
78
|
+
end
|
58
79
|
end
|
59
80
|
end
|
60
81
|
end
|
@@ -10,11 +10,9 @@ module DatabaseFlusher
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def started(event)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
@strategy.collections << collection
|
17
|
-
end
|
13
|
+
collection = event.command['insert'.freeze]
|
14
|
+
if collection
|
15
|
+
@strategy.collections << collection
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
@@ -29,7 +27,7 @@ module DatabaseFlusher
|
|
29
27
|
end
|
30
28
|
|
31
29
|
def start
|
32
|
-
@subscriber ||=
|
30
|
+
@subscriber ||= client.subscribe(
|
33
31
|
Mongo::Monitoring::COMMAND,
|
34
32
|
Subscriber.new(self)
|
35
33
|
)
|
@@ -42,12 +40,27 @@ module DatabaseFlusher
|
|
42
40
|
def clean
|
43
41
|
return if collections.empty?
|
44
42
|
# puts "Cleaning #{collections.inspect}"
|
45
|
-
client = ::Mongoid::Clients.default
|
46
43
|
collections.each do |name|
|
47
44
|
client[name].delete_many
|
48
45
|
end
|
49
46
|
collections.clear
|
50
47
|
end
|
48
|
+
|
49
|
+
def clean_all
|
50
|
+
all_collections.each do |name|
|
51
|
+
client[name].delete_many
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def client
|
58
|
+
@client ||= ::Mongoid::Clients.default
|
59
|
+
end
|
60
|
+
|
61
|
+
def all_collections
|
62
|
+
client.database.collections.collect { |c| c.namespace.split('.',2)[1] }
|
63
|
+
end
|
51
64
|
end
|
52
65
|
end
|
53
66
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_flusher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edgars Beigarts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|