From ac5dfadb485ff1e06a73d69936de14464586af2c Mon Sep 17 00:00:00 2001 From: Sammy Larbi Date: Thu, 18 Jun 2015 06:30:54 -0500 Subject: Improve error message when passed unsupported type --- lib/arel/visitors/to_sql.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb index f2f9d20f21..63097a2399 100644 --- a/lib/arel/visitors/to_sql.rb +++ b/lib/arel/visitors/to_sql.rb @@ -737,7 +737,7 @@ module Arel end def unsupported o, collector - raise "unsupported: #{o.class.name}" + raise "unsupported argument type: #{o.class.name}. Construct an Arel node instead." end alias :visit_ActiveSupport_Multibyte_Chars :unsupported -- cgit v1.2.3 From 145f32ad8516f9654bdc469096c65549354829ab Mon Sep 17 00:00:00 2001 From: Sammy Larbi Date: Tue, 14 Jul 2015 17:17:15 -0500 Subject: Use a specific exception for unsupported visits --- lib/arel/visitors/to_sql.rb | 8 +++++++- test/visitors/test_to_sql.rb | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb index 63097a2399..ce1fdf80ce 100644 --- a/lib/arel/visitors/to_sql.rb +++ b/lib/arel/visitors/to_sql.rb @@ -4,6 +4,12 @@ require 'arel/visitors/reduce' module Arel module Visitors + class UnsupportedVisitError < StandardError + def initialize(object) + super "Unsupported argument type: #{object.class.name}. Construct an Arel node instead." + end + end + class ToSql < Arel::Visitors::Reduce ## # This is some roflscale crazy stuff. I'm roflscaling this because @@ -737,7 +743,7 @@ module Arel end def unsupported o, collector - raise "unsupported argument type: #{o.class.name}. Construct an Arel node instead." + raise UnsupportedVisitError.new(o) end alias :visit_ActiveSupport_Multibyte_Chars :unsupported diff --git a/test/visitors/test_to_sql.rb b/test/visitors/test_to_sql.rb index 04fca8024b..7ae5d5b3af 100644 --- a/test/visitors/test_to_sql.rb +++ b/test/visitors/test_to_sql.rb @@ -273,9 +273,9 @@ module Arel compile(Nodes.build_quoted(nil)).must_be_like "NULL" end - it "unsupported input should not raise ArgumentError" do - error = assert_raises(RuntimeError) { compile(nil) } - assert_match(/\Aunsupported/, error.message) + it "unsupported input should raise UnsupportedVisitError" do + error = assert_raises(UnsupportedVisitError) { compile(nil) } + assert_match(/\AUnsupported/, error.message) end it "should visit_Arel_SelectManager, which is a subquery" do -- cgit v1.2.3