I have been contemplating the use of document-stores in my Ruby apps for a few months (you might remember my MongoMapper post from back in June), and I've been following developments in the No-SQL movement. George Palmer's presentation at Rails Underground on his couch_foo gem inspired me to explore the possibilities further, and I've recently started work on incorporating CouchDB into some projects that I'm working on.
Since Why The Lucky Stiff's supposed disappearance yesterday, I've been coming across a lot of interesting links with mirrors of his projects, discussions surrounding his disappearance, and lots of other juicy stuff. I think it's worth keeping track of this stuff so I'm kicking off a compilation post dedicated to Why related links.
I recently came across the interesting-looking Monk framework. It allows you to specify a list of dependencies for technologies to use in your project (in the form of git repositories or gems), and it will take care of extracting them into your application's vendor folder.
TwitterLand (Github repository) is a single Ruby library that packages up access to, currently, 5 different Twitter-related data services. Note, however, it's not a library that allows you to post to Twitter - you'll want Twitter4R or John Nunemaker's Twitter gem for that.
Bowline is a new MVC GUI framework for developing cross-platform desktop applications using Ruby, HTML, CSS and Javascript. The author, Alex MacCaw, aims to make building a desktop app as simple as creating a Rails site.
I attended the Rails Underground conference in London at the weekend (July 24-25, 2009). As always seems to be the case at these events, I got the most value out of the more theoretical and opinion-based talks rather than 'how-to' style presentations. Having said that, Pat Allan and George Palmer gave great talks on their respective thinking_sphinx and couch_foo plugins.
Like Ryan Sonnek, I've dabbled with a few different ways to run background processes in my Ruby apps, even resorting to knocking together my own (far from perfect) solution. As Ryan says on his blog, many popular libraries have complicated interfaces and don't "feel right".
François Vaux has recently published a Ruby module called Rackable which allows you to make any Ruby object Rack-friendly, providing it with a REST-like interface.
Until recently, I had been using the Curb library for making HTTP requests with Ruby, and I must say I was fairly happy with it. Phillip Toland, on the other hand, wasn't satisfied with Curb's API and the fact that it is tricky to modify (being implemented mainly in C). So, he came up with an alternative called Patron, written as much as possible in Ruby.
A couple of weeks ago we featured Gabriel Horner's Hirb framework for formatting irb output. I've recently been playing with another of his projects, Alias, which further enhances the Ruby Console experience (but it conceivably could be used in your Ruby programs too).
With people occasionally talking about "Code vs. Data", it only makes sense that you should be able process over code as you would a string. Sexp Path is a code processing tool that allows you to search over and process Ruby code in the form of S-Expressions.
Inspired by Git (the version control system), Delano Mandelbaum has come up with a library called Gibbler, which produces hashes and history for Ruby objects.
Why's Markaby is a really convenient bit of Ruby for generating HTML in your applications, rather than having to fiddle about with string interpolation or ERb, tangling together HTML and Ruby.
When running a Ruby daemon which executes code in a loop, if the process is killed while something is happening then problems can occur if the code doesn't handle all the exceptions properly or if the loop isn't broken cleanly. RobustThread is a Ruby class by Jared Kuolt for the creation of threads, which helps to alleviate this problem.
Anemone is a free, multi-threaded Ruby web spider framework from Chris Kite, which is useful for collecting information about websites. With Anemone you can write tasks to generate some interesting statistics on a site just by giving it the URL.
Integrity is a simple and lightweight Continuous Integration server written in Sinatra (a DSL for quickly creating web-applications in Ruby). When commits are pushed to a Git repository, Integrity builds, runs tests, and reports the build status to each team member. It supports a variety of notifiers including Email, IRC, and Twitter.
MongoDB a is a high-performance, open source, schema-free, document-oriented database written in C++. It's sort of a cross between scalable key/value stores and traditional functionality-rich relational databases.
The Interactive Ruby Shell (irb) and the Rails console are great for interacting and experimenting with your ruby application code, but sometimes it's hard to visualize the output. Gabriel Horner has come to the rescue with Hirb: a 'mini view framework' for irb which is designed to improve the default output to make it more human-readable.
It has always been a trend with Rubyists to take things that have poor interfaces and give them better ones. Javan Makhmali from Inkling Markets has lived up to this trend, and given us Whenever, a library that wrapscron's syntaxwith a Ruby API (cron being a UNIX task scheduling tool).
The great thing about the Ruby language is that there’s always multiple ways of doing things. The same goes for reading the documentation of your installed gems. Here’s a few ways of viewing the RDoc documentation of your gems other than running the gem server command.