diff options
-rw-r--r-- | lib/dbshell/client/postgres.rb | 4 | ||||
-rw-r--r-- | lib/dbshell/exec_alias.rb | 11 | ||||
-rw-r--r-- | spec/dbshell/exec_alias_spec.rb | 25 |
3 files changed, 39 insertions, 1 deletions
diff --git a/lib/dbshell/client/postgres.rb b/lib/dbshell/client/postgres.rb index 78b82d7..9979710 100644 --- a/lib/dbshell/client/postgres.rb +++ b/lib/dbshell/client/postgres.rb @@ -1,3 +1,5 @@ +require 'dbshell/exec_alias' + module DBShell module Client class Postgres @@ -5,7 +7,7 @@ module DBShell def self.runshell(db_info) args = self.build_command(db_info) - exec(*args) + DBShell::ExecAlias.exec(args) end def self.build_command(db_info) diff --git a/lib/dbshell/exec_alias.rb b/lib/dbshell/exec_alias.rb new file mode 100644 index 0000000..7bd86b7 --- /dev/null +++ b/lib/dbshell/exec_alias.rb @@ -0,0 +1,11 @@ +module DBShell + class ExecAlias + def self.exec(command_args) + Kernel.exec(*self.build_command(command_args)) + end + + def self.build_command(command_args) + [ENV['SHELL'], '--login', '-c', command_args.join(' ')] + end + end +end diff --git a/spec/dbshell/exec_alias_spec.rb b/spec/dbshell/exec_alias_spec.rb new file mode 100644 index 0000000..1b8c425 --- /dev/null +++ b/spec/dbshell/exec_alias_spec.rb @@ -0,0 +1,25 @@ +require 'minitest/autorun' +require 'dbshell/exec_alias' + +describe DBShell::ExecAlias do + describe ".build_command" do + it "prefixes the command with an interactive version of the current \ + shell" do + DBShell::ExecAlias.build_command([ + 'psql', + '-U', + 'derpyhooves', + '-h', + 'mailmarehost', + '-p', + '6027', + 'dbname' + ]).must_equal([ + ENV['SHELL'], + '-i', + '-c', + 'psql -U derpyhooves -h mailmarehost -p 6027 dbname' + ]) + end + end +end |