如何将Net :: SSH转换为模型方法?

时间:2015-06-30 07:57:45

标签: ruby-on-rails ruby

我有一个rails模型Instance,代表一个EC2实例。

目前,每当我有一个必须通过SSH方法的方法时,我必须在我想要的地方设置Net :: SSH,这很多。

例如:

Net::SSH.start(ip, 'ubuntu', keys: "mykey.pem" ) do |ssh|
  ssh.exec "sudo chmod +x /tmp/provision.sh"
end

有没有办法让'ssh'设置位到Instance模型中?

1 个答案:

答案 0 :(得分:3)

如何将它封装到私有方法中,并与调用位置产生连接。

class Instance

  def chmod
    start do |ssh|
      ssh.exec "sudo chmod +x /tmp/provision.sh"
      # other operations on ssh
    end
  end

  private

    def start
      Net::SSH.start(ip, 'ubuntu', keys: "mykey.pem" ) do |ssh|
        yield ssh
      end
    end
end