openssl-nonblock is a gem which enables non-blocking support in Ruby's
OpenSSL classes by monkeypatching into the heart of some of its C code.
It's vile, it's nasty, but it works!
Install it with: gem install openssl-nonblock
See the README on Github: http://github.com/tarcieri/openssl-nonblock
Thanks to a patchfrom Young Hyun, the latest release now uses exceptions
which aim to bridge compatibility with the non-blocking SSL support in the
forthcoming Ruby 1.9.2 release. When a read or write is needed,
openssl-nonblock now raises IO::WaitReadable or IO::WaitWritable, depending
on the IO event that needs waiting upon.
This release also effectively disables itself on Ruby 1.9.2, deferring to
the native implementation. This means you can require openssl-nonblock as a
dependency on Ruby 1.8.6+, where it will bridge the gap, but on Ruby 1.9.2
it will effectively shut itself off and let you use the core Ruby
implementation directly.
I have not probed the semantic gap between the gem and the core
implementation in Ruby 1.9.2, so this release should be considered
experimental. You can expect a forthcoming 0.3.0 release which will ensure,
as best as possible, that the openssl-nonblock gem implements an API
identical to what will be found in Ruby 1.9.2.
Enjoy!
ยทยทยท
--
Tony Arcieri
Medioh! A Kudelski Brand