Class: ActiveRecordServerless::Timeout
- Inherits:
-
Object
- Object
- ActiveRecordServerless::Timeout
- Defined in:
- lib/active_record_serverless/timeout.rb
Constant Summary collapse
- MUTEX =
Mutex.new
Class Method Summary collapse
- .last_used ⇒ Object
- .on_timeout(timeout, &block) ⇒ Object
- .running? ⇒ Boolean
- .running_id ⇒ Object
- .touch! ⇒ Object
Class Method Details
.last_used ⇒ Object
17 18 19 |
# File 'lib/active_record_serverless/timeout.rb', line 17 def last_used MUTEX.synchronize { _last_used } end |
.on_timeout(timeout, &block) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/active_record_serverless/timeout.rb', line 21 def on_timeout(timeout, &block) raise ArgumentError, 'Timeout must be greater than 1' unless timeout.to_f >= 1.0 touch! MUTEX.synchronize do _running_id((_running_id || 0) + 1) end _on_timeout(timeout.to_f, running_id, &block) end |
.running? ⇒ Boolean
33 34 35 |
# File 'lib/active_record_serverless/timeout.rb', line 33 def running? running_id.positive? end |
.running_id ⇒ Object
37 38 39 |
# File 'lib/active_record_serverless/timeout.rb', line 37 def running_id MUTEX.synchronize { _running_id } end |
.touch! ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/active_record_serverless/timeout.rb', line 8 def touch! ActiveSupport::Notifications.instrument('active_record_serverless.touch') do MUTEX.synchronize do _last_used(Time.now) yield if block_given? end end end |