Class: Webbynode::RemoteExecutor

Inherits:
Object
  • Object
show all
Defined in:
lib/webbynode/remote_executor.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ip, user = nil, port = nil) ⇒ RemoteExecutor

Returns a new instance of RemoteExecutor.



5
6
7
8
9
# File 'lib/webbynode/remote_executor.rb', line 5

def initialize(ip, user=nil, port=nil)
  @ip = ip
  @user = user
  @port = port
end

Instance Attribute Details

#ipObject

Returns the value of attribute ip.



3
4
5
# File 'lib/webbynode/remote_executor.rb', line 3

def ip
  @ip
end

#portObject

Returns the value of attribute port.



3
4
5
# File 'lib/webbynode/remote_executor.rb', line 3

def port
  @port
end

#userObject

Returns the value of attribute user.



3
4
5
# File 'lib/webbynode/remote_executor.rb', line 3

def user
  @user
end

Instance Method Details

#create_folder(folder) ⇒ Object



15
16
17
# File 'lib/webbynode/remote_executor.rb', line 15

def create_folder(folder)
  ssh.execute "mkdir -p #{folder}"
end

#exec(cmd, echo = false, exit_code = false) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/webbynode/remote_executor.rb', line 40

def exec(cmd, echo=false, exit_code=false)
  begin
    ssh.execute(cmd, echo, exit_code)
  rescue Errno::ECONNREFUSED
    raise Webbynode::Command::CommandError,
      "Could not connect to #{@ip}. Please check your settings and your network connection and try again."
  end
end

#gem_installed?(gem_name, version = nil) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/webbynode/remote_executor.rb', line 23

def gem_installed?(gem_name, version=nil)
  exec("gem list -i #{version(version)}#{gem_name}") == 'true'
end

#install_gem(gem_name, version = nil) ⇒ Object



27
28
29
# File 'lib/webbynode/remote_executor.rb', line 27

def install_gem(gem_name, version=nil)
  exec("sudo gem install #{version(version)}#{gem_name} > /dev/null 2>1; echo $?") == '0'
end

#remote_homeObject



31
32
33
# File 'lib/webbynode/remote_executor.rb', line 31

def remote_home
  exec('pwd').strip
end

#retrieve_db_passwordObject



35
36
37
38
# File 'lib/webbynode/remote_executor.rb', line 35

def retrieve_db_password
  password = exec %q(echo `cat /var/webbynode/templates/rails/database.yml | grep password: | tail -1 | cut -d ":" -f 2`)
  password.strip
end

#sshObject



11
12
13
# File 'lib/webbynode/remote_executor.rb', line 11

def ssh
  @ssh ||= Ssh.new(ip, user, port)
end

#version(v) ⇒ Object



19
20
21
# File 'lib/webbynode/remote_executor.rb', line 19

def version(v)
  v ? "-v=#{v} " : ""
end