From: Joel VanderWerf Date: 2006-11-29T07:07:17+09:00 Subject: Re: VFS, Starkits and Starpacks Oleg Barenboim wrote: > Hi, > > I am new to Ruby. So far, I am really enjoying the language. But, I am > a bit concerned about packaging applications written in Ruby. > > Has there been any thought to implementing something like Tcl's VFS (see > http://wiki.tcl.tk/2138)? > > The VFS support allows for virtualizing the file system calls to more > naturally program things that are remote (HTTP or FTP) and local (zip > and tar files). Using this functionality, the Tcl community was able to > create starkits (originally with zip files and now with metakit > (http://equi4.com/metakit.html) files). > > A Starkit (http://equi4.com/starkit.html) creates the illusion of a > "file system in a file" - on the outside, it's a single file, yet the > application code continues to see a complete directory of scripts, > extensions, packages, images, and whatever other files it needs. > Starkits can be multi-platform. > > After the success of starkits, they were able to wrap up everything into > a single executable that they call starpacks (http://wiki.tcl.tk/3663). > This allows for the delivery of an application as a single file that, > for the most part, does not need to be unpacked to temporary locations > because the Tcl core has VFS that allows it to look introspectively into > the executable. > > I am not bashing Ruby. I have looked at RubyScript2exe and think it is > a great start. It would be great if a more robust solution were > available to allow for clean packaging of Ruby applications. Check out Mauricio Fernandez' file FS based on ruby's DATA feature: http://eigenclass.org/hiki.rb?cmd=view&p=pure+ruby+compiler&key=block If you just want to package a ruby app that doesn't contain native shared objects (just pure ruby libs), you can package it as a single ruby script file (which doesn't get unpacked to temp files at run time) using darb: http://redshift.sourceforge.net/darb/ Note that this doesn't allow you to package other data files, unless you wrap them in ruby code (which is not necessarily a bad idea). -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407