0

net-ssh APIを参照すると、yaml からの接続パラメータを渡す「最良の」方法は何ですか?

エラー:

thufir@dur:~/ruby$ 
thufir@dur:~/ruby$ ruby ssh.rb 
{:host=>"localhost", :user=>"me", :port=>123, :password=>"mypassword"}
/home/thufir/.rvm/gems/ruby-2.0.0-p247/gems/net-ssh-2.6.8/lib/net/ssh.rb:165:in `start': wrong number of arguments (1 for 2..3) (ArgumentError)
    from ssh.rb:14:in `<main>'
thufir@dur:~/ruby$ 

コード:

#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
require 'yaml'
require 'pry'

conn = YAML.load_file('conn.yml')

params = {:host => conn['host'], :user => conn['user'], 
          :port => conn['port'],:password => conn['password']}

puts params

Net::SSH.start(params) do |ssh|
  puts 'hi'
end

yaml:

user: me
password: mypassword
port: 123
host: localhost

モノリシック オブジェクトを 1 つだけ渡すことは可能ですか? または、ホスト、ユーザーなどに分割する必要がありますか? アル。

4

1 に答える 1

4

および引数は、ハッシュの一部としてではなく、位置引数として指定する必要がありますhost。したがって:useroptions

Net::SSH.start(conn['host'], conn['user'], port: conn['port'], password: conn['password']) do |ssh|
  # ...
end

または、すべての YAML キーと値のペアを直接渡すこともできます。

Net::SSH.start(conn.delete('host'), conn.delete('user'), conn) do |ssh|
  # ...
end
于 2013-08-28T01:02:52.160 に答える