Setting It All Up! Domain, Server, Rails, Gems, Capistrano, GitHub.

I love getting started on a new project, so much to do, so little time to do it! It's exciting...

Everydayhighprice

First things first, I've bought the domain and I'm setting this all up on one of my Linode servers. I know there is a TON of debate about what one should use for there server setup. Go with Amazon, AppSpot, Rackspace, etc... But I've been on Linode for some time now and they have always been great for small low cost servers that are easy to manage and allow me to throw products up right quick. When things get bigger, I can quickly move to another spot if need be :)

  1. Setup a private GitHub for my code.
  2. Pointed the domain to the server.
  3. Started a new Rails project (locally).
  4. Created this blog (the other day).
  5. Jumped over to Railscasts for a quick review of user authentication.
  6. Created a new database.
  7. Setup user registration with devise (I've got a seperate post coming about that).
  8. Ran a few DB migrations.
  9. Pushed my code to GitHub
  10. Bam! The start of a web app with user authentication, backed up and ready to go!

I'm not a Rails fanboy by any sense of the word, but I do love slamming in some solid gem's that add instant functionality to a site. When I'm about to start a new application, the first thing I usually do is head on over to Railscasts and see what Ryan Bates has been up to. What I love about him is that he stays up to date with the latest Rails goodies so that I don't have to!

Thanks Ryan!

Next thing I typically do is spend a few minutes scanning through the Ruby GitHub section. What's new? What's happening? Anything I can use? Am I going to be working on anything that needs extending? Can I contribute? Just getting up to speed... Then I'll do a search in the repositories under the Ruby filter for anything that I might need to accomplish in my new app. Any good gem's?

Okay, so by now the domains DNS has propogated and I can surf to it. Let's get some code up on the live server! Time to setup Capistrano. Now, I've learned to love Capistrano. It is such an AMAZING feeling to whip up some code, test it, and issue a "cap deploy" seeing it live, instantly on your server. Very powerful. I didnt fully understand that power until I really got into a development groove with it.

Have you ever recieved an email from one of your clients/users about an issue? Within 10 minutes had a code fix, tested, deployed and an email response telling them you've solved their problem? Orgasmic! :)

Learn it. Love it. Live it.

The one draw back I have with Capistrano is it always takes me a little bit of time to get it setup for some reason. There are a bunch of little details, like file permissions, that I always forget about. But honestly, it's such a super small and minor complaint compared to the pure awesome power of a 'cap deploy' command. I just follow the online doc's for installation, a couple head scratches later and I'm good to go :)

Okay, so at this point Capistrano has been installed on the server, I run through a few test deploys, along with a few migrations and all is working well.  So where am I?

  1. Server is setup.
  2. Domain pointed to server.
  3. Rails setup with user authentication.
  4. Using GitHub to manage my code base.
  5. Deploying to the production server via Capistrano.

Not bad for a few hours of my time. Actually, pretty fucking amazing!

Yea, yea, yea, I know. It's all easy until you get some traffic :) Okay, so onward and upward. I've got to setup SSL so my iPhone app will have some security while communicating with the webserver. I'll write an in-depth post about that. I will be grabbing some paper and a pencile to draw out some designs and flowcharts. Then it's on to writing Objective-C code!

Until then, enjoy a little nuttiness!