From f92503c5416256d2630abc7304c02e6aec50d5a0 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 15 Sep 2007 23:21:21 +0000 Subject: RubyGem database adapters: expects a gem named activerecord--adapter with active_record/connection_adapters/_adapter.rb in its load path. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7491 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../abstract/connection_specification.rb | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'activerecord/lib/active_record/connection_adapters/abstract') diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb index 918c29114c..cd3b53d831 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb @@ -206,10 +206,26 @@ module ActiveRecord else spec = spec.symbolize_keys unless spec.key?(:adapter) then raise AdapterNotSpecified, "database configuration does not specify adapter" end - adapter_method = "#{spec[:adapter]}_connection" - require "active_record/connection_adapters/#{spec[:adapter]}_adapter" - unless respond_to?(adapter_method) + tried_gem = false + begin + require "active_record/connection_adapters/#{spec[:adapter]}_adapter" + rescue LoadError + raise if tried_gem + + begin + require 'rubygems' + gem "activerecord-#{spec[:adapter]}-adapter" + rescue LoadError + raise "Please install the #{spec[:adapter]} adapter: `gem install activerecord-#{spec[:adapter]}-adapter` (#{$!})" + end + + tried_gem = true + retry + end + + adapter_method = "#{spec[:adapter]}_connection" + if !respond_to?(adapter_method) raise AdapterNotFound, "database configuration specifies nonexistent #{spec[:adapter]} adapter" end -- cgit v1.2.3