Module: Padlock

Defined in:
lib/padlock.rb,
lib/padlock/user.rb,
lib/padlock/version.rb,
lib/padlock/instance.rb,
lib/padlock/lockable.rb,
lib/generators/padlock_generator.rb,
lib/padlock/integrations/active_record.rb

Defined Under Namespace

Modules: ActiveRecord, Generators, Lockable, User Classes: Instance

Constant Summary collapse

VERSION =
"0.1.3"

Class Method Summary collapse

Class Method Details

.configObject



6
7
8
9
10
11
12
13
# File 'lib/padlock.rb', line 6

def config
  @config ||= OpenStruct.new(
    table_name: "padlocks",
    user_foreign_key: "user_id",
    user_class_name: "User",
    timeout: 1.day
  )
end

.lock(user, *objects) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/padlock.rb', line 15

def lock(user, *objects)
  objects.each do |object|
    unlock!(object)
    user.padlocks.create(lockable: object)
    object.reload
  end
end

.locked?(object) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/padlock.rb', line 23

def locked? object
  object.locked?
end

.touch(*objects) ⇒ Object



39
40
41
42
43
# File 'lib/padlock.rb', line 39

def touch *objects
  objects.select(&:locked?).each do |object|
    object.update_attribute(:updated_at, Time.zone.now)
  end
end

.unlock!(*objects) ⇒ Object



27
28
29
# File 'lib/padlock.rb', line 27

def unlock! *objects
  objects.each(&:unlock!)
end

.unlock_staleObject



35
36
37
# File 'lib/padlock.rb', line 35

def unlock_stale
  stale_locks.destroy_all
end

.unlocked?(object) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/padlock.rb', line 31

def unlocked? object
  object.unlocked?
end