Class: Gemika::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/gemika/database.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Database

Returns a new instance of Database.



6
7
8
9
10
11
12
13
# File 'lib/gemika/database.rb', line 6

def initialize(options = {})
  config_folder = options.fetch(:config_folder, 'spec/support')
  config_filename = travis? ? 'database.travis.yml' : 'database.yml'
  config_path = File.join(config_folder, config_filename)
  File.exists?(config_path) or raise ArgumentError, "Missing database configuration file: #{database_config_file}"
  @config = YAML.load_file(config_path)
  @connected = false
end

Instance Method Details

#connectObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/gemika/database.rb', line 15

def connect
  unless @connected
    if pg?
      adapter_config = (@config['postgresql'] || @config['postgres'] || @config['pg']).merge(adapter: 'postgresql')
    elsif mysql2?
      adapter_config = (@config['mysql2'] || @config['mysql']).merge(adapter: 'mysql2', encoding: 'utf8')
    else
      raise "Unknown database type"
    end
    ActiveRecord::Base.establish_connection(adapter_config)
    @connected = true
  end
end

#drop_tables!Object



29
30
31
32
33
34
# File 'lib/gemika/database.rb', line 29

def drop_tables!
  connect
  connection.tables.each do |table|
    connection.drop_table table
  end
end

#migrate(&block) ⇒ Object



36
37
38
39
# File 'lib/gemika/database.rb', line 36

def migrate(&block)
  connect
  ActiveRecord::Migration.class_eval(&block)
end

#rewrite_schema!(&block) ⇒ Object



41
42
43
44
45
# File 'lib/gemika/database.rb', line 41

def rewrite_schema!(&block)
  connect
  drop_tables!
  migrate(&block)
end