require ‘rails’ env_file = File.join(Rails.root, ‘config/environment’) require env_file if File.exists?(“#{env_file}.rb”) desc ‘convert mysql tables engine to memory in test database’ task :convert_memory_engine do
db = ::ActiveRecord::Base.connection if ::Rails.env.test? tables = db.tables tables.delete 'schema_migrations' tables.each do |t| begin model_class = eval(t.classify) model_class.columns.each do |c| db.execute "ALTER TABLE #{t} CHANGE #{c.name} #{c.name} VARCHAR(255)" if c.type == :text end rescue puts "table #{t} not converted, because no model for table #{t}" end db.execute "ALTER TABLE #{t} ENGINE = MEMORY" puts "table #{t} converts success" end else raise "only in test mode" end
end