On Sep 20, 2008, at 8:08 AM, Todd Tyree wrote:
Ok, here's what I've come up with on the spur of the moment (goes in
spec_helper.rb):
config.after(:each) do
result = ActiveRecord::Base.connection.execute('SHOW TABLES;')
while table = result.fetch_row
# Or whatever you think is appropriate.
next if table.index('schema_migrations') or table.index('roles')
ActiveRecord::Base.connection.execute("TRUNCATE #{table}")
end
end
Seems like it would be more efficient if you pull the "SHOW TABLES"
statement out of the block, and then allow closure to capture that
variable. This way "SHOW TABLES" would only be evaluated once (since
the tables aren't changing in each example).
Also, it looks like there is no way to truncate multiple tables all in
one shot (at least in mysql and sql92):
http://dev.mysql.com/doc/refman/5.0/en/truncate.html
Scott
The main problem is that it's slow. I tried batching them all up,
and running them in a single execute, but foundered on the
mysql_options multi-statements setting (it seems that mysql won't,
by default, allow multi-statement strings unless you set the multi-
statement flag after init and before connect. Not sure how to do
this from Base.connect, or even if it's possible. Sorry, lost track
of the article where I found the original reference).
Best,
Todd
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users