I’m working on a proof-of-concept Ruby desktop app bundler/launcher for
OS X. It’s not yet ready for release, or even hacking on, but I wanted
to describe the package and see if there was any interest because it’s
not a simple plug-and-play “wrap my app, run on OS X” tool.
The project is based on an older version of Platypus
(Platypus - Create Mac apps from command line scripts |), and has the following design
features:
- Stub executable that launches the Ruby GUI app (currently testing a
“hello world” Ruby-Tk app). - Offers support for many Mac OS X features, including the Services
API, AppleScript/AppleEvents, etc. - Under the hood, the app runs the Ruby app as a separate process and
communicates with the Ruby app via the Distributed Ruby module. - The app allows you to define and dynamically install Apple Events via
ini files bundled with the Mac app bundle. The app will also require you
to define standard menu items in this fashion, and communicate with the
Ruby app via message passing through Distributed Ruby. (The separate
Ruby app will launch without a Dock icon or menu, to provide the
illusion that it’s a single app process.)
This project is a classic case of “scratching my own itch,” and it may
prove unworkable as a general-purpose solution; it will require far more
configuration than deploying a Ruby GUI app on Windows would. I’m
also not clear on how to generalize to other UI frameworks outside of
Tk. If there’s no interest I’ll simply dump the source code at Github
per the GPL, but if there is more interest, I may put together a
full-scale project with documentation.
I’m deeply frustrated with the Windows-centric orientation of the Ruby
desktop app wrapper libraries and the lack of up-to-date support among
these tools for Ruby 1.9. My own solution, owing to my lack of
substantial knowledge of Ruby’s internals, is based on a good working
knowledge of OS X internal mechanisms, and the discovery of Ruby’s
Distributed Ruby module that allows you to send messages to a
currently-running Ruby process: this feature of Ruby blows me away and
overrides my frustration with the lack of useful app deployment tools on
OS X for non-MacRuby R. apps, and has inspired the
Rube-Goldbergesque-but-so-far-working design of my current approach.
Haven’t yet arrived at a name for this package, but will give that some
more thought.
Thoughts are appreciated. If there’s no interest, this will likely be my
last word on this project.
–Kevin