Can RoR do this? How easily?

I am consulting on a software project which is database intensive and the interface is web-based. Users can download an installation package which, if necessary, installs Microsoft IIS, some free Microsoft database server (I think it's a stripped-down version of MS-SQL) and then the HTML, ASP, and JavaScript-based app. It only runs on Windows machines and only works in IE. Oh, and it needed certain tweaks or patches to make it work under Vista; the version which worked under XP didn't work 100% in Vista.

As one who appreciates standards and not being tied to one technology, especially browsers, and having seen the database design and the actual app in action, plus lots of insight into how difficult it is to maintain, upgrade, etc., my immediate thought was: it must be possible to do it better by adhering to web standards as much as possible (rather than as little as possible), break the dependence on MS products, etc.

I'm a huge fan of RoR but still relatively new to it, but based on my readings (Agile Web Dev for Rails) and investigations, I thought that this app would be perfect for RoR.

But, before I suggest making a switch which will take lots of time and cost lots of money, I need to know how easy it would be for anyone to take a basic office computer with just XP or Vista (or Mac!) and install all that is necessary: a web server, a database, Ruby and Rails, and the app itself?

What would need to happen is:

1. User downloads my-app-install.zip 2. User unzips download 3. User runs install-my-app.bat or something like that. 4. User opens any browser and enters: my-app.local (or whatever) and the app starts.

Is there a way to do this with a RoR solution?

Note: This web-based app would only be run locally, not as a general website available to all.

I'd be really interested if anyone has done something like this or if anyone has some thoughts on the matter.

If I'm not being clear, please let me know - I'll try to rephrase.

Regards, Zonker

adding an entire language with bells and whistles would complicate your install package immensely. given your reqs I'd just plan to run the whole thing in the browser and move it to .js and maybe a filedb.

Thanks for the response, but my interest is not in *adding* an entire
language, but switching to RoR.

I want to know if this is possible at all, not just with this app.

So the question is reduced to:

Is it possible to develop a RoR app that someone can download and
install all necessary pieces (web server, database, RoR, and app) for
local use only without any technical knowledge?

Hi David,

Always tough to answer a question about how easy something’s going to be for a completely non-technical user. (Tech people tend to have a blind spot in this area.)

I don’t personally know of anyone who’s distributing applications like this, so whether or not it’s possible for someone to make such a model simple enough and to make it scale. Maybe have a look at Bitnami’s RubyStack product (http://bitnami.org/stack/rubystack). Something like that might take you part of the way to where you want to go, though I’m not sure how you would go about wrapping your application code into the installation package. (Maybe try getting in touch with them directly to see if they do custom distributions?)

It might be worth looking at InstantRails. It provides a single installation that installs (on Windows) Ruby, Rails, web server, mysql and sample rails apps ready to go. If I understand correctly this is virtually what you want to do I think (where your app replaces the sample apps). That suggests that what you want to do is at least feasible.

Just out of curiosity: Why did they decide on distributing the app like this, instead of using a central database + web server?

Hi David,

So the question is reduced to:

Is it possible to develop a RoR app that someone can download and
install all necessary pieces (web server, database, RoR, and app) for
local use only without any technical knowledge?

We're developing a product that will be distributed in exactly this way. I (and many others) began RoR using InstantRails which is a 'zero-footprint', full stack development environment.The distro also includes a couple of fully functional example applications. So, IMHO, the pattern's been sufficiently vetted and that's model we'll be using. We haven't decided whether to stick with the .zip approach IR uses or to go the 'installer' route, but are tending towards .zip.

The only 'hard part' I'm anticipating is 'stripping down' InstantRails so that the package only contains the 'stuff' needed as a deployment platform for locally run apps. The IR download is pretty big because it includes pretty much everything you'd need for development and even small deployment. Lots of opportunity for 'slimming'. Apache - gone. Scite - gone. PHPAdmin - gone. Etc.

Feel free to contact me off-line if you'd like.

Best regards, Bill

David,

Maybe something like rubyscript2exe is a way forward. See:

http://www.erikveen.dds.nl/rubyscript2exe/

I have used perl2exe, to do almost exactly what you appear to be wanting achieve. It includes an embedded server and the app launches the default user's win32 browser, making it pretty seamless for the user to get going. With rubyscript2exe you get one executable wrapping up all the ruby and rails stuff. On a side note, in the perl version I had some code to replicate and populate the application's paths, but mostly the perl2exe took care of the bulk of this. So far I have not had chance to try out rubyscript2exe so if anyone can add their experience I'd love to know.

John

Like Bill Walton, I am developing and deploying an application with InstantRails. For development I prefer to use Linux but I just install the app on InstantRails (and get rid of the sample apps) and zip it up and the user just has to unzip it and run it. I include a couple of scripts to put in your startup folder so the servers (db and web) start up at windows login. On the unzip, it needs to go into a folder that has no spaces in its file path so I recommend it be unzipped into c:

It works fine and is easy to install and uninstall.

Good luck Norm

Bill and Norm and others,

Thanks so much for this help and information. It really strengthens my
suspicions and I can confidently suggest a better path for future
development of the product.

Cheers, David

Hi Norm,

There's already been several solid replies to this, but I'll add that there are some other possibilities.

For a browserless Ruby solution, you could take a look at Shoes: http://shoooes.net/ (yes, three o's...)

Or, try a more integrated user interface with XUL and Rails (see Google for more; the best example I've seen is currently offline [Zed Shaw's CookbooXUL])

Or, what about a richer client-side Javascript implementation? There are several promising frameworks currently in development:

SproutCore: http://www.sproutcore.com/ (Apple is using this for Mobile.Me - management may like that) Cappuccino: http://cappuccino.org/ (reimplements Cocoa-style APIs in Javascript) (and others...)

You didn't describe what the app was doing with the database, but I'll throw in a mention of CouchDB; if you're synchronizing the client-side databases at any point, it could be useful. http://couchdb.apache.org/docs/overview.html

--Matt Jones

bill walton wrote:


Hi Norm,
I include a couple of scripts to put in your startup folder so the servers (db and web) start up at windows login.

Do circumstances allow sharing?
Best regards,
Bill

Sure. They are nothing special and as I know very little about MS systems there is probably a better way to do it but it works.

1 - start_mysql.bat

`PATH C:\InstantRails\mysql\bin;%PATH%

mysqld`

2 - start_server.bat

`CD C:\InstantRails\rails_apps\open_campground

PATH C:\InstantRails\ruby\bin;C:\InstantRails\mysql\bin;%PATH%

ruby script\server -e production`

They require manual editing if InstantRails is installed in someplace other than C:

Just copy them into your startup folder and reboot…

Good luck

Norm