class Slodd::Runner

Attributes

schema[RW]

Public Class Methods

new() click to toggle source
# File lib/slodd/runner.rb, line 12
def initialize
  self.schema = Config.fetcher.schema
  # patch AR to work with mysql 5.7
  ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY" # rubocop:disable Metrics/LineLength
end
run!() click to toggle source
# File lib/slodd/runner.rb, line 8
def self.run!
  new.run!
end

Public Instance Methods

run!() click to toggle source
# File lib/slodd/runner.rb, line 18
def run!
  Config.databases.each do |database|
    create_database(database)
    eval(schema) # rubocop:disable Security/Eval
  end
end

Private Instance Methods

create_database(database) click to toggle source
# File lib/slodd/runner.rb, line 27
def create_database(database)
  puts "create_database(#{database})"

  begin
    ActiveRecord::Base.establish_connection database_settings
    ActiveRecord::Base.connection.drop_database database
    ActiveRecord::Base.connection.create_database database, options
    ActiveRecord::Base.establish_connection database_settings(database)
  rescue Mysql2::Error => sqlerr
    error_message(sqlerr, database)
  end
end
database_settings(database = nil) click to toggle source
# File lib/slodd/runner.rb, line 40
def database_settings(database = nil)
  Config.database_settings.merge(database: database)
end
error_message(sqlerr, database) click to toggle source
# File lib/slodd/runner.rb, line 48
def error_message(sqlerr, database)
  $stderr.puts sqlerr.error
  settings = database_settings(database).merge(options).inspect
  $stderr.puts "Couldn't create database with settings: #{settings}"
end
options() click to toggle source
# File lib/slodd/runner.rb, line 44
def options
  { charset: "utf8", collation: "utf8_unicode_ci" }
end