Blog
removing global fixtures for ruby tests
By mccraig | Wednesday, July 2nd, 2008
global fixtures are evil, but we’ve got a bunch of unit tests depending on them, so we still need them aroundhere’s a neat [and generally fast, though a degenerate O(#tables^2) case is possible] way of deleting all fixtures without invoking db dependent ways of ignoring foreign-key constraints, and without loading all the objects into memory :
classes = ActiveRecord::Base.connection.tables.map {|t|
t.singularize.camelize.constantize rescue nil
}.compact.reject{|cls| !cls.ancestors.include?(ActiveRecord::Base)}
while classes.size > 0
classes = classes.select{|c|
begin
c.delete_all
false
rescue
true
end
}.reverse!
end
This entry was posted on Wednesday, July 2nd, 2008 at 1:20 pm and is filed under Coding. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
One Response to “removing global fixtures for ruby tests”
|Leave a Reply









Thanks, good post!