TP optimistic lock

This gem extends ActiveRecord to handle ActiveRecord::RecordNotUnique with an optimistic behavior. If a uniqueness violation is triggered by the database, it will be returned through the ‘errors` method.

The purpose is to be more performative and assertive than ‘validates_uniqueness_of`, a Rails pessimistic instruction for handling uniqueness.

‘validates_uniqueness_of` performs a select query for each new insert to check unicity. `validates_uniqueness_of` doesn’t work very well in an environment with high concurrency. The select and insert are atomic operations, so some attempts of insert the same record twice happens witha high frequency.

example: “‘

class Foo < ActiveRecord::Base
  acts_as_unique #
end

def sample
  Bar.create(uuid: '5ea880de-e4ce-4770-8d10-c89bac181e40', other: 'bla bla')
  bar = Bar.create(uuid: '5ea880de-e4ce-4770-8d10-c89bac181e40', other: 'bla bla')

  #error returned: UNIQUE constraint failed
  bar.errors
end

def other_sample
  Bar.create!(uuid: '5ea880de-e4ce-4770-8d10-c89bac181e40', other: 'bla bla')

  #error raised: ActiveRecord::RecordInvalid UNIQUE constraint failed
  Bar.create!(uuid: '5ea880de-e4ce-4770-8d10-c89bac181e40', other: 'bla bla')
end