Sha256: 3c3b90f7ba321b5dffda7e078269e3837008384947d2d0546f6230c16804023c

Contents?: true

Size: 1.42 KB

Versions: 14

Compression:

Stored size: 1.42 KB

Contents

require 'mcrain'

# don't require 'redis' here in order to use mcrain without 'redis' gem
# require 'redis'

module Mcrain
  class Mysql < Base
    self.server_name = :mysql

    self.port = 3306

    def client_require
      'mysql2'
    end

    def client_class
      ::Mysql2::Client
    end

    def client_init_args
      options = {
        host: host,
        port: port,
        username: username || "root"
      }
      options[:password] = password if password.present?
      options[:database] = database if database.present?
      return [options]
    end

    def wait_for_ready
      client.query("show databases").to_a
    end

    attr_accessor :db_dir
    attr_accessor :database
    attr_accessor :username, :password

    DB_DIR_ON_CONTAINER = '/var/lib/mysql'.freeze

    def build_docker_options
      r = super

      username = self.username || "root" # overwrite locally
      key_user = (username == "root") ? nil                   : "MYSQL_USER"
      key_pw   = (username == "root") ? "MYSQL_ROOT_PASSWORD" : "MYSQL_PASSWORD"
      envs = []
      envs << (password.blank? ? "MYSQL_ALLOW_EMPTY_PASSWORD=yes" : "#{key_pw}=#{password}")
      envs << "#{key_user}=#{username}"  if key_user
      envs << "MYSQL_DATABASE=#{database}" if database
      add_volume_options(r, DB_DIR_ON_CONTAINER, File.expand_path(db_dir)) if db_dir && !db_dir.empty?
      r['Env'] = envs unless envs.empty?
      return r
    end

  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
mcrain-0.8.4 lib/mcrain/mysql.rb
mcrain-0.8.3 lib/mcrain/mysql.rb
mcrain-0.8.2 lib/mcrain/mysql.rb
mcrain-0.8.1 lib/mcrain/mysql.rb
mcrain-0.8.0 lib/mcrain/mysql.rb
mcrain-0.7.3 lib/mcrain/mysql.rb
mcrain-0.7.2 lib/mcrain/mysql.rb
mcrain-0.7.1 lib/mcrain/mysql.rb
mcrain-0.7.0 lib/mcrain/mysql.rb
mcrain-0.6.0 lib/mcrain/mysql.rb
mcrain-0.5.0 lib/mcrain/mysql.rb
mcrain-0.4.0 lib/mcrain/mysql.rb
mcrain-0.3.3 lib/mcrain/mysql.rb
mcrain-0.3.2 lib/mcrain/mysql.rb