Ticket #11596: 2-0-stable-0001-Change-all-databases.rake-adapter-when-statements.patch
| File 2-0-stable-0001-Change-all-databases.rake-adapter-when-statements.patch, 7.7 kB (added by nicksieger, 3 months ago) |
|---|
-
a/railties/lib/tasks/databases.rake
old new 32 32 ActiveRecord::Base.connection 33 33 rescue 34 34 case config['adapter'] 35 when 'mysql'35 when /mysql/ 36 36 @charset = ENV['CHARSET'] || 'utf8' 37 37 @collation = ENV['COLLATION'] || 'utf8_general_ci' 38 38 begin … … 42 42 rescue 43 43 $stderr.puts "Couldn't create database for #{config.inspect}" 44 44 end 45 when 'postgresql'45 when /postgresql/ 46 46 `createdb "#{config['database']}" -E utf8` 47 when 'sqlite'47 when /sqlite$/ 48 48 `sqlite "#{config['database']}"` 49 when 'sqlite3'49 when /sqlite3$/ 50 50 `sqlite3 "#{config['database']}"` 51 51 end 52 52 else … … 109 109 task :charset => :environment do 110 110 config = ActiveRecord::Base.configurations[RAILS_ENV || 'development'] 111 111 case config['adapter'] 112 when 'mysql'112 when /mysql/ 113 113 ActiveRecord::Base.establish_connection(config) 114 114 puts ActiveRecord::Base.connection.charset 115 115 else … … 121 121 task :collation => :environment do 122 122 config = ActiveRecord::Base.configurations[RAILS_ENV || 'development'] 123 123 case config['adapter'] 124 when 'mysql'124 when /mysql/ 125 125 ActiveRecord::Base.establish_connection(config) 126 126 puts ActiveRecord::Base.connection.collation 127 127 else … … 203 203 task :dump => :environment do 204 204 abcs = ActiveRecord::Base.configurations 205 205 case abcs[RAILS_ENV]["adapter"] 206 when "mysql", "oci", "oracle"206 when /mysql/, /oci/, /oracle/ 207 207 ActiveRecord::Base.establish_connection(abcs[RAILS_ENV]) 208 208 File.open("db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump } 209 when "postgresql"209 when /postgresql/ 210 210 ENV['PGHOST'] = abcs[RAILS_ENV]["host"] if abcs[RAILS_ENV]["host"] 211 211 ENV['PGPORT'] = abcs[RAILS_ENV]["port"].to_s if abcs[RAILS_ENV]["port"] 212 212 ENV['PGPASSWORD'] = abcs[RAILS_ENV]["password"].to_s if abcs[RAILS_ENV]["password"] … … 214 214 search_path = "--schema=#{search_path}" if search_path 215 215 `pg_dump -i -U "#{abcs[RAILS_ENV]["username"]}" -s -x -O -f db/#{RAILS_ENV}_structure.sql #{search_path} #{abcs[RAILS_ENV]["database"]}` 216 216 raise "Error dumping database" if $?.exitstatus == 1 217 when "sqlite", "sqlite3"217 when /sqlite/ 218 218 dbfile = abcs[RAILS_ENV]["database"] || abcs[RAILS_ENV]["dbfile"] 219 219 `#{abcs[RAILS_ENV]["adapter"]} #{dbfile} .schema > db/#{RAILS_ENV}_structure.sql` 220 when "sqlserver"220 when /sqlserver/ 221 221 `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /f db\\#{RAILS_ENV}_structure.sql /q /A /r` 222 222 `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /F db\ /q /A /r` 223 when "firebird"223 when /firebird/ 224 224 set_firebird_env(abcs[RAILS_ENV]) 225 225 db_string = firebird_db_string(abcs[RAILS_ENV]) 226 226 sh "isql -a #{db_string} > db/#{RAILS_ENV}_structure.sql" … … 247 247 task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do 248 248 abcs = ActiveRecord::Base.configurations 249 249 case abcs["test"]["adapter"] 250 when "mysql"250 when /mysql/ 251 251 ActiveRecord::Base.establish_connection(:test) 252 252 ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0') 253 253 IO.readlines("db/#{RAILS_ENV}_structure.sql").join.split("\n\n").each do |table| 254 254 ActiveRecord::Base.connection.execute(table) 255 255 end 256 when "postgresql"256 when /postgresql/ 257 257 ENV['PGHOST'] = abcs["test"]["host"] if abcs["test"]["host"] 258 258 ENV['PGPORT'] = abcs["test"]["port"].to_s if abcs["test"]["port"] 259 259 ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"] 260 260 `psql -U "#{abcs["test"]["username"]}" -f db/#{RAILS_ENV}_structure.sql #{abcs["test"]["database"]}` 261 when "sqlite", "sqlite3"261 when /sqlite/ 262 262 dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"] 263 263 `#{abcs["test"]["adapter"]} #{dbfile} < db/#{RAILS_ENV}_structure.sql` 264 when "sqlserver"264 when /sqlserver/ 265 265 `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql` 266 when "oci", "oracle"266 when /oci/, /oracle/ 267 267 ActiveRecord::Base.establish_connection(:test) 268 268 IO.readlines("db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl| 269 269 ActiveRecord::Base.connection.execute(ddl) 270 270 end 271 when "firebird"271 when /firebird/ 272 272 set_firebird_env(abcs["test"]) 273 273 db_string = firebird_db_string(abcs["test"]) 274 274 sh "isql -i db/#{RAILS_ENV}_structure.sql #{db_string}" … … 281 281 task :purge => :environment do 282 282 abcs = ActiveRecord::Base.configurations 283 283 case abcs["test"]["adapter"] 284 when "mysql"284 when /mysql/ 285 285 ActiveRecord::Base.establish_connection(:test) 286 286 ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"]) 287 when "postgresql"287 when /postgresql/ 288 288 ENV['PGHOST'] = abcs["test"]["host"] if abcs["test"]["host"] 289 289 ENV['PGPORT'] = abcs["test"]["port"].to_s if abcs["test"]["port"] 290 290 ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"] … … 293 293 ActiveRecord::Base.clear_active_connections! 294 294 `dropdb -U "#{abcs["test"]["username"]}" #{abcs["test"]["database"]}` 295 295 `createdb #{enc_option} -U "#{abcs["test"]["username"]}" #{abcs["test"]["database"]}` 296 when "sqlite","sqlite3"296 when /sqlite/ 297 297 dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"] 298 298 File.delete(dbfile) if File.exist?(dbfile) 299 when "sqlserver"299 when /sqlserver/ 300 300 dropfkscript = "#{abcs["test"]["host"]}.#{abcs["test"]["database"]}.DP1".gsub(/\\/,'-') 301 301 `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{dropfkscript}` 302 302 `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql` 303 when "oci", "oracle"303 when /oci/, /oracle/ 304 304 ActiveRecord::Base.establish_connection(:test) 305 305 ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl| 306 306 ActiveRecord::Base.connection.execute(ddl) 307 307 end 308 when "firebird"308 when /firebird/ 309 309 ActiveRecord::Base.establish_connection(:test) 310 310 ActiveRecord::Base.connection.recreate_database! 311 311 else … … 339 339 340 340 def drop_database(config) 341 341 case config['adapter'] 342 when 'mysql'342 when /mysql/ 343 343 ActiveRecord::Base.connection.drop_database config['database'] 344 when / ^sqlite/344 when /sqlite/ 345 345 FileUtils.rm(File.join(RAILS_ROOT, config['database'])) 346 when 'postgresql'346 when /postgresql/ 347 347 `dropdb "#{config['database']}"` 348 348 end 349 349 end