Ruby on Rails is a web application programming framework, designed to provide developers with a stable & extensible way to create web-centric applications. Since its release in 2007, it's become the defacto standard for web developers around the world, with an estimated 1 million + developers having built a range of applications with it.
The point is that if you're looking at developing a Rails based application, you need hosting. Hosting – to most people – consists of renting a username on a "shared" provider, to which you're able to upload files, install "applications" (such as WordPress) and direct your web domains to the service in order to serve traffic .
The problem with "shared" hosting is that it's not able to handle Ruby or Rails very well at all. Basically, if you want to run a RoR application – you require what's known as an "application server" to process any requests. This is different to a web server in that it essentially allows a core "programming language" to process scripts in light of any new inbound requests from the Internet.
Most shared hosts do not support Ruby, or if they do, it's a very old version. They also do not have an application server that will run Rails based applications. On top of this, they don't have any way to actually "upload" a Rails app, and have its dependencies installed.
This is where the likes of "Heroku" came in. Heroku was developed as a way to "deploy" Rails based applications with minimal fuss or overhead. You get a free account and are able to push any "GIT" repository (with Rails code inside) to your Heroku service. The service then builds your application (installs dependencies) and allows you to then access the application through Heroku's own "stack". This is a pre-built system which is designed to provide the most effective Rails environment.
Whilst Heroku is still the best service for any sort of application, it has several issues which prevent it being a credible "production" environment. Firstly, it costs a lot. Starting from $ 7 / mo per app, this figure quickly grows to $ 60 / mo + depending on the various "addons" you may require.
On top of this, the service also locks you in to using AWS (Amazon Web Services), which basically means that you're unable to use your own infrastructure. You also have to retain a subdomain with Heroku – even if you have a custom URL.
The solution to this is that if you want to build a "production" server for Rails, you'd be best using a "cloud" VPS provider – which is basically able to provide you with the ability to determine exactly what you're looking at in regard to the underlying system. If you're able to set up a deployment mechanism for Rails VPS hosting, you're basically able to create your own server infrastructure – thus providing your system with the ability to run as effectively as possible.
The importance of this is that if you're using the likes of RackSpace, Hetzner, DigitalOcean – or another widely used "cloud" VPS service – you will end up being able to provide your own low cost infrastructure for your applications.
Source by Richard Peck