From 4a582aa7caf31faa87f435b8ae39fdb85fab1042 Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Fri, 20 Mar 2009 17:49:57 +0000 Subject: Use mattr_accessor in TestsDatabase instead of setup method --- activemodel/test/cases/tests_database.rb | 36 ++++++++++++++++++++------------ 1 file 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 -- cgit v1.2.3