Hi Jeremy and everyone
Found myself following this discussion and all the great informative
answers supplied here. I am too in a learning process with my first
app, very much a Newbie (in RoR and Web in general, though have a
programming experience) and lately have been trying to figure out the
deployment process, terms, and sort of ‘what belongs where’
I’m currently developing on Windows… started with using InstantRails
and installed Git on Cygwin. This allowed me to experiment with some
developing locally, begin with local version control and git-clone
repositories for plugins/Gems.
As I read some more, I realized I’d probably want to deploy my App on
a Linux/Unix based server rather than a Windows one and that
developing on windows and deploying on Linux (the way I initially
started developing) might not be a good idea at all.
Therefore I decided to install VM on my Windows machine… have seen
some posts lately on the subject… currently I just installed VMWare
Player (had to use version 2.5, my CPU wasnï¿½t compatible with 3.1) but
have thoughts of maybe trying VirtualRails instead (if it works on my
machine) ï¿½ I did see VirtualRails is using MintLinux-based Linux and
was wondering whether that might cause future problems (as opposed to
using Ubuntu for example)?
I doubt that that would be a problem. I develop on Mac OS X (which is
BSD, not Linux) and routinely deploy to Linux servers without any
Ok ï¿½ deployment questions:
I couldn’t understand for sure whether I need both a host and a place
to deploy my App?
No. A host is a place to deploy your app. Same thing.
I mean ï¿½ it didn’t make sense I’d use both Passenger and Capistrano
(probably it does but I understood they’re both used for deployment,
thus the confusion…), unless Capistrano does both automated
deployment but can also be used when using a different deployment
They are different tools for different purposes. Capistrano takes care
of putting your app on the server, while Passenger serves it once it’s
I feel and know I mix everything up here, but any light you can put
for me on this subject will be very helpful…
Was also confused by the fact Phusion Passenger offers “Phusion
Passenger for Nginx”… while I got the impression (obviously a wrong
one, or not full) ï¿½ I can deploy my app on Nginx as well?
At least I heard people mentioning Nginx at the same sentence with
Heroku and Passenger…
Apache and Nginx are Web server programs. By themselves, they just
serve static files without any server-side dynamic content. This is
great for serving static websites, but obviously will not work if you’re
using a server-side programming language like PHP or Ruby. For Apache
or Nginx to run PHP/Ruby/Python/whatever applications, it needs a module
to connect it to the appropriate interpreter. That’s basically what
In other words, you need Passenger (or something similar, but Passenger
is probably simplest) in order for Apache or Nginx to talk to the Ruby
interpreter. Passenger is available either as an Apache module or as an
This brings me to another question:
I also understood I can use heroku for deployment, which will require
not more than one git push every once in a while (of course I know
there’s much more to it, but it was to explain me the ease of use)…
in case I do use heroku (couldn’t find any cons to using it I should
be aware of, if someone can write a few from his/her experience, I’ll
be glad to learn…) ï¿½ can I git push from my local repository or do I
need first to push to a remote one, such as a public/private
repository on GitHub?
You can git push from anywhere. Heroku doesn’t care.
Moreover, if I’m the only one playing around
with this app right now ï¿½ what benefits can a GitHub repository give
me comparing to using it locally?
It gives you another copy of the code stored offsite.
More about Heroku ï¿½ if I choose to use it, do I need a host as well?
Heroku is a host.