Sha256: 11d26b49c774cf678c018a44dd40aef6f5951958e9518aaf0c48c4880a02a5db

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

module Wordmove
  class Doctor
    class Mysql
      attr_reader :config, :logger

      def initialize(movefile_name = nil, movefile_dir = '.')
        @config = Wordmove::Movefile.new.fetch(movefile_name, movefile_dir)["local"]["database"]
        @logger = Logger.new(STDOUT).tap { |l| l.level = Logger::INFO }
      end

      def check!
        logger.task "Checking local database commands and connection"

        mysql_client_doctor
        mysqldump_doctor
        mysql_server_doctor
      end

      private

      def mysql_client_doctor
        if system("which mysql", out: File::NULL)
          logger.success "`mysql` command is in $PATH"
        else
          logger.error "`mysql` command is not in $PATH"
        end
      end

      def mysqldump_doctor
        if system("which mysqldump", out: File::NULL)
          logger.success "`mysqldump` command is in $PATH"
        else
          logger.error "`mysqldump` command is not in $PATH"
        end
      end

      def mysql_server_doctor
        command = ["mysql"]
        command << "-u #{config['user']}"
        command << "-p#{config['password']}" unless config['password'].blank?
        command << "-h #{config['host']}"
        command << "-e'QUIT'"
        command = command.join(" ")

        if system(command, out: File::NULL, err: File::NULL)
          logger.success "Successfully connected to the database"
        else
          logger.error <<~LONG
            We can't connect to the database using credentials
            specified in the Movefile. Double check them or try
            to debug your system configuration.

            The command used to test was:

            #{command}
          LONG
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wordmove-2.3.0 lib/wordmove/doctor/mysql.rb