auser / poolparty

Run a self-healing, auto-scaled and monitored cloud simply, in the clouds, on nearly any hardware, such as EC2, eucalyptus and vmware
http://www.poolpartyrb.com
MIT License
371 stars 54 forks source link

gem for ruby 1.8 assumes ruby.1.9 popen3 #98

Open mcqueenorama opened 12 years ago

mcqueenorama commented 12 years ago

status = Open3.popen3(cmd) do |stdout, stdin, stderr, wait_thr|

pi = [pw[1], pr[0], pe[0]]
pw[1].sync = true
if defined? yield
  begin
    return yield(*pi)
  ensure
    pi.each{|p| p.close unless p.closed?}
  end
end

I'm not a ruby expert but it looks like the yield is give 3 vars, but pool_party assumes wait_thr is there as a 4th var in the passed block. I see the docs in 1.9's Open3:popen3 show 4 vars, but this 1.8 lib does not supply wait_thr.

Ugly dump:

/usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/connections.rb:157:in system_run': undefined methodvalue' for nil:NilClass (NoMethodError) from /usr/lib/ruby/1.8/open3.rb:87:in popen3' from /usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/connections.rb:136:insystem_run' from /usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/connections.rb:87:in ssh_cleanup_known_hosts!' from /usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/connections.rb:85:ineach' from /usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/connections.rb:85:in ssh_cleanup_known_hosts!' from /usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/ec2/ec2.rb:303:incleanup_ssh_known_hosts!' from /usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/ec2/ec2.rb:298:in each' from /usr/lib/ruby/gems/1.8/gems/poolparty-1.7.0.pre/bin/../lib/cloud_providers/ec2/ec2.rb:298:incleanup_ssh_known_hosts!