About EventMachine
¶ ↑
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:
-
Extremely high scalability, performance and stability for the most demanding production environments.
-
An API that eliminates the complexities of high-performance threaded network programming, allowing engineers to concentrate on their application logic.
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?¶ ↑
-
Scalable asynchronous clients for various protocols, RESTful APIs and so on. Examples: em-http-request or amqp gem.
-
Efficient network proxies with custom logic. Examples: Proxymachine.
-
File and network monitoring tools. Examples: eventmachine-tail and logstash.
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/i 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¶ ↑
-
Join the mailing list (Google Group)
-
Join IRC channel eventmachine on irc.freenode.net
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.