Rails Growing Pains

I’ve been playing with Rails recently, developing a site mostly for my own amusement.  There are a few issues I’ve run into that I think are growing pains related to Rails’ rapid evolution.

First, there’s the question of plugins, generators, and engines, and 3rdPartyLibs.  If you want to extend your Rails application using canned functionality, there are too many choices. 

Managing database schema is another area where there’s too many choices.  There’s migration, erbsql, and simple SQL scripts (specific to each database server).

It’s easy to get into problems like: I want to use migration to manage my schema, but I also want to use SaltedLoginGenerator and it comes with an erbsql script and doesn’t use migration.

It seems there’s also some churn in Rails itself, with commonly used patterns becoming deprecated.  In my brand new Rails app there are deprecation warnings in my log file.  Just today I was reading a book that talked about the find_all method when I ran across this:

find_all and find_first have been deprecated over a year now. Stop using them. While you’re at it, stop using render_partial. Their better educated cousin find can handle all their needs. Use find(:first), find(:all) and render :partial.

Bummer.  I prefer find_all and find_first since they’re more easily discoverable.

This is typical of projects that grow organically, and in my opinion is one of the weaknesses of open source (although I know some people also think of it as a strength).  Googling for help can be frustrating since there’s lots of help out there, but often it’s obsolete so any code snippets or samples you find may or may not apply to the application you’re building.

Someone needs to create a Rails distribution, with a set of components all tested and configured to work together.  Maybe that exists, but I haven’t run across it yet.

(So far I’m using migration for schema, and acts_as_authenticated for login).