Halcyon version 0.5.1 has been released!
Halcyon is a framework for developing service-oriented applications.
Halcyon has undergone minor improvements and bug fixes, including a
new configuration system and before/after filters for controllers.
* major refectoring of the app configuration system [#38 resolved]
* new boot process with better flexibility [#41 resolved]
* hooks system cleaned up (part of [#41])
* before/after filters implemented [#42 resolved]
* standard responders (ok and not_found) accept headers hash [#45 resolved]
* YAML config files are now filtered through ERB first [#48 resolved]
* generating apps config files (config/init.rb) instead of YAML [#52 resolved]
* JSON-P support included (as Rack middleware) [#47 resolved] (Flinn Mueller)
* fixed major Windows-based bug (FloatDomainError) [#46 resolved]
A great example of an SOA is the Twitter API service, accessed via
sending requests to URLs and parsing the data returned. Halcyon
utilizes the widely used HTTP protocol and JSON format for handling
requests and responses, making its overall footprint light and sending
complex data trivial.
Halcyon is built on top of Rack which means it can be folded into
existing Rack application stacks, can be run on any kind of server
supported (including Thin, Mongrel, etc), and provides a great deal of
flexibility for injecting functionality.
Several example applications exist within the repository. Check them
out at http://github.com/mtodd/halcyon/tree/master/examples/.
Halcyon can be installed with RubyGems with:
$ sudo gem install halcyon
The latest development gem can be downloaded from with:
$ sudo gem install halcyon --source=http://halcyon.rubyforge.org/latest/
If you're feeling adventurous, you can also clone the repository and
install directly from the Rake task:
$ git clone git://github.com/mtodd/halcyon.git
$ cd halcyon; rake install
NOTE: Because of platform limitations with dependencies, Halcyon by
default only ensures that the JSON pure-Ruby variant is installed. To
install the faster C-based extension, try:
$ sudo gem install json
Halcyon has been under a complete overhaul of its documentation (and
is still being worked on). New articles have been written for getting
started, writing controllers, defining routes, etc, and even more
advanced topics have been touched on (or are planned), such as
integrating databases into the development of your application as well
as taking full advantage of the Rack features.
Check out the documentation at http://halcyon.rubyforge.org/docs/
Copyright (c) 2007-2008 Matt Todd <http://purl.org/net/maraby>.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.