From c46ff516a25684a2d04d453b2db44d6fa224c350 Mon Sep 17 00:00:00 2001 From: Max Melentiev Date: Mon, 24 Dec 2012 15:46:52 +0400 Subject: fix for messages in invalid encoding from db-drivers --- .../lib/active_record/connection_adapters/abstract_adapter.rb | 6 +++++- .../test/cases/connection_adapters/abstract_adapter_test.rb | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 8aa1ce5c04..e3ff0fb2c5 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -358,7 +358,11 @@ module ActiveRecord :statement_name => statement_name, :binds => binds) { yield } rescue => e - message = "#{e.class.name}: #{e.message}: #{sql}" + begin + message = "#{e.class.name}: #{e.message}: #{sql}" + rescue Encoding::CompatibilityError + message = "#{e.class.name}: #{e.message.force_encoding sql.encoding}: #{sql}" + end @logger.error message if @logger exception = translate_exception(e, message) exception.set_backtrace e.backtrace diff --git a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb index eb2fe5639b..d6fd39cb09 100644 --- a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb +++ b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- require "cases/helper" module ActiveRecord @@ -57,6 +58,14 @@ module ActiveRecord assert_equal adapter, pool.connection end + + def test_log_invalid_encoding + assert_raise ActiveRecord::StatementInvalid do + adapter.send :log, "SELECT 'ы' FROM DUAL" do + raise 'ы'.force_encoding(Encoding::ASCII_8BIT) + end + end + end end end end -- cgit v1.2.3