Hoopla!

now with extra whiz-bang!

Hoopla!

Ruby on Rails Web Hosting - A Complete Guide

January 23, 2007 · 27 comments

Update: It turns out that a lot of folks are looking for this information. I'll do my best to keep this list updated as new hosts appear. Please drop me a line in the comments to tell me what I'm missing.

Update2: Nick Snels of RailsForum has put together an excellent app that automatically compares Rails hosts. Way to go Nick! RailsHostingInfo.

Note: This list is 100% devoid of affiliate links.

One of my clients has a site that just started picking up a lot of traction. We developed it on a Dreamhost shared account because that was simply the best starter option for hosting Rails apps. Dreamhost has been largely reliable and they clearly are the industry leaders in deploying massive shared hosting accounts with all the latest technologies and shell access. What they don't have is scalability for those of us who dislike the occasional 500 error and would like some resources actually dedicated to our use.

So my client has asked me to compile a list of the hosts that are the next level up from DH's exteremely cheap (under $100 for two years!) hosting. I'm going to grab a bunch of this data from a post on RailsForum, though I'll try to parse it in a more readable format:

Shared Hosts

Dreamhost

  • $100 for two years (Google around for a special discount code)
  • 1TB transfer
  • 20GB space
  • known for cheapness, high limits, and occasional errors/downtime

Site5

  • $6.95/month for two years
  • 200GB transfer
  • 10GB space
  • seems about like DH but many customers claim Site5 is more reliable.
  • offers fewer accounts per server with higher-paying plans.

ASmallOrange

  • $25/year
  • 3GB transfer
  • 75MB space
  • This is the bare-minimal plan ASO offers but it's still more than more Rails sites will need.

PlanetArgon

  • $11.25/month for one year
  • 15GB transfer
  • 500MB space
  • can be configured to use: mongrel, lighttpd, pound, capistrano
  • Planet Argon has been heavily involved in the Rails community, it's run by RobbyonRails

Textdrive

  • $8.50/month for one year + $25 setup
  • 3GB transfer
  • 1GB storage
  • 6 databases
  • cannot be used for development or testing, only production
  • I'm not as impressed with these guys as with some of their competition, but they're still in the running.

Rails Playground

  • $5/month for one year
  • 30GB transfer
  • 3GB space
  • These guys excel at being a good development ground, hence the name. This starter plan is probably great for folks who are looking for the simplest and easiest way to get their feet wet.

VPS Hosts

RailsMachine

  • $75/month + $30 setup
  • 100GB transfer
  • 10GB space
  • 256MB dedicated memory
  • up to 6 Rails apps
  • 2 unique IPs
  • Perfect setup for a serious application. Just about the most stable and ideal setup. A little pricey, but well worth it.

RimuHosting

  • $29.95/month
  • 60GB transfer
  • 4-8GB space
  • 128MB memory
  • Seems like an affordable VPS option

Engine Yard

  • $249/month
  • 125 GB transfer
  • 15GB space
  • memory: unclear
  • A really novel approach. They have massive clusters and they sell 'slices' of those clusters. Easy to upgrade/downgrade but their base price is quite high.

SliceHost

  • $20/month
  • 100GB transfer
  • 10GB space
  • 256MB memory
  • Very high value for the price. A complete VPS with plenty of memory for RAM-hogging Rails apps. Web panel gives you control to reboot (or reinstall!) on the fly for no additional cost.

→ 27 comments Tags:

Converting a Rails App to Capistrano deployment

August 03, 2006 · 0 comments

I’ve got one client for whom I’m building a Rails app and I started it long before I knew anything about Capistrano. Mostly things are pretty straightforward and all is working as it should – but there are a couple of hangups.

Shared Resources

My site allows users to upload portraits of themselves. These are kept right in the open in the public directory under a folder named “portraits”. They can also upload films, documents, etc. using the model Documents which stores its stuff in ./public/documents.

The first real hassle of converting to capistrano was dealing with these because up until now I’ve kept them in the SVN repository for fear of losing any data and pisisng off a user. With the number of deployments I do I no longer want to put these files in the repository but that would remove them from the site. Capistrano does a fresh checkout each time it deploys and if something’s not in SVN then it just plain doesn’t make it back into the app.

Capistrano does allow the use of a shared folder located above the live app directory. The trick is getting stuff into there and making sure that capistrano can recognize it every time I deploy.

My Solution

It turns out the Capistrano allows highly configurable deployment options. All I needed to do was to move the folders out of ./public and into shared
mv ./public/documents ../shared/
mv ./public/portraits ../shared/
then edit my deploy script so it links those folders up into each new public directory
task :after_update_code do
  %w{documents portraits}.each do |share|
    run "ln -s #{shared_path}/#{share} #{release_path}/public/#{share}" 
  end
end
It didn’t take long for me to realize that I needed to do the same with any other file that wouldn’t be in SVN. For me, this is my database.yml file and cofig/environment.rb file
task :after_update_code do
  %w{documents portraits}.each do |share|
    run "ln -s #{shared_path}/#{share} #{release_path}/public/#{share}" 
  end
  %w{database.yml environment.rb}.each do |config|
    run "ln -nfs #{shared_path}/#{config} #{release_path}/config/#{config}" 
  end
end

There’s actually a number of tasks that you could add this code to. You could put it right into the deploy task by using `task :deploy` or you could make it run immediately after deploy is run by `task :after_deploy`

So far so good with Capistrano.

→ 0 comments Tags: