Easy deployment of rails apps.
Recently, A friend of mine who is looking at learning rails asked me about deployment strategies. He was concerned that “rails deployment arrangement seems messy… eg, the need to employ several different technologies (apache, mongrel etc) to get the app running”.
I thought a bit about it and in fact rails seems quite the opposite. I think the deployment strategy scales really well with your development workflow. Let me explain:
1. ‘rails someapp’ . Your app is ready. Write some code.
2. ‘ruby start/server’ . Your app is running. Keep writing code.
At some point:
3. Setup mysql and change ‘config/databases.yml’. You’re now using mysql instead of sqlite
At some later point, when your app is ready for production:
4. Setup capistrano for easy deployment.
5. Setup apache + passenger on your production environment.
Finally, after some use:
6. Profit.
7. Think other deployment strategies targetting scalability.
See how good that is? Each step is relatively easy, but you can move forward as you grow and stop at any step after 2 if that’s all you want to do with that app. You don’t have to do it all at once, that’s the beauty and power of rails. It’s something that was sort of missing from web development before rails came along.
One of the things I like best about rails is convention over configuration. Increasingly these days I want to get on with writing code, not configuring the development and deployment environments. Rails really helps with that.
I like where things are heading in terms of cloud platforms like Amazon’s EC2 or Google’s AppEngine. Not having to worry about a data center and physical (or virtual) servers to setup and maintain means I can get on with doing what I like best - writing code.