Module: Schlep
Constant Summary collapse
- VERSION =
"0.5.0"
Instance Attribute Summary collapse
Instance Method Summary collapse
- #app ⇒ Object
- #app=(string) ⇒ Object
- #configure {|_self| ... } ⇒ Object
- #envelope(type, message, options = {}) ⇒ Object
- #event(type, message, options = {}) ⇒ Object
- #events(type, messages, options = {}) ⇒ Object
- #host ⇒ Object
- #host=(string) ⇒ Object
- #key ⇒ Object
- #redis ⇒ Object
- #redis_options ⇒ Object
- #reset ⇒ Object
- #serialize_message(message) ⇒ Object
- #timestamp ⇒ Object
Instance Attribute Details
#redis_url ⇒ Object
80 81 82 |
# File 'lib/schlep.rb', line 80 def redis_url @redis_url ||= ENV["REDIS_URL"] or ENV["REDISTOGO_URL"] end |
Instance Method Details
#app ⇒ Object
12 13 14 |
# File 'lib/schlep.rb', line 12 def app @app ||= "" end |
#app=(string) ⇒ Object
16 17 18 |
# File 'lib/schlep.rb', line 16 def app=(string) @app = sanitize string end |
#configure {|_self| ... } ⇒ Object
20 21 22 |
# File 'lib/schlep.rb', line 20 def configure yield self end |
#envelope(type, message, options = {}) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/schlep.rb', line 24 def envelope(type, , = {}) { :timestamp => , :app => [:app] || app, :host => [:host] || host, :type => type, :message => () } end |
#event(type, message, options = {}) ⇒ Object
34 35 36 |
# File 'lib/schlep.rb', line 34 def event(type, , = {}) events type, [], end |
#events(type, messages, options = {}) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/schlep.rb', line 38 def events(type, , = {}) .keys.each { |k| [k] = sanitize([k]) } .map! { || envelope(type, , ).to_json } suppress_redis_errors do redis.pipelined do while .any? redis.rpush key, .shift end end end end |
#host ⇒ Object
52 53 54 |
# File 'lib/schlep.rb', line 52 def host @host ||= sanitize `hostname` end |
#host=(string) ⇒ Object
56 57 58 |
# File 'lib/schlep.rb', line 56 def host=(string) @host = sanitize string end |
#key ⇒ Object
60 61 62 |
# File 'lib/schlep.rb', line 60 def key @key ||= :schlep end |
#redis ⇒ Object
64 65 66 |
# File 'lib/schlep.rb', line 64 def redis @redis ||= Redis.new end |
#redis_options ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/schlep.rb', line 68 def return {} unless redis_url parsed_url = URI::parse(redis_url) { :host => parsed_url.host, :port => parsed_url.port, :password => parsed_url.password } end |
#reset ⇒ Object
84 85 86 87 88 |
# File 'lib/schlep.rb', line 84 def reset %w[app host redis redis_url].each do |ivar| instance_variable_set "@#{ivar}", nil end end |
#serialize_message(message) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/schlep.rb', line 90 def () return unless .is_a? String and .match /\{.+\}/ begin JSON.parse rescue JSON::ParserError end end |
#timestamp ⇒ Object
102 103 104 |
# File 'lib/schlep.rb', line 102 def Time.now.to_f end |