Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

The Rhodes framework is a platform for building locally executing, device-optimized mobile applications for all major smartphone devices.

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time



The Rhodes framework is a framework for building locally executing, device-optimized mobile applications for smartphone devices. These applications are optimized for interacting with transactional enterprise application backends (with synced local data via RhoSync). Rhodes is now available for iPhone, Windows Mobile, Research in Motion (Blackberry) and Symbian smartphones.

Rhodes is available as an open source product under the “GNU Public License”: for developers prepared to abide by the GPL and open source their own application. For developers building closed source applications (either within an enterprise or as independent software vendors selling to other companies) we offer a commercial license. Contact for details


Rhodes takes much of its inspiration from web-oriented MVC style frameworks such as Ruby on Rails. However it has several simplifications and optimizations for the mobile scenario. Some of these are to make it easier for the developer. Most of them are to keep the framework as lightweight as possible to be able to run on mobile devices with limited memory. As with developing apps on any good app framework (Rails, Merb, Django), building a Rhodes mobile application consists of building a set of files and putting them into the right directories for the respective models.


Install Rhodes:

gem install rhodes


Rhodes features an application generator called rhogen that generates a controller and views for a given model. The syntax for running Rhogen is:

rhogen app appname

This will generate a config.rb and an index.html file. Currently config.rb is focused on describing what source to sync with. Modify the URL that you see in this file with whatever your RhoSync server URL and source ID are for this particular “source” or data model. It is assumed that you’ve already set up a RhoSync “source adapter” as described by the RhoSync README.

Generate a Model and Associated Controller and Templates

rhogen model modelname options

This will generate a controller as the file controller.rb and several views as action-name.erb (corresponding to the actions below). Each Rhodes model/controller pair has several actions to perform basic CRUD (create, read, update and delete) on the object generated by default by the scaffold . Specifically the template views generated are:

  • index – to list all objects
  • new – to display the editing form for creating a new object
  • edit – to edit the actual object
  • show – to show the object attributes


The Rhodes directory structure is outlined below. In a default Rhodes application, there are several subdirectories inside of an app directory, one for each model or synced data object. For example, there might be subdirectories called Account, Employee, and Case. Each model subdirectory contains a controller in the file controller.rb. These subdirectories each contain a set of template files as Embedded Ruby (ERB) files. These control how data from the model is displayed and what links are available to other actions. Note that this structure is reminiscent of Rails and MERB’s structure, but is a bit simpler by design.

build.yml (contains the settings for running builds)
rhoconfig.txt (contains settings for setting the default start and options path)
/public (contains static resources for the generated objects)
/modelname (for example Account)
/modelname (for example Case)


There is a tutorial available on the Rhomobile site. This includes thorough and current platform by platform build instructions.

The Rhodes spec is also available on the Rhomobile documentation wiki.

For further questions email us or join the Google Group.

For questions on licensing contact our sales team

Something went wrong with that request. Please try again.