Thursday, December 14, 2006
Rails: Running migrations in another environment
From the command line it's possible to run migrations in any environment. For example, using the code below it is possible to run migrations in the test environment.
rake db:migrate RAILS_ENV=testBecause the above code works it would appear that you could create the following rake task to automate running the migrations in the test environment.
task :test_migrate doUnfortunately, that didn't work, but the following change does work.
ENV["RAILS_ENV"] = "test"
Rake::Task["db:migrate"].invoke
end
task :test_migrate do
ActiveRecord::Base.establish_connection "test"
Rake::Task["db:migrate"].invoke
end
Comments:
<< Home
Out of curiosity, why do you need this? Certainly you don't need to maintain your test data...even if you do, it should be provided in fixtures. rake db:test:prepare will bring the database up to date.
Pat,
On my current team, following a check in, the code is checked out by our continuous integration (CI) process to our CI server. This server runs all the tests and publishes a build report so the team can see the status of the codebase. This CI environment doesn't need a 'development' database since all it cares about is running all the tests. Since there is no development database, we don't have the option to rely on db:test:prepare, db:schema:dump, db:test:clone, and db:schema:load. All of the above have been removed from our test prerequsite list.
Post a Comment
On my current team, following a check in, the code is checked out by our continuous integration (CI) process to our CI server. This server runs all the tests and publishes a build report so the team can see the status of the codebase. This CI environment doesn't need a 'development' database since all it cares about is running all the tests. Since there is no development database, we don't have the option to rely on db:test:prepare, db:schema:dump, db:test:clone, and db:schema:load. All of the above have been removed from our test prerequsite list.
<< Home




