Class: Spring::ProcessTitleUpdater
- Inherits:
-
Object
- Object
- Spring::ProcessTitleUpdater
- Defined in:
- lib/spring/process_title_updater.rb
Overview
Yes, I know this reimplements a bunch of stuff in Active Support, but I don’t want the Spring client to depend on AS, in order to keep its load time down.
Constant Summary collapse
- SECOND =
1
- MINUTE =
60
- HOUR =
60*60
Instance Attribute Summary collapse
-
#block ⇒ Object
readonly
Returns the value of attribute block.
Class Method Summary collapse
Instance Method Summary collapse
- #distance_in_words(now = Time.now) ⇒ Object
-
#initialize(start = Time.now, &block) ⇒ ProcessTitleUpdater
constructor
A new instance of ProcessTitleUpdater.
- #interval ⇒ Object
- #next ⇒ Object
- #value ⇒ Object
Constructor Details
#initialize(start = Time.now, &block) ⇒ ProcessTitleUpdater
Returns a new instance of ProcessTitleUpdater.
21 22 23 24 |
# File 'lib/spring/process_title_updater.rb', line 21 def initialize(start = Time.now, &block) @start = start @block = block end |
Instance Attribute Details
#block ⇒ Object (readonly)
Returns the value of attribute block.
19 20 21 |
# File 'lib/spring/process_title_updater.rb', line 19 def block @block end |
Class Method Details
.run(&block) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/spring/process_title_updater.rb', line 10 def self.run(&block) updater = new(&block) Spring.failsafe_thread { $0 = updater.value loop { $0 = updater.next } } end |
Instance Method Details
#distance_in_words(now = Time.now) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/spring/process_title_updater.rb', line 47 def distance_in_words(now = Time.now) distance = now - @start if distance < MINUTE pluralize(distance, "sec") elsif distance < HOUR pluralize(distance / MINUTE, "min") else pluralize(distance / HOUR, "hour") end end |
#interval ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/spring/process_title_updater.rb', line 26 def interval distance = Time.now - @start if distance < MINUTE SECOND elsif distance < HOUR MINUTE else HOUR end end |
#next ⇒ Object
38 39 40 41 |
# File 'lib/spring/process_title_updater.rb', line 38 def next sleep interval value end |
#value ⇒ Object
43 44 45 |
# File 'lib/spring/process_title_updater.rb', line 43 def value block.call(distance_in_words) end |