From cad8fafa601c6a1f1449ec524c027a97fbeb84d4 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Mon, 16 Sep 2013 12:22:23 -0300 Subject: [PATCH] Optimize serializer_for for Ruby >= 2.0 --- lib/active_model/serializer.rb | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index f0a23381..d89bfb2f 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -22,11 +22,25 @@ module ActiveModel SETTINGS[:include] = true if options[:include] end - def serializer_for(resource) - if resource.respond_to?(:to_ary) - ArraySerializer - else - "#{resource.class.name}Serializer".safe_constantize + if RUBY_VERSION >= '2.0' + def serializer_for(resource) + if resource.respond_to?(:to_ary) + ArraySerializer + else + begin + Object.const_get "#{resource.class.name}Serializer" + rescue NameError + nil + end + end + end + else + def serializer_for(resource) + if resource.respond_to?(:to_ary) + ArraySerializer + else + "#{resource.class.name}Serializer".safe_constantize + end end end