Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

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  
    3232      ActiveRecord::Base.connection 
    3333    rescue 
    3434      case config['adapter'] 
    35       when 'mysql' 
     35      when /mysql/ 
    3636        @charset   = ENV['CHARSET']   || 'utf8' 
    3737        @collation = ENV['COLLATION'] || 'utf8_general_ci' 
    3838        begin 
     
    4242        rescue 
    4343          $stderr.puts "Couldn't create database for #{config.inspect}" 
    4444        end 
    45       when 'postgresql' 
     45      when /postgresql/ 
    4646        `createdb "#{config['database']}" -E utf8` 
    47       when 'sqlite' 
     47      when /sqlite$/ 
    4848        `sqlite "#{config['database']}"` 
    49       when 'sqlite3' 
     49      when /sqlite3$/ 
    5050        `sqlite3 "#{config['database']}"` 
    5151      end 
    5252    else 
     
    109109  task :charset => :environment do 
    110110    config = ActiveRecord::Base.configurations[RAILS_ENV || 'development'] 
    111111    case config['adapter'] 
    112     when 'mysql' 
     112    when /mysql/ 
    113113      ActiveRecord::Base.establish_connection(config) 
    114114      puts ActiveRecord::Base.connection.charset 
    115115    else 
     
    121121  task :collation => :environment do 
    122122    config = ActiveRecord::Base.configurations[RAILS_ENV || 'development'] 
    123123    case config['adapter'] 
    124     when 'mysql' 
     124    when /mysql/ 
    125125      ActiveRecord::Base.establish_connection(config) 
    126126      puts ActiveRecord::Base.connection.collation 
    127127    else 
     
    203203    task :dump => :environment do 
    204204      abcs = ActiveRecord::Base.configurations 
    205205      case abcs[RAILS_ENV]["adapter"] 
    206       when "mysql", "oci", "oracle" 
     206      when /mysql/, /oci/, /oracle/ 
    207207        ActiveRecord::Base.establish_connection(abcs[RAILS_ENV]) 
    208208        File.open("db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump } 
    209       when "postgresql" 
     209      when /postgresql/ 
    210210        ENV['PGHOST']     = abcs[RAILS_ENV]["host"] if abcs[RAILS_ENV]["host"] 
    211211        ENV['PGPORT']     = abcs[RAILS_ENV]["port"].to_s if abcs[RAILS_ENV]["port"] 
    212212        ENV['PGPASSWORD'] = abcs[RAILS_ENV]["password"].to_s if abcs[RAILS_ENV]["password"] 
     
    214214        search_path = "--schema=#{search_path}" if search_path 
    215215        `pg_dump -i -U "#{abcs[RAILS_ENV]["username"]}" -s -x -O -f db/#{RAILS_ENV}_structure.sql #{search_path} #{abcs[RAILS_ENV]["database"]}` 
    216216        raise "Error dumping database" if $?.exitstatus == 1 
    217       when "sqlite", "sqlite3" 
     217      when /sqlite/ 
    218218        dbfile = abcs[RAILS_ENV]["database"] || abcs[RAILS_ENV]["dbfile"] 
    219219        `#{abcs[RAILS_ENV]["adapter"]} #{dbfile} .schema > db/#{RAILS_ENV}_structure.sql` 
    220       when "sqlserver" 
     220      when /sqlserver/ 
    221221        `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /f db\\#{RAILS_ENV}_structure.sql /q /A /r` 
    222222        `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /F db\ /q /A /r` 
    223       when "firebird" 
     223      when /firebird/ 
    224224        set_firebird_env(abcs[RAILS_ENV]) 
    225225        db_string = firebird_db_string(abcs[RAILS_ENV]) 
    226226        sh "isql -a #{db_string} > db/#{RAILS_ENV}_structure.sql" 
     
    247247    task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do 
    248248      abcs = ActiveRecord::Base.configurations 
    249249      case abcs["test"]["adapter"] 
    250       when "mysql" 
     250      when /mysql/ 
    251251        ActiveRecord::Base.establish_connection(:test) 
    252252        ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0') 
    253253        IO.readlines("db/#{RAILS_ENV}_structure.sql").join.split("\n\n").each do |table| 
    254254          ActiveRecord::Base.connection.execute(table) 
    255255        end 
    256       when "postgresql" 
     256      when /postgresql/ 
    257257        ENV['PGHOST']     = abcs["test"]["host"] if abcs["test"]["host"] 
    258258        ENV['PGPORT']     = abcs["test"]["port"].to_s if abcs["test"]["port"] 
    259259        ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"] 
    260260        `psql -U "#{abcs["test"]["username"]}" -f db/#{RAILS_ENV}_structure.sql #{abcs["test"]["database"]}` 
    261       when "sqlite", "sqlite3" 
     261      when /sqlite/ 
    262262        dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"] 
    263263        `#{abcs["test"]["adapter"]} #{dbfile} < db/#{RAILS_ENV}_structure.sql` 
    264       when "sqlserver" 
     264      when /sqlserver/ 
    265265        `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql` 
    266       when "oci", "oracle" 
     266      when /oci/, /oracle/ 
    267267        ActiveRecord::Base.establish_connection(:test) 
    268268        IO.readlines("db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl| 
    269269          ActiveRecord::Base.connection.execute(ddl) 
    270270        end 
    271       when "firebird" 
     271      when /firebird/ 
    272272        set_firebird_env(abcs["test"]) 
    273273        db_string = firebird_db_string(abcs["test"]) 
    274274        sh "isql -i db/#{RAILS_ENV}_structure.sql #{db_string}" 
     
    281281    task :purge => :environment do 
    282282      abcs = ActiveRecord::Base.configurations 
    283283      case abcs["test"]["adapter"] 
    284       when "mysql" 
     284      when /mysql/ 
    285285        ActiveRecord::Base.establish_connection(:test) 
    286286        ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"]) 
    287       when "postgresql" 
     287      when /postgresql/ 
    288288        ENV['PGHOST']     = abcs["test"]["host"] if abcs["test"]["host"] 
    289289        ENV['PGPORT']     = abcs["test"]["port"].to_s if abcs["test"]["port"] 
    290290        ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"] 
     
    293293        ActiveRecord::Base.clear_active_connections! 
    294294        `dropdb -U "#{abcs["test"]["username"]}" #{abcs["test"]["database"]}` 
    295295        `createdb #{enc_option} -U "#{abcs["test"]["username"]}" #{abcs["test"]["database"]}` 
    296       when "sqlite","sqlite3" 
     296      when /sqlite/ 
    297297        dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"] 
    298298        File.delete(dbfile) if File.exist?(dbfile) 
    299       when "sqlserver" 
     299      when /sqlserver/ 
    300300        dropfkscript = "#{abcs["test"]["host"]}.#{abcs["test"]["database"]}.DP1".gsub(/\\/,'-') 
    301301        `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{dropfkscript}` 
    302302        `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql` 
    303       when "oci", "oracle" 
     303      when /oci/, /oracle/ 
    304304        ActiveRecord::Base.establish_connection(:test) 
    305305        ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl| 
    306306          ActiveRecord::Base.connection.execute(ddl) 
    307307        end 
    308       when "firebird" 
     308      when /firebird/ 
    309309        ActiveRecord::Base.establish_connection(:test) 
    310310        ActiveRecord::Base.connection.recreate_database! 
    311311      else 
     
    339339 
    340340def drop_database(config) 
    341341  case config['adapter'] 
    342   when 'mysql' 
     342  when /mysql/ 
    343343    ActiveRecord::Base.connection.drop_database config['database'] 
    344   when /^sqlite/ 
     344  when /sqlite/ 
    345345    FileUtils.rm(File.join(RAILS_ROOT, config['database'])) 
    346   when 'postgresql' 
     346  when /postgresql/ 
    347347    `dropdb "#{config['database']}"` 
    348348  end 
    349349end