class Rvm2::Shell::Runner::Ssh

Attributes

host[R]
last_status[R]
user[R]

Public Class Methods

new(host, user) click to toggle source
# File lib/rvm2/shell/runner/ssh.rb, line 6
def initialize(host, user)
  @host = host
  @user = user
end

Public Instance Methods

execute(command) { |data, nil| ... } click to toggle source

TODO: make it run in one session

# File lib/rvm2/shell/runner/ssh.rb, line 12
def execute(command)
  @last_status = nil
  ssh.open_channel do |channel|
    channel.request_pty
    channel.exec command do |ch, success|
      channel.on_data do |ch, data|
        yield(data, nil)
      end
      channel.on_extended_data do |ch, type, data|
        yield(nil, data)
      end
      channel.on_request("exit-status") do |ch, data|
        @last_status = data.read_long
      end
    end
    channel.wait
  end
  ssh.loop
  @last_status
end
ssh() click to toggle source
# File lib/rvm2/shell/runner/ssh.rb, line 33
def ssh
  @ssh ||= Net::SSH.start(host, user)
end