2012-11-07 31 views
3

我在1.9模式下運行jruby 1.7.0的rails 3應用程序,當我的一個文件上傳寶石嘗試製作一個HTTPS連接時,出現以下異常:jruby 1.6.7/1.7.0中的OpenSSL :: SSL :: SSLError 1.9模式

Excon::Errors::SocketError: write would raise (OpenSSL::SSL::SSLError) 
    from org/jruby/ext/openssl/SSLSocket.java:626:in `syswrite_nonblock' 
    from /home/x/.rvm/gems/[email protected]/gems/jruby-openssl-0.7.7/lib/1.9/openssl/buffering.rb:375:in `write_nonblock' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/excon-0.16.7/lib/excon/socket.rb:139:in `write' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/excon-0.16.7/lib/excon/ssl_socket.rb:84:in `write' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/excon-0.16.7/lib/excon/connection.rb:243:in `request_kernel' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/excon-0.16.7/lib/excon/connection.rb:103:in `request' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/fog-1.7.0/lib/fog/core/connection.rb:20:in `request' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/fog-1.7.0/lib/fog/rackspace.rb:71:in `authenticate' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/fog-1.7.0/lib/fog/rackspace/storage.rb:146:in `authenticate' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/fog-1.7.0/lib/fog/rackspace/storage.rb:95:in `initialize' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/fog-1.7.0/lib/fog/core/service.rb:68:in `new' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/fog-1.7.0/lib/fog/storage.rb:34:in `new' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/carrierwave-0.6.2/lib/carrierwave/storage/fog.rb:106:in `connection' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/carrierwave-0.6.2/lib/carrierwave/storage/fog.rb:323:in `connection' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/carrierwave-0.6.2/lib/carrierwave/storage/fog.rb:335:in `directory' 
    from /home/x/.rvm/gems/jruby-1.7.0/gems/carrierwave-0.6.2/lib/carrierwave/storage/fog.rb:250:in `store' 

我發現計算器類似的問題在這裏:JRuby Heroku Gem,但建議的答案是運行在1.8模式的JRuby,我不能這樣做,因爲我們整個應用程序使用1.9功能和句法。有沒有人有任何想法或建議如何解決或繞過此異常?

謝謝。

+0

我有同樣的問題。 –

+0

Russ,查看我剛發佈的解決方案。 – Garrett

+0

jruby開發人員告訴我,jruby 1.7.1-dev中修復了非阻塞問題,但沒有機會測試該斷言。 –

回答

4

好了,這裏是我的哈克解決方案:

由於這是一個Rails項目,我創建了一個名爲excon_hack.rb,並把它放在initializers文件夾中。

module Excon 
    DEFAULT_NONBLOCK = false 
end 

這使連接塊,這並不重要,更重要的是,它修復了我的錯誤。

0

另一個選擇是將jruby-openssl降級到0.7.4。我還不清楚,這是否有效地回到阻塞模式,或只是得到無阻塞的工作。

相關問題