# Distributing A Rails App

**URL:** <https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418>\
**Category:** rubyonrails-talk\
**Created:** [December 30, 2007, 6:57pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418 "2007-12-30T18:57:34Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Troy\_Denkinger](https://avatars.discourse-cdn.com/v4/letter/t/2bfe46/32.png) [@Troy\_Denkinger](https://discuss.rubyonrails.org/u/Troy_Denkinger)\
**Post date:** [December 30, 2007, 6:57pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/1 "2007-12-30T18:57:34Z")

</div>

I've done some Google searches and searched the mailing list archive without much success.

I'm working on a rails app that will be a simple story tracking tool for Scrum/Agile projects. When it's functional, I'd like to make it available as a live app on my site, but I'd also like to make it available as a distribution so that someone could grab a self-contained package and install it locally.

Is there a good way to create a gem, say, that could handle this? I've been looking for tutorials or articles about creating gems, but I'm still a bit lost on how that might translate into packaging a rails app. Or is there some other good way distribute?

Thanks for any insights.

Troy

---

<div class="post-metadata">

**Author:** ![Bala\_Paranj](https://avatars.discourse-cdn.com/v4/letter/b/41988e/32.png) [@Bala\_Paranj](https://discuss.rubyonrails.org/u/Bala_Paranj)\
**Post date:** [December 30, 2007, 7:36pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/2 "2007-12-30T19:36:46Z")

</div>

Check this out: [http://ajaxian.com/archives/slingshot-desktop-apps-via-rails](http://ajaxian.com/archives/slingshot-desktop-apps-via-rails)

Ability of Rails app that can run locally and synchronize with the server is very powerful.

---

<div class="post-metadata">

**Author:** ![GoodbyeJava](https://avatars.discourse-cdn.com/v4/letter/g/4491bb/32.png) [@GoodbyeJava](https://discuss.rubyonrails.org/u/GoodbyeJava)\
**Post date:** [December 30, 2007, 7:54pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/3 "2007-12-30T19:54:57Z")

</div>

I imagine you are having trouble finding information about that. Rails is a web application framework. It is not intended to be used to build desktop applications. If you're talking about distributing the application to individuals that are unfamiliar with Ruby on Rails, then I just don't know of anything existing that would make this practical.

You would need to develop your own "runtime" environment installer to make sure that all the necessary pieces required to run the application get installed on the user's computer. Ruby, all the gems you might have used in your application, the Rails application itself. Then you would need to create a script, or some other means, to allow the user to start Mongrel server and take them to the URL where the program runs.

Running Rails as a desktop application is simply outside the scope of Rails, which means that you're probably on your own in finding a solution.

---

<div class="post-metadata">

**Author:** ![Troy\_Denkinger](https://avatars.discourse-cdn.com/v4/letter/t/2bfe46/32.png) [@Troy\_Denkinger](https://discuss.rubyonrails.org/u/Troy_Denkinger)\
**Post date:** [December 30, 2007, 8:44pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/4 "2007-12-30T20:44:02Z")

</div>

Thanks for the reply, Robert. Right, I should have explained. This isn't meant as a desktop app, but anyone who wanted to actually use the application would probably like to run it on a local server rather than as a hosted application since it tends to contain potentially sensitive information about software features.

So, what I'm looking for is an easy way to package up the important parts of the rails app so that someone who has rails running could easily deploy my app to their environment. Perhaps just zipping it up would be enough, but I was hoping for something more, uh, rubyish or railsy.

Thanks again,

Troy

---

<div class="post-metadata">

**Author:** ![Jeremy\_McAnally](https://avatars.discourse-cdn.com/v4/letter/j/c89c15/32.png) [@Jeremy\_McAnally](https://discuss.rubyonrails.org/u/Jeremy_McAnally)\
**Post date:** [December 30, 2007, 10:01pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/5 "2007-12-30T22:01:34Z")

</div>

As far as I know, you can just create a tarball/zip file. I believe this is what the guys who make Warehouse ([http://www.warehouseapp.com/](http://www.warehouseapp.com/)) do.

--Jeremy

---

<div class="post-metadata">

**Author:** ![bphogan](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/bphogan/32/4186_2.png) [@bphogan](https://discuss.rubyonrails.org/u/bphogan)\
**Post date:** [December 31, 2007, 3:42am UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/6 "2007-12-31T03:42:11Z")

</div>

Zip it, or provide an SVN repository so someone can check it out.

Provide a rake task to boostrap the database to make setup a snap 🙂

---

<div class="post-metadata">

**Author:** ![Ricardo\_Sazima](https://avatars.discourse-cdn.com/v4/letter/r/a87d85/32.png) [@Ricardo\_Sazima](https://discuss.rubyonrails.org/u/Ricardo_Sazima)\
**Post date:** [December 31, 2007, 6:39pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/7 "2007-12-31T18:39:38Z")

</div>

Create a plugin:

- [http://wiki.rubyonrails.org/rails/pages/Plugins](http://wiki.rubyonrails.org/rails/pages/Plugins) - [http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i](http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i) - [http://railsforum.com/viewtopic.php?id=682](http://railsforum.com/viewtopic.php?id=682)

Cheers, Sazima

---

<div class="post-metadata">

**Author:** ![Rick\_Olson](https://avatars.discourse-cdn.com/v4/letter/r/898d66/32.png) [@Rick\_Olson](https://discuss.rubyonrails.org/u/Rick_Olson)\
**Post date:** [December 31, 2007, 8:14pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/8 "2007-12-31T20:14:48Z")

</div>

If you want to keep it easy to install, look at distributing it with Jumpbox. Distributing apps with svn or tarballs is easy, but good luck helping everyone install it 🙂

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Brown](https://avatars.discourse-cdn.com/v4/letter/n/9de053/32.png) [@Nathaniel\_Brown](https://discuss.rubyonrails.org/u/Nathaniel_Brown)\
**Post date:** [January 1, 2008, 12:02pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/9 "2008-01-01T12:02:41Z")

</div>

Gems are an awesome way to go too. Suprised nobody has mentioned it yet.

With Gems on Rails, you get some pre-load functionality options as well.

---

<div class="post-metadata">

**Author:** ![Anthony\_Ettinger](https://avatars.discourse-cdn.com/v4/letter/a/ecb155/32.png) [@Anthony\_Ettinger](https://discuss.rubyonrails.org/u/Anthony_Ettinger)\
**Post date:** [January 1, 2008, 5:55pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/10 "2008-01-01T17:55:09Z")

</div>

How feasible is it to write a ruby on rails app. and distribute it commercially, similar to many PHP applications, where you unzip, and click a link in the browser to install.

---

<div class="post-metadata">

**Author:** ![Rick\_Olson](https://avatars.discourse-cdn.com/v4/letter/r/898d66/32.png) [@Rick\_Olson](https://discuss.rubyonrails.org/u/Rick_Olson)\
**Post date:** [January 1, 2008, 8:29pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/11 "2008-01-01T20:29:47Z")

</div>

> How feasible is it to write a ruby on rails app. and distribute it commercially, similar to many PHP applications, where you unzip, and click a link in the browser to install.

Nearly impossible, unfortunately. Running a rails app requires more process management.

---

<div class="post-metadata">

**Author:** ![Jeremy\_McAnally](https://avatars.discourse-cdn.com/v4/letter/j/c89c15/32.png) [@Jeremy\_McAnally](https://discuss.rubyonrails.org/u/Jeremy_McAnally)\
**Post date:** [January 1, 2008, 9:08pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/12 "2008-01-01T21:08:57Z")

</div>

Exactly. To do any real configuration changes you'd need to restart the app, thus making the convenience of doing everything in the browser useless. 😛

--Jeremy

---

<div class="post-metadata">

**Author:** ![Anthony\_Ettinger](https://avatars.discourse-cdn.com/v4/letter/a/ecb155/32.png) [@Anthony\_Ettinger](https://discuss.rubyonrails.org/u/Anthony_Ettinger)\
**Post date:** [January 1, 2008, 11:12pm UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/13 "2008-01-01T23:12:15Z")

</div>

Thanks...I've got some applications I've thought about doing in Rails, but this seems to be my biggest challenge...I've seen a lot of info about the framework and ruby, but as a viable commercial application (one that is distributed)...I have not seen too much info. Seems most people use it for their own needs -- one application only (aside from plugins, but I don't think the entire app would works as a plugin).

My second plan (if there is no easy-to-install distributing method for rails) is to sell the application to clients with a hosting and maintenance plan as well...and just take care of the management, updates, hosting, etc. myself for each customer.

This leaves me at the point of figuring out how to distribute/rsync/ push -- whatever you want to call it, to multiple web sites, that do not use same data, or could even have customizations on a per-client basis to the main trunk.

If anyone knows of any rails-specific books covering this SCM scenario, I'd be more than interested in knowing about them.

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Brown](https://avatars.discourse-cdn.com/v4/letter/n/9de053/32.png) [@Nathaniel\_Brown](https://discuss.rubyonrails.org/u/Nathaniel_Brown)\
**Post date:** [January 2, 2008, 10:25am UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/14 "2008-01-02T10:25:37Z")

</div>

Check out Mingle. Their install process is pretty awesome, and the product aint half bad either.

---

<div class="post-metadata">

**Author:** ![Frederick\_Cheung](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/frederick_cheung/32/3901_2.png) [@Frederick\_Cheung](https://discuss.rubyonrails.org/u/Frederick_Cheung)\
**Post date:** [January 2, 2008, 11:46am UTC](https://discuss.rubyonrails.org/t/distributing-a-rails-app/22418/15 "2008-01-02T11:46:50Z")

</div>

> Check out Mingle. Their install process is pretty awesome, and the  
> product aint half bad either.

One should point out that the secret sauce here is jruby, since (in  
super condensed form) you get to lean on java deployment options

Fred
