トップ «前の日記(2009-01-26) 最新 次の日記(2009-01-28)» 編集

2009-01-27 [長年日記]

_ Capistrano の :ssh_options と Net::SSH

また twitter の log から。

00:11:35 wtnabe< それ以前に :ssh_options の設定方法をミスっていたらし
い。:config => true を外してもそのまま認証できた。。。
00:11:43 wtnabe< 昼間のオレはバカすぎたということか。
00:12:18 wtnabe< オプションの与え方は set :ssh_options,
00:13:03 wtnabe< オプションの与え方は set :ssh_options, {} で、何がセッ
トできるかは net-ssh の ssh.rb を読むと書いてある。

lib/capistrano/ssh.rb

まず Capistrano の ssh 関係のファイルを読んで行くと以下のような記述が見つかる。

   # If an :ssh_options key exists in +options+, it is passed to the Net::SSH
   # constructor. Values in +options+ are then merged into it, and any
   # connection information in +server+ is added last, so that +server+ info
   # takes precedence over +options+, which takes precendence over ssh_options.
   def self.connect(server, options={})
     connection_strategy(server, options) do |host, user, connection_options|
       connection = Net::SSH.start(host, user, connection_options)
       Server.apply_to(connection, server)
     end
   end

ということで :ssh_options に設定するらしい。何が与えられるかというと、Net::SSH.start を読めばいいのかな。

lib/net/ssh.rb

   def self.start(host, user, options={}, &block)
     invalid_options = options.keys - VALID_OPTIONS
     if invalid_options.any?
       raise ArgumentError, "invalid option(s): #{invalid_options.join(', ')}"
     end

この上の start メソッドのコメントにオプションというオプションがズラーっと書いてある。ここ読めば全部分かります。あまりの量で引用の範囲を明らかに超えそうなので控えてしまいました。

なるほどな。いやこの Net::SSH ってホントすごいな。