Skip to content


Subversion checkout URL

You can clone with
Download ZIP
branch: rails-2-3
Fetching contributors…

Cannot retrieve contributors at this time

51 lines (32 sloc) 1.748 kB

Consistency Fail


consistency_fail is a tool to detect missing unique indexes in Rails projects.

With more than one application server, validates_uniqueness_of becomes a lie. Two app servers -> two requests -> two near-simultaneous uniqueness checks -> two processes that commit to the database independently, violating this faux constraint. You'll need a database-level constraint for cases like these.

consistency_fail will find your missing unique indexes, so you can add them and stop ignoring the C in ACID.

Similar problems arise with has_one, so consistency_fail finds places where database-level enforcement is lacking there as well.


gem install consistency_fail


Currently only Rails 2.x is supported. Rails 3 support is coming soon.

consistency_fail depends on being able to find all your ActiveRecord::Base subclasses with some $LOAD_PATH trickery. If any models are in a path either not on your project's load path or in a path that doesn't include the word "models", consistency_fail won't be able to find or analyze them.


The only run mode for now is to generate a report of the problematic spots in your application. From your Rails project directory, run:


from your terminal / shell. This will spit a report to standard output, which you can view directly, redirect to a file as evidence to embarrass a teammate, or simply beam in happiness at your application's perfect record for validates_uniqueness_of and has_one usage.

Coming Soon

  • Rails 3 support
  • Super-fail mode that monkey-patches explosions into your naughty models


Released under the MIT License. See the LICENSE file for further details.

Jump to Line
Something went wrong with that request. Please try again.