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