OpenSSL::SSL::SSLError in jruby 1.6.7/1.7.0 1.9 mode



我正在运行一个带有Jruby 1.7.0在1.9模式的Rails 3应用程序,当我的一个文件上传GEMS尝试建立HTTPS连接时,它会失败,但有以下例外:

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/jruby-1.7.0@global/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'

我在stackoverflow上找到了类似的问题:jruby heroku gem,但建议的答案是在1.8模式下运行的jruby,因为我们的整个应用都使用1.9功能和语法,因此我无法执行此操作。有人对如何解决或解决此例外有任何想法或建议吗?

谢谢。

好吧,这是我的hacky解决方案:

由于这是一个铁轨项目,我创建了一个名为excon_hack.rb的文件,然后将其放入initializers文件夹中。

module Excon
  DEFAULT_NONBLOCK = false
end

这使连接块对我来说无关紧要,更重要的是,它解决了我的错误。

另一个选项是将jruby-openssl降低到0.7.4。我尚不清楚这是有效地将Excon恢复为阻塞模式还是仅仅使excon恢复为无障碍。

最新更新