Every repository with this icon (
Every repository with this icon (
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Sat Aug 08 03:13:27 -0700 2009 | |
| |
.gitmodules | Thu Oct 08 21:45:02 -0700 2009 | |
| |
README.md | Mon Sep 07 07:16:29 -0700 2009 | |
| |
Rakefile | Thu Oct 08 21:42:17 -0700 2009 | |
| |
bin/ | Tue Sep 08 04:04:13 -0700 2009 | |
| |
lib/ | Sat Nov 07 06:13:33 -0800 2009 | |
| |
log/ | Wed Jul 22 03:28:48 -0700 2009 | |
| |
perennial.gemspec | Sat Nov 07 06:00:40 -0800 2009 | |
| |
templates/ | Mon Sep 07 08:58:45 -0700 2009 | |
| |
test/ | Sat Nov 07 06:00:01 -0800 2009 | |
| |
vendor/ | Thu Oct 08 21:45:02 -0700 2009 |
Perennial - a Ruby Event-driven application Library
Perennial is yet another god damned event library / framework for Ruby, built on top of EventMachine. The whole goal of Perennial is to make it easy to build a particular style / class of application such as Marvin. Most of the code has been extracted from building Marvin (and later, BirdGrinder - like Marvin but for twitter).
Applications built for Perennial are devised around the concept of 'clients' and 'handlers'. Clients are things which handle the actual processing (e.g. Marvin's IRC client takes the IRC protocol and converts it into events) and handlers respond to messages. In practice, it's an approach inspired by Rack in that we do the simplest thing's possible.
Since each event processed by a handler is incredibly simple (a symbol for a name and a hash of associated options / details), and there are typically few requirements (e.g. a handler only typically needs to define the 'handle' method) it makes it relatively easy to build your application how you like.
In other words, Perennial is mainly a bunch of useful mixings (Dispatchable, Hookable, Delegateable) which fit in with some evented application design along with the framework for building applications around this design.







