lib/deputy.rb in deputy-0.1.0 vs lib/deputy.rb in deputy-0.1.1

- old
+ new

@@ -1,12 +1,43 @@ require 'yaml' require 'open-uri' +def eval_and_fetch_constants(x) + old = Module.constants.map{|c| c.to_s} + eval(x) + new = (Module.constants.map{|c| c.to_s} - old) + new.map{|const| const_get(const) } +end + +class Scout + class Plugin + def report(metrics) + metrics.each do |key, value| + send_report "#{self.class}.#{key}", value + end + end + end + + def self.plugins(code) + constants = eval_and_fetch_constants(code) + constants.select{|constant| constant.instance_methods.map{|m| m.to_sym }.include?(:build_report) } + end +end + module Deputy VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip + def self.run_plugins + content = get("/plugins.rb") + Scout.plugins(content).each{|p| p.new.build_report } + end + def self.send_report(metric, value) - url = "#{sheriff_url}/report/#{metric}/#{value}" + get "/report/#{metric}/#{value}" + end + + def self.get(path) + url = "#{sheriff_url}#{path}" open(url).read rescue => e e.message << url raise e end \ No newline at end of file