aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorTeddy Wing2017-04-29 20:20:49 +0200
committerTeddy Wing2017-04-29 20:23:08 +0200
commitf1c4164aef7ef88735a254e1301c3e4bf5978714 (patch)
tree5453a707a8f547eeda908b9debd9206839f73a0d /lib
parent1156010222a51643c7921aa953aad052e91b666c (diff)
downloaddbshell-rails-f1c4164aef7ef88735a254e1301c3e4bf5978714.tar.bz2
dbshell.rake: Use `DBShell::DatabaseClient`
Instead of calling `DBShell::Sqlite3Client` directly, call the wrapper class that will delegate to `Sqlite3Client`, `PostgresClient`, etc. depending on the value of `adapter` in the database connection params passed in. This allows us to have a single interface that we can call from the Rake task that can handle any of the database adapters that we support.
Diffstat (limited to 'lib')
-rw-r--r--lib/dbshell/database_client.rb9
-rw-r--r--lib/dbshell/rails/tasks/dbshell.rake4
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/dbshell/database_client.rb b/lib/dbshell/database_client.rb
index 8d55095..edea777 100644
--- a/lib/dbshell/database_client.rb
+++ b/lib/dbshell/database_client.rb
@@ -1,3 +1,6 @@
+require 'dbshell/sqlite3_client'
+require 'dbshell/postgres_client'
+
class DBShell::DatabaseClient
def self.handler(connection_params)
case connection_params['adapter']
@@ -9,6 +12,12 @@ class DBShell::DatabaseClient
raise DBShell::InvalidDatabaseAdapter
end
end
+
+ def self.runshell(connection_params)
+ self
+ .handler(connection_params)
+ .runshell(connection_params)
+ end
end
diff --git a/lib/dbshell/rails/tasks/dbshell.rake b/lib/dbshell/rails/tasks/dbshell.rake
index 0505e38..7b192c3 100644
--- a/lib/dbshell/rails/tasks/dbshell.rake
+++ b/lib/dbshell/rails/tasks/dbshell.rake
@@ -1,10 +1,10 @@
-require 'dbshell/sqlite3_client'
+require 'dbshell/database_client'
task :dbshell do
# {"default"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000}, "development"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/development.sqlite3"}, "test"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/test.sqlite3"}, "production"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/production.sqlite3"}}
env = ENV.fetch('RAILS_ENV', 'development')
- DBShell::Sqlite3Client.runshell(
+ DBShell::DatabaseClient.runshell(
Rails.application.config.database_configuration[env]
)
end