Class: Adrian::Filters::FileLock

Inherits:
Object
  • Object
show all
Defined in:
lib/adrian/filters.rb

Constant Summary collapse

ONE_HOUR =
3_600

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ FileLock

Returns a new instance of FileLock.



32
33
34
35
# File 'lib/adrian/filters.rb', line 32

def initialize(options = {})
  @options       = options
  @reserved_path = @options.fetch(:reserved_path)
end

Instance Method Details

#allow?(item) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/adrian/filters.rb', line 37

def allow?(item)
  !locked?(item) || lock_expired?(item)
end

#durationObject



49
50
51
# File 'lib/adrian/filters.rb', line 49

def duration
  @options[:duration] ||= ONE_HOUR
end

#lock_expired?(item) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/adrian/filters.rb', line 41

def lock_expired?(item)
  item.updated_at <= (Time.now - duration)
end

#locked?(item) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/adrian/filters.rb', line 45

def locked?(item)
  @reserved_path == File.dirname(item.path)
end