Ruboss – A Flex Framework on Rails
Ruby on Rails (ROR) is a Ruby-based open-source framework for rapid Web application development. Both Rails and RIA communities are actively seeking convergence to offer integrated solutions. The Flex framework, Ruboss, is an example. InfoQ spoke with Peter Armstrong, the co-founder and CEO of Ruboss, to learn more.
According to Armstrong, the Ruboss framework represents an attempt to simplify the integration between Flex applications and RESTful server-side frameworks. These frameworks currently include RoR and Merb. Ruboss has also built a RESTful interface to allow Ruboss to talk to Adobe AIR's embedded SQLite database. The Ruboss framework serves Rails and Merb applications in a manner that is similar to Adobe LiveCycle Data Services ES for J2EE applications.
When asked why not just live with the existing established frameworks, such as Cairngorm or PureMVC, Armstrong explains:
Quite simply, there wasn't anything that fulfilled our needs. The Ruboss framework is not an architectural framework in the same sense as Cairngorm, Mate or PureMVC. Instead, it is a data integration framework, focusing on integrating Flex with RESTful frameworks. While it is tempting to think about Ruboss as "Flex + Rails," a more accurate way to think about Ruboss is as "Flex + Simple RESTful CRUD"—of which Rails is just the most popular and currently best-integrated example.
We wanted something that seamlessly integrated Flex with RoR and brought the design principles and productivity of Rails development to Flex. We think that Rails is one of the most productive server-side frameworks and Flex is one of the best client-side RIA technologies. Naturally, we wanted the best of both worlds.
So, we're not really competing with Cairngorm, PureMVC or Mate. For example, you can write Flex code that uses Ruboss in a style very similar to Cairngorm, but which features a less verbose way of using the command pattern. However, you can also write Flex code that uses Ruboss in a much more terse way than the Cairngorm style.
Armstrong goes on to describe the features that make Ruboss special:
First, we are the only Flex framework focused on using RESTful CRUD as the common interface when talking to services as different as Rails, Merb and SQLite in AIR. This simple, elegant design lets the Ruboss framework be extended to support services that we don't have the need or the time to support at the moment. For example, one user of Ruboss is considering using it to talk to CouchDB. So, Ruboss expands the range of services that integrate extremely well with Flex.
Second, the code you write with Ruboss is not only abstracted from the transport mechanism, but also is simple and elegant.
Third, you can get up and running extremely quickly. You can create a complete Flex + Rails application in five minutes using Ruboss. No other Flex framework does this, and no other Flex framework gets you from a data model to a running application as fast as Ruboss. To see how, follow the Ruboss "pomodo" tutorial.
Finally, we realize that no framework is going to solve all your data integration needs or be the correct architecture for all applications. So, what we try to do is just make the common 80 percent a lot easier.
Armstrong shares the roadmap for the Ruboss framework explaining:
For the framework, we plan to add support for data synchronization between local and remote service providers, since this is currently something that the application developer must do themselves. We also plan to get the Merb + DataMapper support up to the level of Merb + Active Record. After this, we will consider extending Ruboss to support more services, such as SimpleDB and Google AppEngine.
Don't Forget about LCDS :)
I wanted to mention that the LCDS people did a 10 minute setup of a data driven Flex application at MAX recently ( anilchannappa.org/2008/11/18/lc-ds-max-demo-upd... ), and it looks like the future LCDS product will allow a model driven application to be created with very, very little code.
I'm glad to see continued adoption of Flex and additional frameworks, but I just wanted to point out that LCDS is making things quick to get rolling as well.
@craig LCDS sounds interesting, but it's not free, not open source and I didn't find an example to use it with Ruby. No offense, but as a Rubyist, Ruboss sounds very promising because of the reasons mentioned above.