Class: Dboard::Collector
Instance Attribute Summary collapse
-
#sources ⇒ Object
readonly
Returns the value of attribute sources.
Class Method Summary collapse
- .register_after_update_callback(callback) ⇒ Object
- .register_error_callback(callback) ⇒ Object
- .register_source(key, instance) ⇒ Object
- .start ⇒ Object
Instance Method Summary collapse
-
#initialize ⇒ Collector
constructor
A new instance of Collector.
- #register_after_update_callback(callback) ⇒ Object
- #register_error_callback(callback) ⇒ Object
- #register_source(key, instance) ⇒ Object
- #start ⇒ Object
-
#update_source(source, instance) ⇒ Object
Public because the old tests depend on it.
Constructor Details
#initialize ⇒ Collector
Returns a new instance of Collector.
26 27 28 29 30 |
# File 'lib/collector.rb', line 26 def initialize @sources = {} @after_update_callback = lambda {} @error_callback = lambda { |exception| } end |
Instance Attribute Details
#sources ⇒ Object (readonly)
Returns the value of attribute sources.
8 9 10 |
# File 'lib/collector.rb', line 8 def sources @sources end |
Class Method Details
.register_after_update_callback(callback) ⇒ Object
14 15 16 |
# File 'lib/collector.rb', line 14 def self.register_after_update_callback(callback) Collector.instance.register_after_update_callback(callback) end |
.register_error_callback(callback) ⇒ Object
18 19 20 |
# File 'lib/collector.rb', line 18 def self.register_error_callback(callback) Collector.instance.register_error_callback(callback) end |
.register_source(key, instance) ⇒ Object
10 11 12 |
# File 'lib/collector.rb', line 10 def self.register_source(key, instance) Collector.instance.register_source(key, instance) end |
.start ⇒ Object
22 23 24 |
# File 'lib/collector.rb', line 22 def self.start instance.start end |
Instance Method Details
#register_after_update_callback(callback) ⇒ Object
49 50 51 |
# File 'lib/collector.rb', line 49 def register_after_update_callback(callback) @after_update_callback = callback end |
#register_error_callback(callback) ⇒ Object
53 54 55 |
# File 'lib/collector.rb', line 53 def register_error_callback(callback) @error_callback = callback end |
#register_source(key, instance) ⇒ Object
45 46 47 |
# File 'lib/collector.rb', line 45 def register_source(key, instance) @sources.merge!({ key => instance }) end |
#start ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/collector.rb', line 32 def start @sources.each do |source, instance| Thread.new do wait_a_little_bit_to_not_start_all_fetches_at_once loop do update_in_thread(source, instance) end end end loop { sleep 1 } end |
#update_source(source, instance) ⇒ Object
Public because the old tests depend on it
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/collector.rb', line 58 def update_source(source, instance) begin data = instance.fetch publish_data(source, data) ensure @after_update_callback.call end rescue Exception => ex puts "Failed to update #{source}: #{ex.}" puts ex.backtrace @error_callback.call(ex) end |