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

Ticket #9045: rails_postgresql_create_drop_db_tasks.patch

File rails_postgresql_create_drop_db_tasks.patch, 1.3 kB (added by ez, 1 year ago)

Change db:create and db:drop tasks to use ActiveRecord instead of command line for PostgreSQL

  • railties/lib/tasks/databases.rake

    old new  
    3333            $stderr.puts "Couldn't create database for #{config.inspect}" 
    3434          end 
    3535        when 'postgresql' 
    36           `createdb "#{config['database']}" -E utf8` 
     36          @encoding ||= ENV['CHARSET'] 
     37          begin 
     38            ActiveRecord::Base.establish_connection(config.merge({'database' => nil})) 
     39            ActiveRecord::Base.connection.create_database(config['database'], {:encoding => @encoding}) 
     40            ActiveRecord::Base.establish_connection(config) 
     41            p "PostgreSQL #{config['database']} database succesfully created" 
     42          rescue 
     43            $stderr.puts "Couldn't create database for #{config.inspect}" 
     44          end 
    3745        when 'sqlite' 
    3846          `sqlite "#{config['database']}"` 
    3947        when 'sqlite3' 
     
    5664    when /^sqlite/ 
    5765      FileUtils.rm_f File.join(RAILS_ROOT, config['database']) 
    5866    when 'postgresql' 
    59       `dropdb "#{config['database']}"` 
     67      ActiveRecord::Base.establish_connection(config.merge({'database' => nil})) 
     68      ActiveRecord::Base.connection.drop_database config['database'] 
    6069    end 
    6170  end 
    6271