After attending Rails Edge in Reston, Virginia I decided to move some common tasks from my ~/.irbrc file and put them into Rake. I thought I would share a task that reads and writes the ActiveRecord schema table. Sometimes in migrations this is either good to know or manually change. Simply copy this in a foo.task file in your project/lib/tasks directory and use rake -T to see the description and usage. I have placed these tasks in the db:version namespace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
namespace :db do namespace :version do desc "Read the current version of the database." task :read => :environment do puts "The #{RAILS_ENV}' database version is: #{ActiveRecord::Migrator.current_version}" end desc "Manually set the schema version to a specific target version with VERSION=x" task :write => :environment do if ENV['VERSION'] if ActiveRecord::Base.connection.update("UPDATE #{ActiveRecord::Migrator.schema_info_table_name} SET version = #{ENV['VERSION'].to_i}") puts "SUCCESS: The '#{RAILS_ENV}' database version is now: #{ActiveRecord::Migrator.current_version}" else puts "FAILED: The '#{RAILS_ENV}' database version is still: #{ActiveRecord::Migrator.current_version}" end else puts 'You must specify a VERSION=n argument to this command. Use rake db:version:read to get the current version.' end end end end |






