From ca7a49bf8b33022576cd95f28754738da1fde708 Mon Sep 17 00:00:00 2001 From: Alexander Dymo Date: Mon, 30 Mar 2009 13:44:17 +0300 Subject: [PATCH] Obey encoding setting from database.yml when creating postgresql databases --- .../connection_adapters/postgresql_adapter.rb | 4 +--- .../test/cases/active_schema_test_postgresql.rb | 1 + railties/lib/tasks/databases.rake | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 913bb52..6ade7c3 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -568,9 +568,7 @@ module ActiveRecord # create_database config[:database], config # create_database 'foo_development', :encoding => 'unicode' def create_database(name, options = {}) - options = options.reverse_merge(:encoding => "utf8") - - option_string = options.symbolize_keys.sum do |key, value| + option_string = options.symbolize_keys.reverse_merge(:encoding => "utf8").sum do |key, value| case key when :owner " OWNER = \"#{value}\"" diff --git a/activerecord/test/cases/active_schema_test_postgresql.rb b/activerecord/test/cases/active_schema_test_postgresql.rb index af80f72..85b478e 100644 --- a/activerecord/test/cases/active_schema_test_postgresql.rb +++ b/activerecord/test/cases/active_schema_test_postgresql.rb @@ -15,6 +15,7 @@ class PostgresqlActiveSchemaTest < Test::Unit::TestCase def test_create_database_with_encoding assert_equal %(CREATE DATABASE "matt" ENCODING = 'utf8'), create_database(:matt) assert_equal %(CREATE DATABASE "aimonetti" ENCODING = 'latin1'), create_database(:aimonetti, :encoding => :latin1) + assert_equal %(CREATE DATABASE "aimonetti" ENCODING = 'latin1'), create_database(:aimonetti, :encoding => 'latin1') end private diff --git a/railties/lib/tasks/databases.rake b/railties/lib/tasks/databases.rake index 9588fab..f70f5e2 100644 --- a/railties/lib/tasks/databases.rake +++ b/railties/lib/tasks/databases.rake @@ -64,7 +64,7 @@ namespace :db do $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)" end when 'postgresql' - @encoding = config[:encoding] || ENV['CHARSET'] || 'utf8' + @encoding = config['encoding'] || ENV['CHARSET'] || 'utf8' begin ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public')) ActiveRecord::Base.connection.create_database(config['database'], config.merge('encoding' => @encoding)) -- 1.6.0.2