class Pasqual::Command
Attributes
file[RW]
host[RW]
name[RW]
output[RW]
password[RW]
port[RW]
program[RW]
status[RW]
username[RW]
Public Class Methods
execute(program, username, password, host, port, name, file = nil)
click to toggle source
# File lib/pasqual/command.rb, line 7 def self.execute(program, username, password, host, port, name, file = nil) new(program, username, password, host, port, name, file).tap { |c| c.execute } end
new(program, username, password, host, port, name, file = nil)
click to toggle source
# File lib/pasqual/command.rb, line 14 def initialize(program, username, password, host, port, name, file = nil) self.program = program self.username = username self.password = password self.host = host self.port = port self.name = name self.file = file end
Public Instance Methods
execute()
click to toggle source
# File lib/pasqual/command.rb, line 24 def execute outfile = Tempfile.new("pasqual-#{name}") outfile.sync = true process = ChildProcess.build program, *Arglist.args(username, password, host, port, name) process.io.stdout = process.io.stderr = outfile process.duplex = true if file # TODO: find out why piping to stdin doesn't work :( ENV['PGPASSWORD'] = password process.start if file && File.exist?(file) File.open file do |f| process.io.stdin.puts f.read process.io.stdin.flush end process.io.stdin.close elsif file process.io.stdin.puts file process.io.stdin.flush process.io.stdin.close end process.wait ENV['PGPASSWORD'] = nil outfile.rewind self.output = outfile.read self.status = process.exit_code end
success?()
click to toggle source
# File lib/pasqual/command.rb, line 59 def success? status == 0 end