def self.restore(installer, filename)
connect(installer)
data = YAML.load(File.read(filename))
installer.message "Restoring data"
data.each_key do |table|
if table == 'schema_info'
ActiveRecord::Base.connection.execute("delete from schema_info")
ActiveRecord::Base.connection.execute("insert into schema_info (version) values (#{data[table].first['version']})")
else
installer.message " Restoring table #{table} (#{data[table].size})"
eval %Q{
class TempClass < ActiveRecord::Base
set_table_name '#{table}'
reset_column_information
end
}
TempClass.delete_all
data[table].each do |record|
r = TempClass.new(record)
r.id = record['id'] if record.has_key?('id')
r.save
end
if ActiveRecord::Base.connection.respond_to?(:reset_pk_sequence!)
ActiveRecord::Base.connection.reset_pk_sequence!(table)
end
end
end
end