-
Notifications
You must be signed in to change notification settings - Fork 35
/
helper.rb
75 lines (63 loc) · 2.03 KB
/
helper.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
require 'rubygems' unless defined?(Gem)
require 'bundler/setup'
require 'mini_record'
require 'minitest/autorun'
class ActiveRecord::Base
class << self
attr_accessor :logs
def db_fields
connection.columns(table_name).inject({}) do |hash, column|
hash[column.name.to_sym] = column
hash
end
end
def db_columns
connection.columns(table_name).map(&:name).sort
end
def db_indexes
connection.indexes(table_name).map(&:name).sort
end
def schema_columns
table_definition.columns.map { |c| c.name.to_s }.sort
end
def schema_fields
table_definition.columns.inject({}) do |hash, column|
hash[column.name.to_sym] = column
hash
end
end
def queries(pragma=false)
ActiveRecord::Base.logs.string.gsub(/\e\[[\d;]+m/, '').lines.reject { |l| !pragma && l =~ /pragma/i }.join("\n")
end
def auto_upgrade!(*args)
ActiveRecord::Base.logs = StringIO.new
ActiveRecord::Base.logger = ActiveSupport::BufferedLogger.new(ActiveRecord::Base.logs)
silence_stream(STDERR) { super }
end
def auto_upgrade_dry
ActiveRecord::Base.logs = StringIO.new
ActiveRecord::Base.logger = ActiveSupport::BufferedLogger.new(ActiveRecord::Base.logs)
silence_stream(STDERR) { super }
end
end
end # ActiveRecord::Base
# Setup Adatper
case ENV['DB']
when 'mysql'
ActiveRecord::Base.establish_connection(:adapter => 'mysql', :database => 'test', :user => 'root')
when 'mysql2'
ActiveRecord::Base.establish_connection(:adapter => 'mysql2', :database => 'test', :user => 'root')
Bundler.require(:test) # require 'foreigner'
Foreigner.load
when 'pg', 'postgresql'
ActiveRecord::Base.establish_connection(:adapter => 'postgresql', :database => 'test', :user => 'postgres', :host => 'localhost')
else
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
end
# Some helpers to minitest
class MiniTest::Spec
def connection
ActiveRecord::Base.connection
end
alias :conn :connection
end