I am happy to announce the release of eventmachine 0.12.6
This release contains numerous bug fixes and improvements. Highlights include:
- EM::connection_count API to get number of active connections in the reactor
- EM::get_max_timers API to get the max number of timers available
(use EM::set_max_timers to increase it)
- EM::Connection#get_status returns a Process::Status object
- EM::attach can be used with pipes
- Switched back to extconf for building extensions (prevents errors
during gem install)
- Better windows support
- fixed various win32 build issues in fastfilereader and
rubyeventmachine extensions
- official 0.12.6 windows binary gem released on rubyforge
- rake win32:gem task to build openssl and binary win32 gem
- Better error reporting
- raise ArgumentError when EM.connect/start_server are passed an
invalid handler class
- friendlier error messages raised from the EM error_callback
- Various solaris build issues fixed
- Fixed HttpCli2 to handle basic auth and content-length:0 bodies
- Fixed latency caused when cleaning up EM::popen'd processes
- Fixed inactivity timeout bug in the pure ruby reactor
- Fixed issues in the test suite due to improper kqueue fd
initialization/cleanup
- Bundled memcache protocol
EM\.run\{
cache = EM::P::Memcache\.connect 'localhost', 11211
cache\.delete\(:a\)
cache\.set\(:a, 'hello'\)
cache\.get\(:a\)\{ |v| p v \}
\}
- Optional error handler for errors raised during event callbacks
EM\.error\_handler\{ |e|
puts "Error raised during event loop: \#\{e\.message\}"
\}
- EM::system wrapper for EM::popen
EM\.run\{
EM\.system\('ls'\)\{ |out,status| puts out if status\.exitstatus == 0 \}
EM\.system\('sh', proc\{ |process|
process\.send\_data\("echo hello\\n"\)
process\.send\_data\("exit\\n"\)
\}, proc\{ |out,status|
puts out
\}\)
\}
- EM::next_tick can be used before the reactor is running
EM\.next\_tick\{ puts "The reactor was started at \#\{Time\.now\}" \}
sleep 2
EM\.run\{\}
- EM::Connection now has an ssl_handshake_completed event
require 'openssl'
module SslHandler
def post\_init
start\_tls
end
def ssl\_handshake\_completed
cert = get\_peer\_cert
close\_connection unless
OpenSSL::X509::Certificate.new(cert).subject =~ /Google/
end
end
EM\.run\{
EM\.connect 'www.google.com', 443, SslHandler
\}
Special thanks to the following people for making this release possible:
- Jake Douglas
- Bob Potter
- Ugo Riboni
The rdoc has been updated and is available at http://eventmachine.rubyforge.org/
Aman