diff options
author | Sam Stephenson <sam@37signals.com> | 2005-10-13 04:12:32 +0000 |
---|---|---|
committer | Sam Stephenson <sam@37signals.com> | 2005-10-13 04:12:32 +0000 |
commit | 24c3599cc0f9987d48f2f1c4fe85fc84a6be3d31 (patch) | |
tree | 66730b24a1957dd7cf878fca1c62bc30505769bd /railties/lib/tasks/databases.rake | |
parent | 140a5f8f7b7deea713b5c7cbccbc8b57fecb2c7d (diff) | |
download | rails-24c3599cc0f9987d48f2f1c4fe85fc84a6be3d31.tar.gz rails-24c3599cc0f9987d48f2f1c4fe85fc84a6be3d31.tar.bz2 rails-24c3599cc0f9987d48f2f1c4fe85fc84a6be3d31.zip |
Support using different database adapters for development and test with ActiveRecord::Base.schema_format = :ruby
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2549 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'railties/lib/tasks/databases.rake')
-rw-r--r-- | railties/lib/tasks/databases.rake | 68 |
1 files changed, 42 insertions, 26 deletions
diff --git a/railties/lib/tasks/databases.rake b/railties/lib/tasks/databases.rake index b416297406..a2db15086e 100644 --- a/railties/lib/tasks/databases.rake +++ b/railties/lib/tasks/databases.rake @@ -27,6 +27,38 @@ task :db_schema_import => :environment do load file end +desc "Recreate the test database from the current environment's database schema." +task :clone_schema_to_test => :db_schema_dump do + ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['test']) + Rake::Task[:db_schema_import].invoke +end + +desc "Dump the database structure to a SQL file" +task :db_structure_dump => :environment do + abcs = ActiveRecord::Base.configurations + case abcs[RAILS_ENV]["adapter"] + when "mysql", "oci" + ActiveRecord::Base.establish_connection(abcs[RAILS_ENV]) + File.open("db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump } + when "postgresql" + ENV['PGHOST'] = abcs[RAILS_ENV]["host"] if abcs[RAILS_ENV]["host"] + ENV['PGPORT'] = abcs[RAILS_ENV]["port"].to_s if abcs[RAILS_ENV]["port"] + ENV['PGPASSWORD'] = abcs[RAILS_ENV]["password"].to_s if abcs[RAILS_ENV]["password"] + `pg_dump -U "#{abcs[RAILS_ENV]["username"]}" -s -x -O -f db/#{RAILS_ENV}_structure.sql #{abcs[RAILS_ENV]["database"]}` + when "sqlite", "sqlite3" + `#{abcs[RAILS_ENV]["adapter"]} #{abcs[RAILS_ENV]["dbfile"]} .schema > db/#{RAILS_ENV}_structure.sql` + when "sqlserver" + `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /f db\\#{RAILS_ENV}_structure.sql /q /A /r` + `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /F db\ /q /A /r` + else + raise "Task not supported by '#{abcs["test"]["adapter"]}'" + end + + if ActiveRecord::Base.connection.supports_migrations? + File.open("db/#{RAILS_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information } + end +end + desc "Recreate the test databases from the development structure" task :clone_structure_to_test => [ :db_structure_dump, :purge_test_database ] do abcs = ActiveRecord::Base.configurations @@ -56,32 +88,6 @@ task :clone_structure_to_test => [ :db_structure_dump, :purge_test_database ] do end end -desc "Dump the database structure to a SQL file" -task :db_structure_dump => :environment do - abcs = ActiveRecord::Base.configurations - case abcs[RAILS_ENV]["adapter"] - when "mysql", "oci" - ActiveRecord::Base.establish_connection(abcs[RAILS_ENV]) - File.open("db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump } - when "postgresql" - ENV['PGHOST'] = abcs[RAILS_ENV]["host"] if abcs[RAILS_ENV]["host"] - ENV['PGPORT'] = abcs[RAILS_ENV]["port"].to_s if abcs[RAILS_ENV]["port"] - ENV['PGPASSWORD'] = abcs[RAILS_ENV]["password"].to_s if abcs[RAILS_ENV]["password"] - `pg_dump -U "#{abcs[RAILS_ENV]["username"]}" -s -x -O -f db/#{RAILS_ENV}_structure.sql #{abcs[RAILS_ENV]["database"]}` - when "sqlite", "sqlite3" - `#{abcs[RAILS_ENV]["adapter"]} #{abcs[RAILS_ENV]["dbfile"]} .schema > db/#{RAILS_ENV}_structure.sql` - when "sqlserver" - `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /f db\\#{RAILS_ENV}_structure.sql /q /A /r` - `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /F db\ /q /A /r` - else - raise "Task not supported by '#{abcs["test"]["adapter"]}'" - end - - if ActiveRecord::Base.connection.supports_migrations? - File.open("db/#{RAILS_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information } - end -end - desc "Empty the test database" task :purge_test_database => :environment do abcs = ActiveRecord::Base.configurations @@ -111,6 +117,16 @@ task :purge_test_database => :environment do end end +def prepare_test_database_task + {:sql => :clone_structure_to_test, + :ruby => :clone_schema_to_test}[ActiveRecord::Base.schema_format] +end + +desc 'Prepare the test database and load the schema' +task :prepare_test_database => :environment do + Rake::Task[prepare_test_database_task].invoke +end + desc "Creates a sessions table for use with CGI::Session::ActiveRecordStore" task :create_sessions_table => :environment do raise "Task unavailable to this database (no migration support)" unless ActiveRecord::Base.connection.supports_migrations? |