Creating Hybrid Web and Desktop Applications with Rails and Slingshot

by Luke Crawford

Background Availability people rely more and more on web apps internet access is not ubiquitous even works on planes

Background Features enable rich-internet-apps to be full peers remove latency of the internet distribute processing to the edge of the network peer-to-peer server with advanced sync encourages more desktop-like user interfaces

What’s slingshot mac + pc desktop app rails plugin ruby + mongrel runtime set of conventions GPLv2 open-source software

Current uses apple: instead of cocoa apps farm app for cows government internal app joyent connector

(connector Demo)

slingshot isn’t 100% complete, some of the things they use on connector aren’t finished or resolved yet for more advanced apps.

Network xml or http

Software mac + pc desktop app rails plugin ruby + mongrel runtime YOUR APP

radiant CMS the perfect candidate for slingshot

rails plugin syncs at the DB level uses sqlite locally provides hooks to write your own sync code SlignshotSyncController#aggregat_data can run other processes locally

slinging your app five easy steps (+1) install plugin add createat + updatedat columns add routes generate sync controller implement aggregate_data (packaging)

Drag dropping a link initiates a background download of a file currently only working in MacOSX

Drop VM/SlingShotConfig.xml define different post rules for different kinds of files http post to the PostURI

Packaging mac standard .app package distribute as a .dmg customize .nib files in XCode info.plist settings pc NSIS installer Resource Hacker

What does slingshot not do yet? sync conflict resolution encrypt your code domain-specific online/offline issues package your app automatically update itself + your Rails app code

(demo)

Resources code, wiki, blog, mailing list: http://dev.joyent.com/projects/slingshot