aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases/tests_database.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activemodel/test/cases/tests_database.rb')
-rw-r--r--activemodel/test/cases/tests_database.rb36
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