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