From 18beb94c6dedffd913ec9d3e554024662cc38682 Mon Sep 17 00:00:00 2001 From: IgorMiller Date: Wed, 2 Dec 2015 02:24:05 -0500 Subject: [PATCH] fix-Mysql2AdapterUndefinedMethodLoaded Mysql2 was present in Adapters.constants as a Module, and require was never called, resulting in Undefined method exception. Make sure the require is called if the const_get returns a Module and not a Class --- lib/geokit-rails/acts_as_mappable.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/geokit-rails/acts_as_mappable.rb b/lib/geokit-rails/acts_as_mappable.rb index 944daf9..6c73f22 100644 --- a/lib/geokit-rails/acts_as_mappable.rb +++ b/lib/geokit-rails/acts_as_mappable.rb @@ -98,6 +98,13 @@ def adapter require File.join("geokit-rails", "adapters", filename) end klass = Adapters.const_get(connection.adapter_name.camelcase) + if klass.class == Module + # For some reason Mysql2 adapter was defined in Adapters.constants but was Module instead of a Class + filename = connection.adapter_name.downcase + require File.join("geokit-rails", "adapters", filename) + # Re-init the klass after require + klass = Adapters.const_get(connection.adapter_name.camelcase) + end klass.load(self) unless klass.loaded klass.new(self) rescue LoadError