database_cleaner 1.0.1 → 1.1.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.
- data/{History.txt → History.rdoc} +96 -45
- data/VERSION.yml +2 -2
- data/lib/database_cleaner.rb +5 -0
- data/lib/database_cleaner/active_record/deletion.rb +48 -5
- data/lib/database_cleaner/active_record/truncation.rb +14 -32
- data/lib/database_cleaner/base.rb +26 -25
- data/lib/database_cleaner/sequel/truncation.rb +1 -1
- data/spec/database_cleaner/active_record/truncation_spec.rb +16 -2
- data/spec/support/active_record/mysql2_setup.rb +2 -0
- metadata +5 -4
@@ -1,13 +1,26 @@
|
|
1
|
+
== 1.1.0 2013-08-01
|
2
|
+
|
3
|
+
=== New Features/Changes
|
4
|
+
|
5
|
+
* schema_migrations table name is now retrieved from ActiveRecord (Kyle Stevens)
|
6
|
+
* Autoloading logic is now exposed, see PR #212 for details (Jeff Felchner)
|
7
|
+
|
8
|
+
=== Bug Fixes
|
9
|
+
|
10
|
+
* Deletion strategy works again on MySQL, had to roll back multiple statements patch.
|
11
|
+
* Fix MySqlAdapter superclass bug via class_eval loading of superclasses (Tom Meier)
|
12
|
+
* Sequel strategy fix dealing with symbol/string mismatch on table names. (Fred Wu)
|
13
|
+
|
1
14
|
== 1.0.1 2013-05-13
|
2
15
|
|
3
16
|
* Patch release to fix broken gemspec file. Sorry folks!
|
4
17
|
|
5
18
|
== 1.0.0 2013-05-13
|
6
19
|
|
7
|
-
|
20
|
+
=== New Features/Changes
|
8
21
|
|
9
22
|
* Dropping support for Ruby 1.8.x; Only 1.9.x and beyond will be supported going forward.
|
10
|
-
* Now supporting
|
23
|
+
* Now supporting and testing against ruby 2.0.x.
|
11
24
|
* Adds support for AR 4.0 by using `begin_transaction` (David Chelimsky and Steve Madsen)
|
12
25
|
* Adds Rails 4 support for SQLite3Adapter
|
13
26
|
* Suppport for Moped when used without Mongoid (Cyprian Kowalczyk)
|
@@ -16,7 +29,8 @@
|
|
16
29
|
* CI Improvements (Jan Vlnas, Murahashi Sanemat Kenichi, Samer Masry, Jordan Hollinger)
|
17
30
|
* README/Documentation improvements (Marcelo Cajueiro, Donald Ball, TJ Chambers, Nick Huanca, Justin Edwards, Ryota Arai)
|
18
31
|
|
19
|
-
|
32
|
+
=== Bug Fixes
|
33
|
+
|
20
34
|
* Fixes transaction errors when using `after_commit` hooks in AR.
|
21
35
|
* Fixes truncation error with SQLite (Daniel White)
|
22
36
|
* Fixes `pre_count` logic in AR Postgres. (Jordan Hollinger)
|
@@ -24,9 +38,11 @@
|
|
24
38
|
* #clean_with now works with multiple connections. (John Ferlito)
|
25
39
|
* Always start a AR transaction to prevent nil errors in AR when rolling back (John Hampton, M.Shibuya)
|
26
40
|
|
27
|
-
== 0.9.1 2012-10-11
|
41
|
+
== 0.9.1 2012-10-11
|
28
42
|
|
29
|
-
|
43
|
+
(0.9.0 was released first but was yanked due to bad gemspec)
|
44
|
+
|
45
|
+
=== New Features
|
30
46
|
|
31
47
|
* New options for AR :truncation for speed. See README for details. (Stanislaw Pankevich)
|
32
48
|
* view caching works with the schema_plus gem loaded
|
@@ -37,7 +53,8 @@
|
|
37
53
|
* Add Sequel support for multiple migration storage names in #148 (Jack Chu)
|
38
54
|
* Multiple database support for Mongoid 3 #149 (Luke Francl)
|
39
55
|
|
40
|
-
|
56
|
+
=== Bug Fixes
|
57
|
+
|
41
58
|
* :deletion for AR Postgres in JRuby now works #140 (Heiko Seebach)
|
42
59
|
* Rescue LoadError when AR adapters not available. #145 (Garrow Bedrossian)
|
43
60
|
* Fixes DatabaseCleaner::[] to cache cleaners.
|
@@ -57,9 +74,9 @@
|
|
57
74
|
|
58
75
|
== 0.7.1 2012-01-15
|
59
76
|
|
60
|
-
|
77
|
+
=== New Features
|
61
78
|
|
62
|
-
|
79
|
+
* Support for Rails 3.2. (David Demaree)
|
63
80
|
|
64
81
|
=== Bugfixes
|
65
82
|
|
@@ -72,61 +89,69 @@
|
|
72
89
|
|
73
90
|
== 0.7.0 2011-11-12
|
74
91
|
|
75
|
-
|
92
|
+
=== New Features
|
76
93
|
|
77
|
-
|
78
|
-
|
79
|
-
|
94
|
+
* Sequel Support (Corin Langosch)
|
95
|
+
* Updates DataMapper strategies to work with DataMapper 1.1 (Xavier Shay and Anthony Williams)
|
96
|
+
* for AR and PSQL, truncate all tables with one command, improving performance due to avoiding cascades (Leonid Shevtsov)
|
80
97
|
|
81
98
|
=== Bugfixes
|
82
99
|
|
83
100
|
* Avoids trying to load the ':default' ActiveRecord config. #72 (Ben Mabey)
|
84
101
|
|
85
|
-
|
86
102
|
== 0.6.7 2011-04-21
|
87
103
|
|
88
104
|
=== Bugfixes
|
89
|
-
|
90
|
-
|
105
|
+
|
106
|
+
* Explicity require ERB. (Vít Ondruch)
|
107
|
+
* Cache DB connections, fixes referential integrity bug when using multiple DBs. (John Ferlito)
|
91
108
|
|
92
109
|
== 0.6.6 2011-03-16
|
93
110
|
|
94
111
|
=== Bugfixes
|
95
|
-
|
96
|
-
|
112
|
+
|
113
|
+
* Don't modify the array passed in with the :except key. (Eric Wollesen)
|
114
|
+
* Fixes version checking for postgresql. (Greg Barnett)
|
97
115
|
|
98
116
|
== 0.6.5 2011-03-08
|
99
117
|
|
100
118
|
=== Bugfixes
|
101
|
-
|
102
|
-
|
119
|
+
|
120
|
+
* When truncating in postgresql (>= 8.4) sequences are now reset. (Greg Barnett)
|
121
|
+
* Fixes the MongoDB truncation so non system collections starting with 'system' are not excluded for truncation. (Dmitry Naumov)
|
103
122
|
|
104
123
|
== 0.6.4 2011-02-21
|
105
124
|
|
106
125
|
=== Bugfixes
|
107
|
-
|
126
|
+
|
127
|
+
* Avoids trying to drop views in Postgres. (Bernerd Schaefer)
|
108
128
|
|
109
129
|
== 0.6.3 2011-02-09
|
110
130
|
|
111
|
-
|
131
|
+
=== New Features
|
132
|
+
|
112
133
|
* Configurable logger to aid in debugging database cleaner. (Marty Haught)
|
113
134
|
|
114
135
|
== 0.6.2 2011-02-04
|
115
136
|
|
116
|
-
|
137
|
+
=== New Features
|
138
|
+
|
117
139
|
* Support IBM_DB Adapter for table truncation. This is for DB2 >= 9.7 (GH-39 Samer Abukhait)
|
118
140
|
|
119
|
-
|
141
|
+
=== Bugfixes
|
142
|
+
|
120
143
|
* Reversed GH-41 after larger community discussion. Mongo indexes are no longer dropped. (Ben Mabey)
|
121
144
|
* Truncation strategy works on SqlServer tables with FKs. (GH-33, Hugo Freire)
|
122
145
|
|
123
146
|
== 0.6.1 2011-01-27
|
124
147
|
|
125
|
-
|
148
|
+
=== New Features
|
149
|
+
|
126
150
|
* Default strategies for all ORM libs are defined. (GH-36, GH-38 Prem Sichanugrist)
|
127
151
|
* Add a NullStrategy. (GH-6 Ben Mabey)
|
128
152
|
|
129
|
-
|
153
|
+
=== Bugfixes
|
154
|
+
|
130
155
|
* Mongo colletion indexes are dropped for collections being removed. (GH-41 Ben Mabey)
|
131
156
|
* Exclude database views from tables_to_truncate, if the connection adapter
|
132
157
|
supports reading from the ANSI standard information_schema views. (GH-25 Samer Abukhait)
|
@@ -147,14 +172,16 @@ is backwards compatible.
|
|
147
172
|
This release is a result of Jon Rowe's hard work. Many thanks to Jon for all
|
148
173
|
of the hours and effort he put into making this feature request a reality.
|
149
174
|
|
150
|
-
|
175
|
+
=== New Features
|
176
|
+
|
151
177
|
* Ability to clean multiple database connections managed by the same ORM. (Jon Rowe)
|
152
178
|
* Ability to clean multiple DBs managed by different ORMs in same project. (Jon Rowe)
|
153
179
|
* Allows for the ActiveRecord config file (database.yml) to contain ERB and process it. (Fletcher Nichol)
|
154
180
|
* Mysql2Adapter support. (Kamal Fariz Mahyuddin and John Ferlito)
|
155
181
|
* Deletion strategy for ActiveRecord (Mikl Kurkov)
|
156
182
|
|
157
|
-
|
183
|
+
=== Bugfixes
|
184
|
+
|
158
185
|
* Updates the DataMapper truncation strategy to version 0.10.3. (Robert Rouse)
|
159
186
|
* Addresses Ruby 1.9 and 1.8 differences causing a bug in the AR PostgreSQLAdapter truncation strategy. (GH-14, James B. Byrne)
|
160
187
|
* Fixes syntax error that MySQL was throwing during DataMapper truncation. (Blake Gentry)
|
@@ -163,7 +190,8 @@ of the hours and effort he put into making this feature request a reality.
|
|
163
190
|
|
164
191
|
== 0.5.2
|
165
192
|
|
166
|
-
|
193
|
+
=== Bugfixes
|
194
|
+
|
167
195
|
* Removes extraneous puts call from configuration.rb. (Ben Mabey)
|
168
196
|
|
169
197
|
== 0.5.1 - The Mongoid Release
|
@@ -172,85 +200,108 @@ This release also attempts to fix AR for Rails 3 support. I have seen mixed rev
|
|
172
200
|
claim the fixes allow for use in Rails3 while others have not had good luck with it. I plan on reworking
|
173
201
|
the way AR support is added so that it is more friendly with how Rails 3 uses autoload.
|
174
202
|
|
175
|
-
|
203
|
+
=== New features
|
204
|
+
|
176
205
|
* Clean and clean_with methods are now aliased to clean! and clean_with!. (Ben Mabey)
|
177
206
|
* Mongoid Support! (Sidney Burks)
|
178
207
|
|
179
208
|
=== Bugfixes
|
209
|
+
|
180
210
|
* Check PostgreSQL version >= 8.2 before using TRUNCATE CASCADE (James B. Byrne)
|
181
211
|
* Correct superclass is used in ActiveRecord connection adapters. (johnathan, Aslak Hellesoy, Ben Mabey)
|
182
212
|
|
183
213
|
== 0.5.0 2010-02-22 - The CouchPotato Release
|
184
214
|
|
185
|
-
|
215
|
+
=== New features
|
216
|
+
|
186
217
|
* Basic truncation support for CouchPotato / CouchDB. (Martin Rehfeld)
|
187
218
|
* SQLite3 on JRuby will fall back to delete if truncate doesn't work. (Darrin Holst)
|
188
219
|
* JDBC is used for ActiveRecord automaticaly when JRuby is detected. (Darrin Holst)
|
189
220
|
|
190
|
-
|
221
|
+
=== Bufixes
|
222
|
+
|
191
223
|
* MongoMapper truncation strategy now works with :only and :except options. (Ben Mabey)
|
192
224
|
|
193
225
|
== 0.4.3 2010-01-17
|
194
226
|
|
195
|
-
|
227
|
+
=== New features
|
228
|
+
|
196
229
|
* Truncation for ActiveRecord oracle_enhanced adapter. (Edgars Beigarts)
|
197
230
|
|
198
231
|
== 0.4.2 2010-01-12
|
199
232
|
|
200
|
-
|
233
|
+
=== Bufixes
|
234
|
+
|
201
235
|
* Datamapper truncation now uses 'select' instead of deprecated the 'query' method. (Steve Tooke)
|
202
236
|
|
203
237
|
== 0.4.1 2010-01-07
|
204
238
|
|
205
|
-
|
239
|
+
=== Bufixes
|
240
|
+
|
206
241
|
* Postgres tables with FKs now truncate (added TRUNCADE CASCADE) using Datamapper. (Ben Mabey)
|
207
242
|
|
208
243
|
== 0.4.0 2009-12-23 (The MongoMapper Edition)
|
209
244
|
|
210
|
-
|
245
|
+
=== New features
|
246
|
+
|
211
247
|
* MongoMapper support for the truncation strategy. (Aubrey Holland)
|
212
248
|
|
213
249
|
== 0.3.0 2009-12-20
|
214
250
|
|
215
|
-
|
251
|
+
=== New features
|
252
|
+
|
216
253
|
* DataMapper 0.10.0 Compatible. (Martin Gamsjaeger)
|
217
|
-
|
254
|
+
|
255
|
+
=== Bufixes
|
256
|
+
|
218
257
|
* Postgres tables with FKs now truncate (added TRUNCADE CASCADE). (Vika - yozhyk on github)
|
219
258
|
|
220
259
|
== 0.2.3 2009-05-30
|
221
260
|
|
222
|
-
|
261
|
+
=== New features
|
262
|
+
|
223
263
|
* Support for SQL Server truncation (Adam Meehan)
|
224
264
|
|
225
265
|
== 0.2.2 2009-05-08
|
226
|
-
|
266
|
+
|
267
|
+
=== Bufixes
|
268
|
+
|
227
269
|
* Added proper gemspec description and summary. (Ben Mabey, thanks to Martin Gamsjaeger)
|
228
270
|
|
229
|
-
|
271
|
+
=== New features
|
230
272
|
|
231
273
|
== 0.2.1 2009-05-08
|
232
|
-
|
274
|
+
|
275
|
+
=== Bufixes
|
276
|
+
|
233
277
|
* Removed extraneous TruncationBase class definition. (Ben Mabey)
|
234
278
|
|
235
279
|
== 0.2.0 2009-05-08 - The Datamapper Release
|
236
280
|
|
237
|
-
|
281
|
+
=== New features
|
282
|
+
|
238
283
|
* DataMapper strategies (Martin Gamsjaeger)
|
239
284
|
* Transaction
|
240
285
|
* Truncation - working SQLite3, MySQL adapters. Experimental Postgres adapter (not tested).
|
241
286
|
|
242
287
|
== 0.1.3 2009-04-30
|
243
288
|
|
244
|
-
|
289
|
+
=== New features
|
290
|
+
|
245
291
|
* PostgresSQLAdapter for AR to support the truncation strategy. (Alberto Perdomo)
|
246
|
-
|
292
|
+
|
293
|
+
=== Bufixes
|
294
|
+
|
247
295
|
* Added missing quotes around table names in truncation calls. (Michael MacDonald)
|
248
296
|
|
249
297
|
== 0.1.2 2009-03-05
|
250
|
-
|
298
|
+
|
299
|
+
=== New features
|
300
|
+
|
251
301
|
* JDBC Adapter to enable AR truncation strategy to work. (Kamal Fariz Mahyuddin)
|
252
302
|
|
253
303
|
== 0.1.1 2009-03-04 - Initial Release (Ben Mabey)
|
304
|
+
|
254
305
|
* Basic infrastructure
|
255
306
|
* Features, RSpec code examples
|
256
307
|
* ActiveRecord strategies
|
data/VERSION.yml
CHANGED
data/lib/database_cleaner.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
|
2
2
|
require 'database_cleaner/configuration'
|
3
3
|
|
4
|
+
module DatabaseCleaner
|
5
|
+
def self.can_detect_orm?
|
6
|
+
DatabaseCleaner::Base.autodetect_orm
|
7
|
+
end
|
8
|
+
end
|
@@ -3,6 +3,51 @@ require 'active_record/connection_adapters/abstract_adapter'
|
|
3
3
|
require "database_cleaner/generic/truncation"
|
4
4
|
require 'database_cleaner/active_record/base'
|
5
5
|
require 'database_cleaner/active_record/truncation'
|
6
|
+
# This file may seem to have duplication with that of truncation, but by keeping them separate
|
7
|
+
# we avoiding loading this code when it is not being used (which is the common case).
|
8
|
+
|
9
|
+
module ActiveRecord
|
10
|
+
module ConnectionAdapters
|
11
|
+
|
12
|
+
class MysqlAdapter < MYSQL_ADAPTER_PARENT
|
13
|
+
def delete_table(table_name)
|
14
|
+
execute("DELETE FROM #{quote_table_name(table_name)};")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class Mysql2Adapter < MYSQL2_ADAPTER_PARENT
|
19
|
+
def delete_table(table_name)
|
20
|
+
execute("DELETE FROM #{quote_table_name(table_name)};")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class JdbcAdapter < AbstractAdapter
|
25
|
+
def delete_table(table_name)
|
26
|
+
execute("DELETE FROM #{quote_table_name(table_name)};")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class PostgreSQLAdapter < POSTGRE_ADAPTER_PARENT
|
31
|
+
def delete_table(table_name)
|
32
|
+
execute("DELETE FROM #{quote_table_name(table_name)};")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class SQLServerAdapter < AbstractAdapter
|
37
|
+
def delete_table(table_name)
|
38
|
+
execute("DELETE FROM #{quote_table_name(table_name)};")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class OracleEnhancedAdapter < AbstractAdapter
|
43
|
+
def delete_table(table_name)
|
44
|
+
execute("DELETE FROM #{quote_table_name(table_name)}")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
6
51
|
|
7
52
|
module DatabaseCleaner::ActiveRecord
|
8
53
|
class Deletion < Truncation
|
@@ -10,11 +55,9 @@ module DatabaseCleaner::ActiveRecord
|
|
10
55
|
def clean
|
11
56
|
connection = connection_class.connection
|
12
57
|
connection.disable_referential_integrity do
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
connection.execute sql
|
58
|
+
tables_to_truncate(connection).each do |table_name|
|
59
|
+
connection.delete_table table_name
|
60
|
+
end
|
18
61
|
end
|
19
62
|
end
|
20
63
|
|
@@ -176,56 +176,39 @@ module ActiveRecord
|
|
176
176
|
module ConnectionAdapters
|
177
177
|
# Activerecord-jdbc-adapter defines class dependencies a bit differently - if it is present, confirm to ArJdbc hierarchy to avoid 'superclass mismatch' errors.
|
178
178
|
USE_ARJDBC_WORKAROUND = defined?(ArJdbc)
|
179
|
+
# ActiveRecord 3.1+ support
|
180
|
+
MYSQL_ABSTRACT_ADAPTER = defined?(AbstractMysqlAdapter) ? AbstractMysqlAdapter : AbstractAdapter
|
179
181
|
|
180
|
-
|
181
|
-
include ::DatabaseCleaner::ActiveRecord::AbstractAdapter
|
182
|
-
end
|
183
|
-
|
184
|
-
unless USE_ARJDBC_WORKAROUND
|
185
|
-
class SQLiteAdapter < AbstractAdapter
|
186
|
-
end
|
187
|
-
end
|
182
|
+
AbstractAdapter.send(:include, ::DatabaseCleaner::ActiveRecord::AbstractAdapter)
|
188
183
|
|
189
|
-
|
190
|
-
|
191
|
-
MYSQL_ADAPTER_PARENT = USE_ARJDBC_WORKAROUND ? JdbcAdapter : AbstractMysqlAdapter
|
192
|
-
MYSQL2_ADAPTER_PARENT = AbstractMysqlAdapter
|
184
|
+
if USE_ARJDBC_WORKAROUND
|
185
|
+
MYSQL_ADAPTER_PARENT = JdbcAdapter
|
193
186
|
else
|
194
|
-
MYSQL_ADAPTER_PARENT
|
195
|
-
|
187
|
+
MYSQL_ADAPTER_PARENT = MYSQL_ABSTRACT_ADAPTER
|
188
|
+
class SQLiteAdapter < AbstractAdapter; end
|
196
189
|
end
|
190
|
+
MYSQL2_ADAPTER_PARENT = MYSQL_ABSTRACT_ADAPTER
|
197
191
|
|
198
192
|
if defined?(SQLite3Adapter) && SQLite3Adapter.superclass == ActiveRecord::ConnectionAdapters::AbstractAdapter
|
199
193
|
SQLITE_ADAPTER_PARENT = USE_ARJDBC_WORKAROUND ? JdbcAdapter : AbstractAdapter
|
200
194
|
else
|
201
195
|
SQLITE_ADAPTER_PARENT = USE_ARJDBC_WORKAROUND ? JdbcAdapter : SQLiteAdapter
|
202
196
|
end
|
203
|
-
|
204
|
-
|
205
|
-
class MysqlAdapter < MYSQL_ADAPTER_PARENT
|
206
|
-
include ::DatabaseCleaner::ActiveRecord::MysqlAdapter
|
207
|
-
end
|
197
|
+
POSTGRES_ADAPTER_PARENT = USE_ARJDBC_WORKAROUND ? JdbcAdapter : AbstractAdapter
|
208
198
|
|
209
|
-
|
210
|
-
|
211
|
-
|
199
|
+
MYSQL_ADAPTER_PARENT.class_eval { include ::DatabaseCleaner::ActiveRecord::MysqlAdapter }
|
200
|
+
MYSQL2_ADAPTER_PARENT.class_eval { include ::DatabaseCleaner::ActiveRecord::MysqlAdapter }
|
201
|
+
SQLITE_ADAPTER_PARENT.class_eval { include ::DatabaseCleaner::ActiveRecord::SQLiteAdapter }
|
202
|
+
POSTGRES_ADAPTER_PARENT.class_eval { include ::DatabaseCleaner::ActiveRecord::PostgreSQLAdapter }
|
212
203
|
|
213
204
|
class IBM_DBAdapter < AbstractAdapter
|
214
205
|
include ::DatabaseCleaner::ActiveRecord::IBM_DBAdapter
|
215
206
|
end
|
216
207
|
|
217
|
-
class SQLite3Adapter < SQLITE_ADAPTER_PARENT
|
218
|
-
include ::DatabaseCleaner::ActiveRecord::SQLiteAdapter
|
219
|
-
end
|
220
|
-
|
221
208
|
class JdbcAdapter < AbstractAdapter
|
222
209
|
include ::DatabaseCleaner::ActiveRecord::TruncateOrDelete
|
223
210
|
end
|
224
211
|
|
225
|
-
class PostgreSQLAdapter < POSTGRE_ADAPTER_PARENT
|
226
|
-
include ::DatabaseCleaner::ActiveRecord::PostgreSQLAdapter
|
227
|
-
end
|
228
|
-
|
229
212
|
class SQLServerAdapter < AbstractAdapter
|
230
213
|
include ::DatabaseCleaner::ActiveRecord::TruncateOrDelete
|
231
214
|
end
|
@@ -233,7 +216,6 @@ module ActiveRecord
|
|
233
216
|
class OracleEnhancedAdapter < AbstractAdapter
|
234
217
|
include ::DatabaseCleaner::ActiveRecord::OracleEnhancedAdapter
|
235
218
|
end
|
236
|
-
|
237
219
|
end
|
238
220
|
end
|
239
221
|
|
@@ -262,7 +244,7 @@ module DatabaseCleaner::ActiveRecord
|
|
262
244
|
|
263
245
|
# overwritten
|
264
246
|
def migration_storage_names
|
265
|
-
|
247
|
+
[::ActiveRecord::Migrator.schema_migrations_table_name]
|
266
248
|
end
|
267
249
|
|
268
250
|
def pre_count?
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'database_cleaner/null_strategy'
|
2
2
|
module DatabaseCleaner
|
3
3
|
class Base
|
4
|
-
|
5
4
|
def initialize(desired_orm = nil,opts = {})
|
6
5
|
if [:autodetect, nil, "autodetect"].include?(desired_orm)
|
7
6
|
autodetect
|
@@ -98,6 +97,28 @@ module DatabaseCleaner
|
|
98
97
|
self.orm == other.orm && self.db == other.db
|
99
98
|
end
|
100
99
|
|
100
|
+
def autodetect_orm
|
101
|
+
if defined? ::ActiveRecord
|
102
|
+
:active_record
|
103
|
+
elsif defined? ::DataMapper
|
104
|
+
:data_mapper
|
105
|
+
elsif defined? ::MongoMapper
|
106
|
+
:mongo_mapper
|
107
|
+
elsif defined? ::Mongoid
|
108
|
+
:mongoid
|
109
|
+
elsif defined? ::CouchPotato
|
110
|
+
:couch_potato
|
111
|
+
elsif defined? ::Sequel
|
112
|
+
:sequel
|
113
|
+
elsif defined? ::Moped
|
114
|
+
:moped
|
115
|
+
elsif defined? ::Ohm
|
116
|
+
:ohm
|
117
|
+
elsif defined? ::Redis
|
118
|
+
:redis
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
101
122
|
private
|
102
123
|
|
103
124
|
def orm_module
|
@@ -116,30 +137,10 @@ module DatabaseCleaner
|
|
116
137
|
end
|
117
138
|
|
118
139
|
def autodetect
|
119
|
-
@
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
elsif defined? ::DataMapper
|
124
|
-
:data_mapper
|
125
|
-
elsif defined? ::MongoMapper
|
126
|
-
:mongo_mapper
|
127
|
-
elsif defined? ::Mongoid
|
128
|
-
:mongoid
|
129
|
-
elsif defined? ::CouchPotato
|
130
|
-
:couch_potato
|
131
|
-
elsif defined? ::Sequel
|
132
|
-
:sequel
|
133
|
-
elsif defined? ::Moped
|
134
|
-
:moped
|
135
|
-
elsif defined? ::Ohm
|
136
|
-
:ohm
|
137
|
-
elsif defined? ::Redis
|
138
|
-
:redis
|
139
|
-
else
|
140
|
-
raise NoORMDetected, "No known ORM was detected! Is ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, Moped, or CouchPotato, Redis or Ohm loaded?"
|
141
|
-
end
|
142
|
-
end
|
140
|
+
@autodetected = true
|
141
|
+
|
142
|
+
@orm ||= autodetect_orm ||
|
143
|
+
raise(NoORMDetected, "No known ORM was detected! Is ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, Moped, or CouchPotato, Redis or Ohm loaded?")
|
143
144
|
end
|
144
145
|
|
145
146
|
def set_default_orm_strategy
|
@@ -1,5 +1,9 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
2
|
require 'active_record'
|
3
|
+
require 'active_record/connection_adapters/mysql_adapter'
|
4
|
+
require 'active_record/connection_adapters/mysql2_adapter'
|
5
|
+
require 'active_record/connection_adapters/sqlite3_adapter'
|
6
|
+
require 'active_record/connection_adapters/postgresql_adapter'
|
3
7
|
|
4
8
|
require 'database_cleaner/active_record/truncation'
|
5
9
|
|
@@ -35,6 +39,16 @@ module DatabaseCleaner
|
|
35
39
|
Truncation.new.clean
|
36
40
|
end
|
37
41
|
|
42
|
+
it "should use ActiveRecord's schema_migrations_table_name" do
|
43
|
+
connection.stub!(:database_cleaner_table_cache).and_return(%w[pre_schema_migrations_suf widgets dogs])
|
44
|
+
::ActiveRecord::Base.stub!(:table_name_prefix).and_return('pre_')
|
45
|
+
::ActiveRecord::Base.stub!(:table_name_suffix).and_return('_suf')
|
46
|
+
|
47
|
+
connection.should_receive(:truncate_tables).with(['widgets', 'dogs'])
|
48
|
+
|
49
|
+
Truncation.new.clean
|
50
|
+
end
|
51
|
+
|
38
52
|
it "should only truncate the tables specified in the :only option when provided" do
|
39
53
|
connection.stub!(:database_cleaner_table_cache).and_return(%w[schema_migrations widgets dogs])
|
40
54
|
|
@@ -119,14 +133,14 @@ module DatabaseCleaner
|
|
119
133
|
subject.send(:pre_count?).should == false
|
120
134
|
end
|
121
135
|
end
|
122
|
-
|
136
|
+
|
123
137
|
describe '#reset_ids?' do
|
124
138
|
before(:each) do
|
125
139
|
connection.stub!(:disable_referential_integrity).and_yield
|
126
140
|
connection.stub!(:database_cleaner_view_cache).and_return([])
|
127
141
|
::ActiveRecord::Base.stub!(:connection).and_return(connection)
|
128
142
|
end
|
129
|
-
|
143
|
+
|
130
144
|
subject { Truncation.new }
|
131
145
|
its(:reset_ids?) { should == true }
|
132
146
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'support/active_record/database_setup'
|
2
2
|
require 'support/active_record/schema_setup'
|
3
3
|
|
4
|
+
|
4
5
|
module MySQL2Helper
|
5
6
|
puts "Active Record #{ActiveRecord::VERSION::STRING}, mysql2"
|
6
7
|
|
@@ -36,3 +37,4 @@ end
|
|
36
37
|
RSpec.configure do |c|
|
37
38
|
c.include MySQL2Helper
|
38
39
|
end
|
40
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_cleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-01 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Strategies for cleaning databases. Can be used to ensure a clean state
|
15
15
|
for testing.
|
@@ -22,7 +22,7 @@ extra_rdoc_files:
|
|
22
22
|
- TODO
|
23
23
|
files:
|
24
24
|
- Gemfile.lock
|
25
|
-
- History.
|
25
|
+
- History.rdoc
|
26
26
|
- README.markdown
|
27
27
|
- Rakefile
|
28
28
|
- VERSION.yml
|
@@ -130,7 +130,8 @@ files:
|
|
130
130
|
- LICENSE
|
131
131
|
- TODO
|
132
132
|
homepage: http://github.com/bmabey/database_cleaner
|
133
|
-
licenses:
|
133
|
+
licenses:
|
134
|
+
- MIT
|
134
135
|
post_install_message:
|
135
136
|
rdoc_options: []
|
136
137
|
require_paths:
|