diff options
Diffstat (limited to 'activemodel/test/cases')
-rw-r--r-- | activemodel/test/cases/tests_database.rb | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/activemodel/test/cases/tests_database.rb b/activemodel/test/cases/tests_database.rb index cb5cda98f5..0f4475fa2d 100644 --- a/activemodel/test/cases/tests_database.rb +++ b/activemodel/test/cases/tests_database.rb @@ -6,25 +6,35 @@ require 'active_record/fixtures' module ActiveModel module TestsDatabase + mattr_accessor :connected + def self.included(base) - ActiveRecord::Base.logger = Logger.new("debug.log") - ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:') + unless self.connected + setup_connection + setup_schema + end base.send :include, ActiveRecord::TestFixtures - base.setup :setup_database end - def setup_database - unless $schema_file_loaded - begin - # TODO : May the better way be with you - original, $stdout = $stdout, StringIO.new - load(SCHEMA_FILE) - ensure - $stdout = original - end + def self.setup_schema + original, $stdout = $stdout, StringIO.new + load(SCHEMA_FILE) + ensure + $stdout = original + self.connected = true + end - $schema_file_loaded = true + def self.setup_connection + defaults = { :database => ':memory:' } + begin + adapter = defined?(JRUBY_VERSION) ? 'jdbcsqlite3' : 'sqlite3' + options = defaults.merge :adapter => adapter, :timeout => 500 + ActiveRecord::Base.establish_connection(options) + rescue Exception + $stderr.puts 'SQLite 3 unavailable; trying SQLite 2.' + options = defaults.merge :adapter => 'sqlite' + ActiveRecord::Base.establish_connection(options) end end end |