pseudo_cleaner 0.0.30 → 0.0.31
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 +8 -8
- data/README.md +13 -1
- data/lib/pseudo_cleaner/configuration.rb +46 -14
- data/lib/pseudo_cleaner/cucumber.rb +1 -1
- data/lib/pseudo_cleaner/master_cleaner.rb +21 -23
- data/lib/pseudo_cleaner/rspec.rb +22 -7
- data/lib/pseudo_cleaner/table_cleaner.rb +69 -34
- data/lib/pseudo_cleaner/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjMyOGI1MjJmODFhYzMwZmJjMzY2NzA3MGMyY2U3ODNiMzEyOTc4Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTM2ZmI1ZmViZmYzZTZhODBiMjA4MmNhMWNiNDIxMzFiNTQyYjZjMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTRhNjIxN2Y1OWFkMGIxMDA4YTliOWRkM2RiNzgwNzM3Y2QzNjJkMzE1MTdm
|
10
|
+
NDc5OGE5ODBjM2Q5MzZjM2QwYjkwYjA2MzIxMTVlOWIwZDg2M2VhNTU0ZGY0
|
11
|
+
MzVmOTkxODI1YzQ3ZDAwZWZjMWQxYzJkNGQ1YzRlOWRiNGU2ODU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Zjg3NWQ1NGY1OTkyOTQxOWY5NzAyNzM2MDZkZjE4YzhlYjU2ZjhmMjFjNTNl
|
14
|
+
MWVhM2E0NjAyOTY3ODQ2Mjg1MTcxYTgxYmZiOGM1MDRmYjgxMmUzN2E2YzM2
|
15
|
+
NzI2OGM5N2FkMTVjMTA0OGM5NDI0YzU2YjM2OWY1YWU4ZDNlMWY=
|
data/README.md
CHANGED
@@ -61,6 +61,9 @@ To integrate the PseudoCleaner with Rspec, simply add the following lines to `sp
|
|
61
61
|
require 'pseudo_cleaner'
|
62
62
|
require 'pseudo_cleaner/rspec'
|
63
63
|
|
64
|
+
Add the lines as early as possible in the spec_helper because the hooks used are before and after hooks. Adding the
|
65
|
+
hooks early will wrap other hooks in the transaction.
|
66
|
+
|
64
67
|
All tests will now by default use DatabaseCleaner with the `:transaction` strategy. For most tests, this will wrap
|
65
68
|
the test in a transaction, and roll back the transaction at the end of the test.
|
66
69
|
|
@@ -85,7 +88,16 @@ Example:
|
|
85
88
|
|
86
89
|
### Cucumber
|
87
90
|
|
88
|
-
Cucumber integration similar to Rspec integration
|
91
|
+
Cucumber integration similar to Rspec integration simply add the cucumber hook file instead.
|
92
|
+
|
93
|
+
require 'pseudo_cleaner'
|
94
|
+
require 'pseudo_cleaner/cucumber'
|
95
|
+
|
96
|
+
### Spinach
|
97
|
+
|
98
|
+
Spinach integration hasn't been fully tested.
|
99
|
+
|
100
|
+
It probably should work.
|
89
101
|
|
90
102
|
### Manual
|
91
103
|
|
@@ -1,6 +1,8 @@
|
|
1
|
+
require "singleton"
|
2
|
+
|
1
3
|
module PseudoCleaner
|
2
4
|
class Configuration
|
3
|
-
|
5
|
+
include Singleton
|
4
6
|
|
5
7
|
# A simple configuration class for the PseudoCleaner
|
6
8
|
#
|
@@ -12,33 +14,63 @@ module PseudoCleaner
|
|
12
14
|
attr_accessor :reset_auto_increment
|
13
15
|
attr_accessor :single_cleaner_set
|
14
16
|
attr_accessor :post_transaction_analysis
|
17
|
+
attr_accessor :db_connections
|
15
18
|
|
16
19
|
def self.current_instance
|
17
|
-
|
20
|
+
self.instance
|
18
21
|
end
|
19
22
|
|
20
23
|
def initialize
|
21
|
-
@output_diagnostics = false
|
22
|
-
@clean_database_before_tests = false
|
23
|
-
@reset_auto_increment = true
|
24
|
-
@single_cleaner_set = true
|
25
|
-
@post_transaction_analysis = false
|
24
|
+
@output_diagnostics = false # false to keep the noise level down...
|
25
|
+
@clean_database_before_tests = false # false because I think it will annoy developers...
|
26
|
+
@reset_auto_increment = true # true because I think it should be done
|
27
|
+
@single_cleaner_set = true # true because I hope it will improve performance
|
28
|
+
@post_transaction_analysis = false # should only be set true if you are searching for a problem
|
29
|
+
@db_connections = {}
|
26
30
|
end
|
27
31
|
|
32
|
+
# Backwards comaptibility...
|
28
33
|
def self.db_connection=(connection)
|
29
|
-
|
34
|
+
self.instance.db_connection = connection
|
30
35
|
end
|
31
36
|
|
32
37
|
def self.db_connection(type)
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
+
self.instance.db_connection(type)
|
39
|
+
end
|
40
|
+
|
41
|
+
def db_connection=(connection)
|
42
|
+
if Object.const_defined?("ActiveRecord", false) && ActiveRecord.const_defined?("Base", false)
|
43
|
+
table_is_active_record = connection.class == ActiveRecord::Base
|
44
|
+
table_super_class = connection.class.superclass if connection.class
|
45
|
+
while !table_is_active_record && table_super_class
|
46
|
+
table_is_active_record = (table_super_class == ActiveRecord::Base)
|
47
|
+
table_super_class = table_super_class.superclass
|
48
|
+
end
|
49
|
+
|
50
|
+
@db_connections[:active_record] = connection if table_is_active_record
|
51
|
+
end
|
52
|
+
|
53
|
+
if Object.const_defined?("Sequel", false) && Sequel.const_defined?("Model", false)
|
54
|
+
@db_connections[:sequel] = connection
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def db_connection(type)
|
59
|
+
if (!type)
|
60
|
+
if Object.const_defined?("Sequel", false) && Sequel.const_defined?("Model", false)
|
61
|
+
type = :sequel
|
38
62
|
else
|
39
|
-
|
63
|
+
type = :active_record
|
40
64
|
end
|
41
65
|
end
|
66
|
+
|
67
|
+
if type == :sequel
|
68
|
+
@db_connections[type] ||= Sequel::DATABASES[0]
|
69
|
+
else
|
70
|
+
@db_connections[type] ||= ActiveRecord::Base
|
71
|
+
end
|
72
|
+
|
73
|
+
@db_connections[type]
|
42
74
|
end
|
43
75
|
end
|
44
76
|
end
|
@@ -30,6 +30,14 @@ module PseudoCleaner
|
|
30
30
|
@@suite_cleaner
|
31
31
|
end
|
32
32
|
|
33
|
+
def database_cleaner
|
34
|
+
if Object.const_defined?("ActiveRecord", false) && ActiveRecord.const_defined?("Base", false)
|
35
|
+
DatabaseCleaner[:active_record, connection: PseudoCleaner::Configuration.db_connection(:active_record)]
|
36
|
+
elsif Object.const_defined?("Sequel", false) && Sequel.const_defined?("Model", false)
|
37
|
+
DatabaseCleaner[:sequel, connection: PseudoCleaner::Configuration.db_connection(:sequel)]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
33
41
|
def start_example(example_class, strategy)
|
34
42
|
pseudo_cleaner_data = {}
|
35
43
|
pseudo_cleaner_data[:test_strategy] = strategy
|
@@ -39,13 +47,7 @@ module PseudoCleaner
|
|
39
47
|
|
40
48
|
DatabaseCleaner.strategy = PseudoCleaner::MasterCleaner::DB_CLEANER_CLEANING_STRATEGIES[strategy]
|
41
49
|
unless [:pseudo_delete].include? strategy
|
42
|
-
|
43
|
-
DatabaseCleaner[:active_record, connection: PseudoCleaner::Configuration.db_connection(:active_record)].
|
44
|
-
start
|
45
|
-
elsif Object.const_defined?("Sequel", false) && Sequel.const_defined?("Model", false)
|
46
|
-
DatabaseCleaner[:sequel, connection: PseudoCleaner::Configuration.db_connection(:sequel)].start
|
47
|
-
end
|
48
|
-
# DatabaseCleaner.start
|
50
|
+
PseudoCleaner::MasterCleaner.database_cleaner.start
|
49
51
|
end
|
50
52
|
|
51
53
|
pseudo_cleaner_data[:pseudo_state] = PseudoCleaner::MasterCleaner.start_test strategy
|
@@ -59,13 +61,7 @@ module PseudoCleaner
|
|
59
61
|
|
60
62
|
unless pseudo_cleaner_data[:test_strategy] == :none
|
61
63
|
unless [:pseudo_delete].include? pseudo_cleaner_data[:test_strategy]
|
62
|
-
|
63
|
-
DatabaseCleaner[:active_record, connection: PseudoCleaner::Configuration.db_connection(:active_record)].
|
64
|
-
clean
|
65
|
-
elsif Object.const_defined?("Sequel", false) && Sequel.const_defined?("Model", false)
|
66
|
-
DatabaseCleaner[:sequel, connection: PseudoCleaner::Configuration.db_connection(:sequel)].clean
|
67
|
-
end
|
68
|
-
# DatabaseCleaner.clean
|
64
|
+
PseudoCleaner::MasterCleaner.database_cleaner.clean
|
69
65
|
end
|
70
66
|
|
71
67
|
case pseudo_cleaner_data[:test_strategy]
|
@@ -114,7 +110,7 @@ module PseudoCleaner
|
|
114
110
|
end
|
115
111
|
|
116
112
|
def reset_database
|
117
|
-
|
113
|
+
PseudoCleaner::MasterCleaner.database_cleaner.clean_with(:truncation)
|
118
114
|
|
119
115
|
PseudoCleaner::MasterCleaner.database_reset
|
120
116
|
end
|
@@ -358,15 +354,17 @@ module PseudoCleaner
|
|
358
354
|
def run_all_cleaners(cleaner_function, cleaners, *args, &block)
|
359
355
|
last_error = nil
|
360
356
|
|
361
|
-
cleaners
|
362
|
-
|
363
|
-
|
364
|
-
cleaner.
|
365
|
-
|
366
|
-
|
367
|
-
|
357
|
+
if cleaners
|
358
|
+
cleaners.each do |cleaner|
|
359
|
+
begin
|
360
|
+
if cleaner.respond_to?(cleaner_function)
|
361
|
+
cleaner.send(cleaner_function, *args, &block)
|
362
|
+
end
|
363
|
+
rescue => error
|
364
|
+
PseudoCleaner::MasterCleaner.process_exception(last_error) if last_error
|
368
365
|
|
369
|
-
|
366
|
+
last_error = error
|
367
|
+
end
|
370
368
|
end
|
371
369
|
end
|
372
370
|
|
data/lib/pseudo_cleaner/rspec.rb
CHANGED
@@ -15,9 +15,23 @@ RSpec.configure do |config|
|
|
15
15
|
PseudoCleaner::MasterCleaner.end_suite
|
16
16
|
end
|
17
17
|
|
18
|
-
config.around(:each)
|
18
|
+
# I tried making this a config.around(:each).
|
19
|
+
# You can't do that. It turns out that RSpec injects a virtual around(:each) that
|
20
|
+
# calls after_teardown which calls ActiveRecord::Base.clear_active_connections!
|
21
|
+
#
|
22
|
+
# This resets the active connection.
|
23
|
+
#
|
24
|
+
# If (for whatever reason) there are multiple connections in the connection pool this
|
25
|
+
# means that when you go to clean, the connection has been released, and when
|
26
|
+
# DatabaseCleaner tries to get a new connection, it may not get the same one it had
|
27
|
+
# when start was called.
|
28
|
+
#
|
29
|
+
# By using before and after, we avoid this problem by being inside the around block.
|
30
|
+
# The compromize is that the user will be more load dependent to get the hooks
|
31
|
+
# in the right order (potentially).
|
32
|
+
config.before(:each) do |example|
|
33
|
+
test_example = example
|
19
34
|
test_example = example.example if example.respond_to?(:example)
|
20
|
-
test_example ||= self.example if self.respond_to?(:example)
|
21
35
|
|
22
36
|
new_strategy = nil
|
23
37
|
|
@@ -34,11 +48,12 @@ RSpec.configure do |config|
|
|
34
48
|
new_strategy ||= :transaction
|
35
49
|
|
36
50
|
PseudoCleaner::MasterCleaner.start_example(test_example, new_strategy)
|
51
|
+
end
|
37
52
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
53
|
+
config.after(:each) do |example|
|
54
|
+
test_example = example
|
55
|
+
test_example = example.example if example.respond_to?(:example)
|
56
|
+
|
57
|
+
PseudoCleaner::MasterCleaner.end_example(test_example)
|
43
58
|
end
|
44
59
|
end
|
@@ -190,14 +190,14 @@ module PseudoCleaner
|
|
190
190
|
end
|
191
191
|
|
192
192
|
def test_end test_strategy
|
193
|
-
reset_table test_strategy
|
193
|
+
reset_table test_strategy, false
|
194
194
|
end
|
195
195
|
|
196
196
|
def suite_end test_strategy
|
197
|
-
reset_table test_strategy
|
197
|
+
reset_table test_strategy, true
|
198
198
|
end
|
199
199
|
|
200
|
-
def reset_table test_strategy
|
200
|
+
def reset_table test_strategy, require_output
|
201
201
|
if @test_strategy != test_strategy && !PseudoCleaner::Configuration.current_instance.single_cleaner_set
|
202
202
|
if @options[:output_diagnostics]
|
203
203
|
PseudoCleaner::Logger.write(" *** The ending strategy for \"#{initial_state[:table_name]}\" changed! ***".red.on_light_white)
|
@@ -216,19 +216,23 @@ module PseudoCleaner
|
|
216
216
|
# I'm using it because it is faster than reseeding each test...
|
217
217
|
# And, I can be responsible for worrying about referential integrity in the test
|
218
218
|
# if I want to...
|
219
|
-
|
219
|
+
pre_string = " Resetting table \"#{initial_state[:table_name]}\" for #{test_strategy}..."
|
220
|
+
pre_string = "Tests ended without cleaning up properly!!!\n" + pre_string if require_output
|
221
|
+
pre_string = pre_string.red.on_light_white if require_output
|
222
|
+
|
223
|
+
require_output ||= @options[:output_diagnostics]
|
220
224
|
|
221
225
|
if initial_state[:table_is_active_record]
|
222
|
-
test_end_active_record test_strategy
|
226
|
+
test_end_active_record test_strategy, pre_string, require_output
|
223
227
|
end
|
224
228
|
|
225
229
|
if initial_state[:table_is_sequel_model]
|
226
|
-
test_end_sequel_model test_strategy
|
230
|
+
test_end_sequel_model test_strategy, pre_string, require_output
|
227
231
|
end
|
228
232
|
end
|
229
233
|
end
|
230
234
|
|
231
|
-
def test_end_active_record test_strategy
|
235
|
+
def test_end_active_record test_strategy, pre_string, require_output
|
232
236
|
initial_state = @@initial_states[@table]
|
233
237
|
cleaned_table = false
|
234
238
|
|
@@ -243,7 +247,10 @@ module PseudoCleaner
|
|
243
247
|
if num_deleted > 0
|
244
248
|
cleaned_table = true
|
245
249
|
|
246
|
-
output_delete_record(test_strategy,
|
250
|
+
pre_string = output_delete_record(test_strategy,
|
251
|
+
" Deleted #{num_deleted} records by ID.",
|
252
|
+
pre_string,
|
253
|
+
require_output)
|
247
254
|
end
|
248
255
|
end
|
249
256
|
|
@@ -255,7 +262,10 @@ module PseudoCleaner
|
|
255
262
|
if num_deleted > 0
|
256
263
|
cleaned_table = true
|
257
264
|
|
258
|
-
output_delete_record(test_strategy,
|
265
|
+
pre_string = output_delete_record(test_strategy,
|
266
|
+
" Deleted #{num_deleted} records by #{initial_state[:created][:column_name]}.",
|
267
|
+
pre_string,
|
268
|
+
require_output)
|
259
269
|
end
|
260
270
|
end
|
261
271
|
|
@@ -263,14 +273,16 @@ module PseudoCleaner
|
|
263
273
|
dirty_count = PseudoCleaner::Configuration.db_connection(:active_record).connection.
|
264
274
|
execute("SELECT COUNT(*) FROM `#{table_name}` WHERE #{initial_state[:updated][:column_name]} > '#{initial_state[:updated][:value]}'").first[0]
|
265
275
|
|
266
|
-
if
|
276
|
+
if require_output && dirty_count > 0
|
267
277
|
# cleaned_table = true
|
268
278
|
|
269
279
|
initial_state[:updated][:value] = PseudoCleaner::Configuration.db_connection(:active_record).connection.
|
270
280
|
execute("SELECT MAX(#{initial_state[:updated][:column_name]}) FROM `#{table_name}`").first[0]
|
271
281
|
|
272
|
-
|
273
|
-
|
282
|
+
pre_string = output_delete_record(test_strategy,
|
283
|
+
" *** There are #{dirty_count} records which have been updated and may be dirty remaining after cleaning \"#{initial_state[:table_name]}\"... ***".red.on_light_white,
|
284
|
+
pre_string,
|
285
|
+
require_output)
|
274
286
|
end
|
275
287
|
end
|
276
288
|
|
@@ -282,7 +294,12 @@ module PseudoCleaner
|
|
282
294
|
|
283
295
|
DatabaseCleaner[:active_record, connection: PseudoCleaner::Configuration.db_connection(:active_record)].
|
284
296
|
clean_with(:truncation, only: [initial_state[:table_name]])
|
285
|
-
|
297
|
+
if final_count > 0
|
298
|
+
pre_string = output_delete_record(test_strategy,
|
299
|
+
" Deleted #{final_count} records by cleaning the table.",
|
300
|
+
pre_string,
|
301
|
+
require_output)
|
302
|
+
end
|
286
303
|
|
287
304
|
final_count = PseudoCleaner::Configuration.db_connection(:active_record).connection.
|
288
305
|
execute("SELECT COUNT(*) FROM `#{table_name}`").first[0]
|
@@ -290,10 +307,10 @@ module PseudoCleaner
|
|
290
307
|
end
|
291
308
|
|
292
309
|
if initial_state[:count] != final_count
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
310
|
+
pre_string = output_delete_record(test_strategy,
|
311
|
+
" *** There are #{final_count - initial_state[:count]} dirty records remaining after cleaning \"#{initial_state[:table_name]}\"... ***".red.on_light_white,
|
312
|
+
pre_string,
|
313
|
+
true)
|
297
314
|
|
298
315
|
initial_state[:count] = final_count
|
299
316
|
cleaned_table = true
|
@@ -304,7 +321,7 @@ module PseudoCleaner
|
|
304
321
|
end
|
305
322
|
end
|
306
323
|
|
307
|
-
def test_end_sequel_model test_strategy
|
324
|
+
def test_end_sequel_model test_strategy, pre_string, require_output
|
308
325
|
initial_state = @@initial_states[@table]
|
309
326
|
access_table = sequel_model_table
|
310
327
|
cleaned_table = false
|
@@ -316,7 +333,10 @@ module PseudoCleaner
|
|
316
333
|
if num_deleted > 0
|
317
334
|
cleaned_table = true
|
318
335
|
|
319
|
-
output_delete_record(test_strategy,
|
336
|
+
pre_string = output_delete_record(test_strategy,
|
337
|
+
" Deleted #{num_deleted} records by ID.",
|
338
|
+
pre_string,
|
339
|
+
require_output)
|
320
340
|
end
|
321
341
|
end
|
322
342
|
|
@@ -328,7 +348,10 @@ module PseudoCleaner
|
|
328
348
|
if num_deleted > 0
|
329
349
|
cleaned_table = true
|
330
350
|
|
331
|
-
output_delete_record(test_strategy,
|
351
|
+
pre_string = output_delete_record(test_strategy,
|
352
|
+
" Deleted #{num_deleted} records by #{initial_state[:created][:column_name]}.",
|
353
|
+
pre_string,
|
354
|
+
require_output)
|
332
355
|
end
|
333
356
|
end
|
334
357
|
|
@@ -338,13 +361,15 @@ module PseudoCleaner
|
|
338
361
|
where("`#{initial_state[:updated][:column_name]}` > ?", initial_state[:updated][:value]).
|
339
362
|
count
|
340
363
|
|
341
|
-
if
|
364
|
+
if require_output && dirty_count > 0
|
342
365
|
# cleaned_table = true
|
343
366
|
|
344
367
|
initial_state[:updated][:value] = access_table.unfiltered.max(initial_state[:updated][:column_name])
|
345
368
|
|
346
|
-
|
347
|
-
|
369
|
+
pre_string = output_delete_record(test_strategy,
|
370
|
+
" *** There are #{dirty_count} records which have been updated and may be dirty remaining after cleaning \"#{initial_state[:table_name]}\"... ***".red.on_light_white,
|
371
|
+
pre_string,
|
372
|
+
require_output)
|
348
373
|
end
|
349
374
|
end
|
350
375
|
|
@@ -355,17 +380,22 @@ module PseudoCleaner
|
|
355
380
|
|
356
381
|
DatabaseCleaner[:sequel, connection: PseudoCleaner::Configuration.db_connection(:sequel)].
|
357
382
|
clean_with(:truncation, only: [initial_state[:table_name]])
|
358
|
-
|
383
|
+
if final_count > 0
|
384
|
+
pre_string = output_delete_record(test_strategy,
|
385
|
+
" Deleted #{final_count} records by cleaning the table.",
|
386
|
+
pre_string,
|
387
|
+
require_output)
|
388
|
+
end
|
359
389
|
|
360
390
|
final_count = access_table.unfiltered.count
|
361
391
|
end
|
362
392
|
end
|
363
393
|
|
364
394
|
if initial_state[:count] != final_count
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
395
|
+
pre_string = output_delete_record(test_strategy,
|
396
|
+
" *** There are #{final_count - initial_state[:count]} dirty records remaining after cleaning \"#{initial_state[:table_name]}\"... ***".red.on_light_white,
|
397
|
+
pre_string,
|
398
|
+
true)
|
369
399
|
|
370
400
|
initial_state[:count] = final_count
|
371
401
|
cleaned_table = true
|
@@ -377,11 +407,14 @@ module PseudoCleaner
|
|
377
407
|
end
|
378
408
|
end
|
379
409
|
|
380
|
-
def output_delete_record(test_strategy, stats_string, require_output = false)
|
410
|
+
def output_delete_record(test_strategy, stats_string, pre_string, require_output = false)
|
411
|
+
PseudoCleaner::Logger.write(pre_string) if pre_string && (@options[:output_diagnostics] || require_output)
|
381
412
|
if test_strategy == :transaction
|
382
413
|
PseudoCleaner::Logger.write(" ***** TRANSACTION FAILED!!! *****".red.on_light_white)
|
383
414
|
end
|
384
415
|
PseudoCleaner::Logger.write(stats_string) if @options[:output_diagnostics] || require_output
|
416
|
+
|
417
|
+
nil
|
385
418
|
end
|
386
419
|
|
387
420
|
def reset_auto_increment test_start
|
@@ -489,12 +522,14 @@ module PseudoCleaner
|
|
489
522
|
def review_rows(&block)
|
490
523
|
initial_state = @@initial_states[@table]
|
491
524
|
|
492
|
-
if initial_state
|
493
|
-
|
494
|
-
|
525
|
+
if initial_state
|
526
|
+
if initial_state[:table_is_active_record]
|
527
|
+
review_rows_active_record &block
|
528
|
+
end
|
495
529
|
|
496
|
-
|
497
|
-
|
530
|
+
if initial_state[:table_is_sequel_model]
|
531
|
+
review_rows_sequel_model &block
|
532
|
+
end
|
498
533
|
end
|
499
534
|
end
|
500
535
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pseudo_cleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RealNobody
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|