Answer: you’re using the latest version of Rails (1.2.3), which slightly changes the syntax of its SQL statements. cached_model relies on a regular expression to match that SQL statement.
To fix: Dive into the source of the cached_model gem, find the file lib/cached_model.rb
, and change the first line after def self.find_by_sql
to this:
return super unless args.first =~ /^SELECT \* FROM #{table_name} WHERE \(#{table_name}\.`?#{primary_key}`? = '?(\d+)'?\) *(?:LIMIT 1)?/
And it works!