mig (owner)

Revisions

gist: 35744 Download_button fork
public
Description:
sqlite3 in memory test db
Public Clone URL: git://gist.github.com/35744.git
sqlite3_in_memory.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Update: Looks for the SQLite and SQLite3 adapters for
# compatibility with Rails 1.2.2 and also older versions.
def in_memory_database?
  if ENV["RAILS_ENV"] == "test" and
    (Rails::Configuration.new.database_configuration['test']['database'] == ':memory:' or
    Rails::Configuration.new.database_configuration['test']['dbfile'] == ':memory:')
    begin
      if ActiveRecord::Base.connection.class == ActiveRecord::ConnectionAdapters::SQLite3Adapter
        return true
      end
    rescue NameError => e
      if ActiveRecord::Base.connection.class == ActiveRecord::ConnectionAdapters::SQLiteAdapter
        return true
      end
    end
  end
  false
end
 
def verbosity
  Rails::Configuration.new.database_configuration['test']['verbosity']
end
 
def inform_using_in_memory
  puts "Creating sqlite :memory: database"
end
 
if in_memory_database?
  load_schema = lambda {
    load "#{RAILS_ROOT}/db/schema.rb" # use db agnostic schema by default
    # ActiveRecord::Migrator.up('db/migrate') # use migrations
  }
  case verbosity
  when "silent"
    silence_stream(STDOUT, &load_schema)
  when "quiet"
    inform_using_in_memory
    silence_stream(STDOUT, &load_schema)
  else
    inform_using_in_memory
    load_schema.call
  end
end