# Rhodes Application Generator You can use RhoStudio to create Rhodes applications and models in an Eclipse-like environment. You can also use the Rhodes generator utility from the command line to create Rhodes applications, models, and tests (specs). ## Generating a Rhodes Application from RhoStudio In RhoStudio, select File->New->Project... The New Project window opens. Select the Rhodes application wizard and click the Next button. Enter the name for your Rhodes application in Project name; in this case, "storemanager". You may specify a specific folder for your destination where your project is stored, by default, the destination is your RhoStudio workspace folder. Then press the Finish button. After pressing the Finish button, you'll see the Rhodes app generator script output in the output console (Rhomobile build console). The generated application has the following directory structure and files. storemanager/ Rakefile build.yml rhoconfig.txt ./app: application.rb index.bb.erb index.erb layout.erb loading.html loading.png ./app/Settings: controller.rb home.bb.erb home.erb index.bb.erb index.erb login.bb.erb login.erb reset.bb.erb reset.erb wait.bb.erb wait.erb ./app/helpers: application_helper.rb browser_helper.rb ./icon: ./public: ./public/css: ./public/images: ./public/jquery: ./public/jqmobile: ./public/js: ## Adding a Model to a Rhodes Application from RhoStudio Rhodes applications support a Model-View-Controller (MVC) pattern.  To start our application, we will generate a Model. To generate a Rhodes model and create the associated Controller and View templates, right-click on the application project in the Project Explorer and select New->Rhodes model. In the Model Information window, enter the name for your model: in this case, `Product`. ** NOTE: Do not use the following for model names: Config, Settings, helpers, test, Client, Sync, or any built-in Ruby class name. It is good programming practice to avoid using generic names, such as client, or time, or print. Also enter the Model attributes as a string with no spaces and each attribute separated by a comma: in this case, `name,brand,price,quantity,sku`. (Whitespaces at the field name beginning and end will be trimmed and whitespaces in the middle of the field name will be replaced with an underscore character.) After pressing the Finish button, you'll see the Rhodes model generator script output in the output console (Rhodes build log console). You should now see a 'Product' folder below the 'app' folder in your storemanager application. These files constitute the Model, Views and Controller file for the Product Model we just created. The files are organized as follows: This will generate the following files in the folder app/Account: * app/Product/index.erb - the html view template to display the list of objects * app/Product/edit.erb - the html view template to edit an object * app/Product/new.erb - the html view template to supply values to create a new object * app/Product/show.erb - the html view template to displays the selected object * app/Product/index.bb.erb - the html view template to display the list of objects on Blackberry * app/Product/edit.bb.erb - the html view template to edit an object on Blackberry * app/Product/new.bb.erb - the html view template to supply values to create a new object on Blackberry * app/Product/show.bb.erb - the html view template to displays the selected object on Blackberry * app/Product/product_controller.rb - contains the the business logic for the model, the basic CRUD actions: index, new, create, edit, update and delete. * app/Product/product.rb - contains the Product model definition. Since we are using the default PropertyBag definition, we don't need to modify this file any further. A placeholder for Account test specs will be generated in the app/test folder: * app/test/product_spec.rb - placeholder for Account test specs ## Generating A Rhodes Application and Model You can generate your Rhodes application and model from the command line. ### Generating a Rhodes Application from the Command Line You can pass your application name to the rhodes app command as a parameter. The Rhodes utility will generate a default directory structure for your application, with default code for the generated files. Usage: rhodes app name [options] [args] Generate a new rhodes application. Required: name - application name args (optional): syncserver - url to the source adapter (i.e. "" or "http://myacct.rhohub.com/apps/myapp/sources/") zip_url - optional url to zipfile download of bundle (this can be your RhoHub Bundle URL) options: -p, --pretend Run, but do not make any changes. -f, --force Overwrite files that already exist. -s, --skip Skip files that already exist. -d, --delete Delete files that have previously been generated with this generator. --no-color Don't colorize the output -h, --help Show this message --debug Do not catch errors ### Adding a Model to Your Rhodes Application from the Command Line Once you have generated your application, you can add a model to it, and the model can have attributes. For example, if you have a store application, you can add a model named product, and attributes like brand, name, price, and quantity. Usage: rhodes model [options] [args] Generate a new model for a rhodes application. args: name - model name attributes - list of one or more attributes (i.e. name,industry,progress), NO spaces between attributes options: -p, --pretend Run, but do not make any changes. -f, --force Overwrite files that already exist. -s, --skip Skip files that already exist. -d, --delete Delete files that have previously been generated with this generator. --no-color Don't colorize the output -h, --help Show this message --debug Do not catch errors For example, here is the command to generate a model named account, with the attributes name and industry. :::term $ cd myspace $ rhodes model account name,industry ### Adding a Native extension to Your Rhodes Application from the Command Line Once you have generated your application, you can add a native extension to it. Usage: rhodes extension [args] Generate a new native extension for a rhodes application. args: name - extension name For example, here is the command to generate a model named account, with the attributes name and industry. :::term $ cd myspace $ rhodes extension Nanovisor ## Add test framework To add a test framework to the application: Usage: rhodes spec Add test framework to a rhodes application. For example: :::term $ cd myspace $ rhodes spec This will generate the following files in the app folder: * SpecRunner/controller.rb - contains index action, which start all tests * SpecRunner/index.erb - the template to display tests results * mspec.rb - contain all mspec required files * spec_runner.rb - contain spec framework initialization and generate list of spec files If you are going to use mspec, then add mspec and fileutils extensions to your application's build.yml file: extensions: ["mspec", "fileutils"] To run the tests you need to add a link to the SpecRunner controller in your index.erb: :::html
  • Run tests
  • Once you click the link a summary of the results with number of passing/failing tests will be displayed on the screen.