class LogView::DoSSH

Public Class Methods

new(project, obj_config) click to toggle source
# File lib/log_view/do_ssh.rb, line 5
def initialize project, obj_config
  @project = project.to_s
  @thread_array = []
  @should_close = false
  @obj_config = obj_config
end

Public Instance Methods

close() click to toggle source
# File lib/log_view/do_ssh.rb, line 22
def close
  @should_close = true
  @thread_array.map(&:exit)
end
start() click to toggle source
# File lib/log_view/do_ssh.rb, line 12
def start
  each_server do |server|
    run_on_server(server) {|session, file|

      exec session, server, file

    }
  end
end

Protected Instance Methods

execute_command(server, channel, file) click to toggle source
# File lib/log_view/do_ssh.rb, line 28
def execute_command server, channel, file
  raise NotImplementedError.new
end

Private Instance Methods

each_server(&block) click to toggle source
# File lib/log_view/do_ssh.rb, line 33
def each_server &block
  @obj_config.servers.each {|server| @thread_array << block.call(server)}
  @thread_array.map(&:join)
end
exec(session, server, file) click to toggle source
# File lib/log_view/do_ssh.rb, line 47
def exec session, server, file
  session.open_channel do |channel|
    channel.request_pty do |ch|

      execute_command server, channel, file

    end
  end
end
run_on_server(server, &block) click to toggle source
# File lib/log_view/do_ssh.rb, line 38
def run_on_server server, &block
  Thread.new {
    Net::SSH.start(server, @obj_config.user, password: @obj_config.password) do |session|
      @obj_config.files.each {|file| block.call(session, file)}
      session.loop { not @should_close }
    end
  }
end