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