As one of the committers for the Databasedotcom gem, I follow most of the other committers to see what they are working on. I was pleasantly surprised a few months back when Eric Holmes started pushing code for a project called "Restforce". I nearly fell out of my seat when I read that it was billed as a "lighter weight alternative to the databasedotcom gem".
We'll, we been using it for a couple of months now to build our new CloudSpokes API, and I have to say that it's a pretty impressive gem. Eric has been consistently refactoring and adding features and it extremely responsive. I've submitted a few issues and he's gotten back to me immediately. Check out the repo for complete details but here's a high level overview of the features:
- A clean and modular architecture using Faraday middleware and Hashie::Mash'd responses. Add your own middleware to Restforce!
- Multiple OAuth flows.
- Support for interacting with multiple users from different orgs.
- Support for parent-to-child relationships.
- Support for aggregate queries.
- Optional bang CRUD methods (create, update, upsert, destroy) that raise salesforce.com exceptions
- Support for the Streaming API with EventMachine
- Support for blob data types (uploading files)
- Support for GZIP compression.
- Support for custom Apex REST endpoints. Winning!!
- Support for decoding Force.com Canvas signed requests.</ul>
He's written a number of sample applications in rails and sinatra so if you are writing ruby app that you would like to integrate with salesforce.com, I would highly recommend you check out Restforce.