Skip to content

HTTPS clone URL

Subversion checkout URL

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

Cannot retrieve contributors at this time

51 lines (32 sloc) 1.748 kB

Consistency Fail

Description

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.

Installation

gem install consistency_fail

Limitations

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.

Usage

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

consistency_fail

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

License

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

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