From fb9ff6eb8cbad57b3ca2bbd58dc098f208edd1e1 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 29 Apr 2017 22:58:11 +0200 Subject: Integrate MySQL support * Create a `.runshell()` method in `DBShell::Client::MySQL` * Delegate to that class & method from `DBShell::Client::Database` --- lib/dbshell/client/database.rb | 3 +++ lib/dbshell/client/mysql.rb | 5 +++++ spec/dbshell/client/database_spec.rb | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/lib/dbshell/client/database.rb b/lib/dbshell/client/database.rb index 86cbfef..b6be74b 100644 --- a/lib/dbshell/client/database.rb +++ b/lib/dbshell/client/database.rb @@ -1,5 +1,6 @@ require 'dbshell/client/sqlite3' require 'dbshell/client/postgres' +require 'dbshell/client/mysql' module DBShell module Client @@ -10,6 +11,8 @@ module DBShell DBShell::Client::SQLite3 when 'postgresql' DBShell::Client::Postgres + when 'mysql2' + DBShell::Client::MySQL else raise UnsupportedDatabaseAdapter end diff --git a/lib/dbshell/client/mysql.rb b/lib/dbshell/client/mysql.rb index 6cb8233..536186a 100644 --- a/lib/dbshell/client/mysql.rb +++ b/lib/dbshell/client/mysql.rb @@ -3,6 +3,11 @@ module DBShell class MySQL EXECUTABLE_NAME = 'mysql' + def self.runshell(db_info) + args = self.build_command(db_info) + exec(*args) + end + def self.build_command(db_info) args = [EXECUTABLE_NAME] diff --git a/spec/dbshell/client/database_spec.rb b/spec/dbshell/client/database_spec.rb index d553871..0670334 100644 --- a/spec/dbshell/client/database_spec.rb +++ b/spec/dbshell/client/database_spec.rb @@ -15,6 +15,12 @@ describe DBShell::Client::Database do }).must_equal(DBShell::Client::Postgres) end + it "handles MySQL" do + DBShell::Client::Database.handler({ + 'adapter' => 'mysql2' + }).must_equal(DBShell::Client::MySQL) + end + it "raises an error if no suitable adapter is found" do proc do DBShell::Client::Database.handler({ -- cgit v1.2.3