-
-
Save felipeelias/4469873 to your computer and use it in GitHub Desktop.
RSpec.configure do |config| | |
config.around do |example| | |
# For examples using capybara-webkit for example. | |
# Remove this if you don't use it or anything similar | |
if example.metadata[:js] | |
example.run | |
ActiveRecord::Base.connection.execute("TRUNCATE #{ActiveRecord::Base.connection.tables.join(',')} RESTART IDENTITY") | |
else | |
ActiveRecord::Base.transaction do | |
example.run | |
raise ActiveRecord::Rollback | |
end | |
end | |
end | |
end |
@dgilperez awesome! And yes, the code is valid only for postgreSQL
Just a note that the speed bump you're getting here is less from not loading database_cleaner
and more from the fact that you're only truncating on :js
examples. You can do the same thing with a specific database cleaner configuration. So you can get a database agnostic cleaning approach and a pretty fast suite in the same solution.
@jfelchner you're right, I just found myself not in need of using it on projects that has one required database (so I don't need to be agnostic), but for sure it's quite helpful. It was a bit of an overhead to have database_cleaner imo.
I saw a dramatic improvement in the test suite I'm working with... When I mean dramatic, I mean 8 minutes
to 27 seconds
...
I'm running jruby 1.7.4 (1.9.3p392) 2013-05-16 2390d3b on Java HotSpot(TM) 64-Bit Server VM 1.6.0_51-b11-457-11M4509 [darwin-x86_64]
Niiiice stuff !!! 33% improvement on my large and slow test suite :)
I think this code is valid for PostgreSQL, but not for MySQL. For MySQL we are currently substituting this line:
For this ones: