-
Notifications
You must be signed in to change notification settings - Fork 62
Developing Standalone AIR Applications using RestfulX
RestfulX framework allows you to develop standalone AIR Applications that integrate with your local SQLite database using the same set of high-level REST concepts you use when talking to Remote RESTful services.
While it’s possible to write the entire Application by hand, you can use a few handy generators that come with restfulx gem to help you get up and running faster. Note, there’s no need to install/or run Rails, Merb, etc. Ruby is a great language to for code generation. We use it to create a basic Rakefile and add a few RubiGen based generators to help you along the way. It is possible to open/edit any of these projects in Flex Builder 3 if you want to. In fact, when you use rx-gen generator project files for Flex Builder 3 and TextMate are created by default.
What you’ll need:
- Flex SDK 3.0 +
- Ruby 1.8.6 (for code generation, not required to use/run the application)
Before you start you might want to add Flex SDK bin folder to your $PATH variable if you haven’t already. This will allow you to invoke commands such as mxmlc
from the command line and run rake tasks such as air:run
and rx:air:build
.
- On OS X it’s typically
/Applications/Adobe Flex Builder 3/sdks/3.0.0/bin
- On Win32 it’s
C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\bin
First, let’s create a project:
$>sudo gem install restfulx
$>rx-gen -a pomodo
$>cd pomodo
Then run:
$>./script/generate rx_config
Then create a file called db/model.yml
:
$>touch db/model.yml
Edit db/model.yml
to contain the following:
project:
- name: string
- notes: text
- start_date: date
- end_date: date
- completed: boolean
- belongs_to: [user]
- has_many: [tasks]
location:
- name: string
- notes: text
- belongs_to: [user]
- has_many: [tasks]
task:
- name: string
- notes: text
- start_time: datetime
- end_time: datetime
- completed: boolean
- next_action: boolean
- belongs_to: [project, location, user]
note:
- content: text
- belongs_to: [user]
user:
- login: string
- first_name: string
- last_name: string
- email: string
- has_many: [tasks, projects, locations]
- has_one: [note]
Now we can generate the app:
$>./script/generate rx_yaml_scaffold
You are done! Look ma, no servers!
To run the app simply type:
$>rake air:run
To see the list of all available tasks type:
$>rake -T
While code generation is a quick way to get started, it falls far short of exposing you to all the things you can do with the framework. Examine the code you just generated and refer to Working with RestfulX Models for more information on what you can accomplish.
If you only want to use RestfulX for the DB magic, one approach is to keep the generated code in one project and copy the classes over as you re-generate (merging data is another issue). When you copy the classes over you will also need to copy the ProjectName-config.xml, specifically the parts that involve keep-as3-metadata. If you don’t you will see something like:
Error: model: [class YourTable] with qualified name: namespace.models::YourTable doesn’t have a valid [Resource(name=‘*’)] annotation.
As yet another alternative to copying the ProjectName-config.xml, you could just add the magic mxmlc compiler option to preserve the RestfulX metadata:
-keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored,Nested
If you have any questions get in touch at RestfulX Framework Google Group
For more information on the RestfulX framework refer to Home.
Want a more feature complete example? Check out Pomodo On Rails