About EventMachine {Code Climate] ↑

What is EventMachine ↑

EventMachine is an event-driven I/O and lightweight concurrency library for Ruby. It provides event-driven I/O using the Reactor pattern, much like JBoss Netty, Apache MINA, Python's Twisted, Node.js, libevent and libev.

EventMachine is designed to simultaneously meet two key needs:

This unique combination makes EventMachine a premier choice for designers of critical networked applications, including Web servers and proxies, email and IM production systems, authentication/authorization processors, and many more.

EventMachine has been around since the early 2000s and is a mature and battle-tested library.

What EventMachine is good for? ↑

What platforms are supported by EventMachine? ↑

EventMachine supports Ruby >= 1.8.7 and <= 2.2 REE, JRuby and works well on Windows as well as many operating systems from the Unix family (Linux, Mac OS X, BSD flavors).

Install the gem ↑

Install it with RubyGems

gem install eventmachine

or add this to your Gemfile if you use Bundler:

gem "eventmachine"

Getting started ↑

For an introduction to EventMachine, check out:

Server example: Echo server ↑

Here's a fully-functional echo server written with EventMachine:

 require 'eventmachine'

 module EchoServer
   def post_init
     puts "-- someone connected to the echo server!"
   end

   def receive_data data
     send_data ">>>you sent: #{data}"
     close_connection if data =~ /quit/
   end

   def unbind
     puts "-- someone disconnected from the echo server!"
   end
end

# Note that this will block current thread.
EventMachine.run {
  EventMachine.start_server "127.0.0.1", 8081, EchoServer
}

EventMachine documentation ↑

Currently we only have reference documentation and a wiki.

Community and where to get help ↑

License and copyright ↑

EventMachine is copyrighted free software made available under the terms of either the GPL or Ruby's License.

Copyright: (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.

Alternatives ↑

If you are unhappy with EventMachine and want to use Ruby, check out Celluloid.