public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
Change all databases.rake adapter 'when' statements to use regexes.

This is more friendly to JRuby/JDBC adapters (with names like 'jdbcmysql')
and leaves the door open to alternate implementations of adapters in the
future.
Nick (author)
Tue Apr 15 06:32:05 -0700 2008
commit  1a81f156bd81990a50ecf13986b2131dbd20a62b
tree    6b4c868840233a284b3b0540f7b6168043d372c5
parent  db26b47b9f4dbebd478a5fe6c0dcd38b8697939a
...
32
33
34
35
 
36
37
38
...
42
43
44
45
 
46
47
48
...
52
53
54
55
 
56
57
 
58
59
60
...
239
240
241
242
 
243
244
245
...
250
251
252
253
 
254
255
256
 
257
258
259
 
260
261
262
...
285
286
287
288
 
289
290
291
292
293
294
 
295
296
297
...
301
302
303
304
 
305
306
307
308
309
 
310
311
312
...
319
320
321
322
 
323
324
325
...
329
330
331
332
 
333
334
335
336
 
337
338
339
340
341
 
342
343
344
...
372
373
374
375
 
376
377
 
378
379
380
...
32
33
34
 
35
36
37
38
...
42
43
44
 
45
46
47
48
...
52
53
54
 
55
56
 
57
58
59
60
...
239
240
241
 
242
243
244
245
...
250
251
252
 
253
254
255
 
256
257
258
 
259
260
261
262
...
285
286
287
 
288
289
290
291
292
293
 
294
295
296
297
...
301
302
303
 
304
305
306
307
308
 
309
310
311
312
...
319
320
321
 
322
323
324
325
...
329
330
331
 
332
333
334
335
 
336
337
338
339
340
 
341
342
343
344
...
372
373
374
 
375
376
 
377
378
379
380
0
@@ -32,7 +32,7 @@ namespace :db do
0
       ActiveRecord::Base.connection
0
     rescue
0
       case config['adapter']
0
-      when 'mysql'
0
+      when /mysql/
0
         @charset   = ENV['CHARSET']   || 'utf8'
0
         @collation = ENV['COLLATION'] || 'utf8_general_ci'
0
         begin
0
@@ -42,7 +42,7 @@ namespace :db do
0
         rescue
0
           $stderr.puts "Couldn't create database for #{config.inspect}, charset: #{config['charset'] || @charset}, collation: #{config['collation'] || @collation} (if you set the charset manually, make sure you have a matching collation)"
0
         end
0
-      when 'postgresql'
0
+      when /postgresql/
0
         @encoding = config[:encoding] || ENV['CHARSET'] || 'utf8'
0
         begin
0
           ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
0
@@ -52,9 +52,9 @@ namespace :db do
0
           $stderr.puts $!, *($!.backtrace)
0
           $stderr.puts "Couldn't create database for #{config.inspect}"
0
         end
0
-      when 'sqlite'
0
+      when /sqlite$/
0
         `sqlite "#{config['database']}"`
0
-      when 'sqlite3'
0
+      when /sqlite3$/
0
         `sqlite3 "#{config['database']}"`
0
       end
0
     else
0
@@ -239,7 +239,7 @@ namespace :db do
0
     task :dump => :environment do
0
       abcs = ActiveRecord::Base.configurations
0
       case abcs[RAILS_ENV]["adapter"]
0
-      when "mysql", "oci", "oracle"
0
+      when /mysql/, /oci/, /oracle/
0
         ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
