[rspec-users] Database clearing
Scott Taylor
mailing_lists at railsnewbie.com
Sat Sep 20 13:17:04 EDT 2008
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 at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
More information about the rspec-users
mailing list