namespace :db do namespace :retro do desc 'Loads the database schema and the initial content' task :load => :environment do Rake::Task['db:retro:load_schema'].invoke Rake::Task['db:retro:load_content'].invoke end desc 'Loads the database schema' task :load_schema => :environment do puts "\n===== Load the database schema\n" Rake::Task["db:schema:load"].invoke Rake::Task["db:retro:extend_default_text_column_size"].invoke end desc 'Loads the initial content' task :load_content => :environment do puts "\n===== Load the initial content\n" load("db/default_content.rb") end desc 'Extends the storage size of TEXT columns (serialised information)' task :extend_default_text_column_size => :environment do column_names = Project.serialized_attributes.keys - ['disabled_modules'] ActiveRecord::Base.establish_connection case ActiveRecord::Base.connection.adapter_name when 'MySQL' column_names.each do |name| sql = "ALTER TABLE #{Project.quoted_table_name} MODIFY #{ActiveRecord::Base.connection.quote_column_name(name)} LONGTEXT" ActiveRecord::Base.connection.execute sql end else # PostgreSQL, SQLite, MSSQL, Oracle defaults for TEXT/CLOB column sizes are sufficient end end end end