0
         File.open("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
0
       when "postgresql"
0
@@ -250,13 +250,13 @@ namespace :db do
0
         search_path = "--schema=#{search_path}" if search_path
0
         `pg_dump -i -U "#{abcs[RAILS_ENV]["username"]}" -s -x -O -f db/#{RAILS_ENV}_structure.sql #{search_path} #{abcs[RAILS_ENV]["database"]}`
0
         raise "Error dumping database" if $?.exitstatus == 1
0
-      when "sqlite", "sqlite3"
0
+      when /sqlite/
0
         dbfile = abcs[RAILS_ENV]["database"] || abcs[RAILS_ENV]["dbfile"]
0
         `#{abcs[RAILS_ENV]["adapter"]} #{dbfile} .schema > db/#{RAILS_ENV}_structure.sql`
0
-      when "sqlserver"
0
+      when /sqlserver/
0
         `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /f db\\#{RAILS_ENV}_structure.sql /q /A /r`
0
         `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /F db\ /q /A /r`
0
-      when "firebird"
0
+      when /firebird/
0
         set_firebird_env(abcs[RAILS_ENV])
0
         db_string = firebird_db_string(abcs[RAILS_ENV])
0
         sh "isql -a #{db_string} > #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql"
0
@@ -285,13 +285,13 @@ namespace :db do
0
     task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do
0
       abcs = ActiveRecord::Base.configurations
0
       case abcs["test"]["adapter"]
0
-      when "mysql"
0
+      when /mysql/
0
         ActiveRecord::Base.establish_connection(:test)
0
         ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0')
0
         IO.readlines("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql").join.split("\n\n").each do |table|
0
           ActiveRecord::Base.connection.execute(table)
0
         end
0
-      when "postgresql"
0
+      when /postgresql/
0
         ENV['PGHOST']     = abcs["test"]["host"] if abcs["test"]["host"]
0
         ENV['PGPORT']     = abcs["test"]["port"].to_s if abcs["test"]["port"]
0
         ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"]
0
@@ -301,12 +301,12 @@ namespace :db do
0
         `#{abcs["test"]["adapter"]} #{dbfile} < #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql`
0
       when "sqlserver"
0
         `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql`
0
-      when "oci", "oracle"
0
+      when /oci/, /oracle/
0
         ActiveRecord::Base.establish_connection(:test)
0
         IO.readlines("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl|
0
           ActiveRecord::Base.connection.execute(ddl)
0
         end
0
-      when "firebird"
0
+      when /firebird/
0
         set_firebird_env(abcs["test"])
0
         db_string = firebird_db_string(abcs["test"])
0
         sh "isql -i #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql #{db_string}"
0
@@ -319,7 +319,7 @@ namespace :db do
0
     task :purge => :environment do
0
       abcs = ActiveRecord::Base.configurations
0
       case abcs["test"]["adapter"]
0
-      when "mysql"
0
+      when /mysql/
0
         ActiveRecord::Base.establish_connection(:test)
0
         ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"])
0
       when "postgresql"
0
@@ -329,16 +329,16 @@ namespace :db do
0
       when "sqlite","sqlite3"
0
         dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
0
         File.delete(dbfile) if File.exist?(dbfile)
0
-      when "sqlserver"
0
+      when /sqlserver/
0
         dropfkscript = "#{abcs["test"]["host"]}.#{abcs["test"]["database"]}.DP1".gsub(/\\/,'-')
0
         `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{dropfkscript}`
0
         `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql`
0
-      when "oci", "oracle"
0
+      when /oci/, /oracle/
0
         ActiveRecord::Base.establish_connection(:test)
0
         ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl|
0
           ActiveRecord::Base.connection.execute(ddl)
0
         end
0
-      when "firebird"
0
+      when /firebird/
0
         ActiveRecord::Base.establish_connection(:test)
0
         ActiveRecord::Base.connection.recreate_database!
0
       else
0
@@ -372,9 +372,9 @@ end
0
 
0
 def drop_database(config)
0
   case config['adapter']
0
-  when 'mysql'
0
+  when /mysql/
0
     ActiveRecord::Base.connection.drop_database config['database']
0
-  when /^sqlite/
0
+  when /sqlite/
0
     FileUtils.rm(File.join(RAILS_ROOT, config['database']))
0
   when 'postgresql'
0
     ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))

Comments