schlep 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Readme.md +2 -2
- data/lib/schlep.rb +16 -14
- data/lib/schlep/version.rb +1 -1
- data/spec/lib/schlep_spec.rb +32 -13
- data/spec/redis_spec.rb +23 -0
- metadata +10 -10
data/Readme.md
CHANGED
@@ -26,7 +26,7 @@ To change this, you can configure things one at a time:
|
|
26
26
|
|
27
27
|
```rb
|
28
28
|
Schlep.app = "My App"
|
29
|
-
Schlep.
|
29
|
+
Schlep.host = "localhost"
|
30
30
|
Schlep.redis_url = "redis://redis:password@localhost:6379"
|
31
31
|
```
|
32
32
|
|
@@ -35,7 +35,7 @@ or in a block:
|
|
35
35
|
```rb
|
36
36
|
Schlep.configure do |config|
|
37
37
|
config.app = "My App"
|
38
|
-
config.
|
38
|
+
config.host = "localhost"
|
39
39
|
config.redis_url = "redis://redis:password@localhost:6379"
|
40
40
|
end
|
41
41
|
```
|
data/lib/schlep.rb
CHANGED
@@ -21,38 +21,40 @@ module Schlep
|
|
21
21
|
yield self
|
22
22
|
end
|
23
23
|
|
24
|
-
def envelope(type, message)
|
24
|
+
def envelope(type, message, options = {})
|
25
25
|
{
|
26
26
|
:timestamp => timestamp,
|
27
|
-
:app => app,
|
28
|
-
:host =>
|
27
|
+
:app => options[:app] || app,
|
28
|
+
:host => options[:host] || host,
|
29
29
|
:type => type,
|
30
30
|
:message => serialize_message(message)
|
31
|
-
}
|
31
|
+
}
|
32
32
|
end
|
33
33
|
|
34
|
-
def event(type, message)
|
35
|
-
events type, [message]
|
34
|
+
def event(type, message, options = {})
|
35
|
+
events type, [message], options
|
36
36
|
end
|
37
37
|
|
38
|
-
def events(type, messages)
|
39
|
-
|
38
|
+
def events(type, messages, options = {})
|
39
|
+
options.keys.each { |k| options[k] = sanitize(options[k]) }
|
40
|
+
|
41
|
+
messages.map! { |message| envelope(type, message, options).to_json }
|
40
42
|
|
41
43
|
suppress_redis_errors do
|
42
44
|
redis.pipelined do
|
43
45
|
while messages.any?
|
44
|
-
redis.rpush key, messages.
|
46
|
+
redis.rpush key, messages.shift
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
50
|
-
def
|
51
|
-
@
|
52
|
+
def host
|
53
|
+
@host ||= sanitize `hostname`
|
52
54
|
end
|
53
55
|
|
54
|
-
def
|
55
|
-
@
|
56
|
+
def host=(string)
|
57
|
+
@host = sanitize string
|
56
58
|
end
|
57
59
|
|
58
60
|
def key
|
@@ -80,7 +82,7 @@ module Schlep
|
|
80
82
|
end
|
81
83
|
|
82
84
|
def reset
|
83
|
-
%w[app
|
85
|
+
%w[app host redis redis_url].each do |ivar|
|
84
86
|
instance_variable_set "@#{ivar}", nil
|
85
87
|
end
|
86
88
|
end
|
data/lib/schlep/version.rb
CHANGED
data/spec/lib/schlep_spec.rb
CHANGED
@@ -18,30 +18,30 @@ describe Schlep do
|
|
18
18
|
context ".configure" do
|
19
19
|
it "should be configurable with setters" do
|
20
20
|
Schlep.app = "test_app_1"
|
21
|
-
Schlep.
|
21
|
+
Schlep.host = "test_host_1"
|
22
22
|
Schlep.redis_url = "redis://localhost:1234"
|
23
23
|
|
24
24
|
Schlep.app.should == "test_app_1"
|
25
|
-
Schlep.
|
25
|
+
Schlep.host.should == "test_host_1"
|
26
26
|
Schlep.redis_url.should == "redis://localhost:1234"
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should be configurable with a block" do
|
30
30
|
Schlep.configure do |config|
|
31
31
|
config.app = "test_app_2"
|
32
|
-
config.
|
32
|
+
config.host = "test_host_2"
|
33
33
|
config.redis_url = "redis://localhost:4321"
|
34
34
|
end
|
35
35
|
|
36
36
|
Schlep.app.should == "test_app_2"
|
37
|
-
Schlep.
|
37
|
+
Schlep.host.should == "test_host_2"
|
38
38
|
Schlep.redis_url.should == "redis://localhost:4321"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
context ".envelope" do
|
43
|
-
it "should return
|
44
|
-
|
43
|
+
it "should return a hash" do
|
44
|
+
Schlep.envelope("test", "test").should be_instance_of Hash
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should accept types as strings" do
|
@@ -51,21 +51,40 @@ describe Schlep do
|
|
51
51
|
it "should accept types as symbols" do
|
52
52
|
Schlep.envelope :test, "test"
|
53
53
|
end
|
54
|
+
|
55
|
+
it "should allow the app to be overridden" do
|
56
|
+
Schlep.app = "test_app"
|
57
|
+
e = Schlep.envelope("test", "test", :app => "another_app")
|
58
|
+
e[:app].should == "another_app"
|
59
|
+
Schlep.app.should == "test_app"
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should allow the host to be overridden" do
|
63
|
+
Schlep.host = "test_host"
|
64
|
+
e = Schlep.envelope("test", "test", :host => "another_host")
|
65
|
+
e[:host].should == "another_host"
|
66
|
+
Schlep.host.should == "test_host"
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should not allow the timestamp to be overridden" do
|
70
|
+
e = Schlep.envelope("test", "test", :timestamp => 1234567890)
|
71
|
+
e[:timestamp].should_not == 1234567890
|
72
|
+
end
|
54
73
|
end
|
55
74
|
|
56
|
-
context ".
|
75
|
+
context ".host" do
|
57
76
|
it "should be a string" do
|
58
|
-
Schlep.
|
77
|
+
Schlep.host.should be_instance_of String
|
59
78
|
end
|
60
79
|
|
61
80
|
it "should not include a newline from the hostname command" do
|
62
|
-
Schlep.
|
81
|
+
Schlep.host.should_not match /\s/
|
63
82
|
end
|
64
83
|
|
65
84
|
it "should not remove dashes, underscores, or periods" do
|
66
|
-
Schlep.
|
85
|
+
Schlep.host = "this-is_a.host"
|
67
86
|
|
68
|
-
Schlep.
|
87
|
+
Schlep.host.should == "this-is_a.host"
|
69
88
|
end
|
70
89
|
end
|
71
90
|
|
@@ -112,12 +131,12 @@ describe Schlep do
|
|
112
131
|
it "should reset instance variables to nil" do
|
113
132
|
Schlep.configure do |config|
|
114
133
|
config.app = "test_app"
|
115
|
-
config.
|
134
|
+
config.host = "test_host"
|
116
135
|
end
|
117
136
|
|
118
137
|
Schlep.reset
|
119
138
|
|
120
|
-
%w[app
|
139
|
+
%w[app host redis].each do |ivar|
|
121
140
|
Schlep.instance_variable_get("@#{ivar}").should be_nil
|
122
141
|
end
|
123
142
|
end
|
data/spec/redis_spec.rb
CHANGED
@@ -24,6 +24,16 @@ describe Schlep do
|
|
24
24
|
Schlep.event :test, "test"
|
25
25
|
|
26
26
|
Schlep.redis.llen(Schlep.key).should == 1
|
27
|
+
envelope = JSON.parse(Schlep.redis.lpop(Schlep.key))
|
28
|
+
envelope['type'].should == "test"
|
29
|
+
envelope['message'].should == "test"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should sanitize overridden options" do
|
33
|
+
Schlep.event "test", "test", :app => "a:b/c^d$$e", :host => "a:b/c^d$$e"
|
34
|
+
envelope = JSON.parse(Schlep.redis.lpop(Schlep.key))
|
35
|
+
envelope['app'].should == "a:b:c:d:e"
|
36
|
+
envelope['host'].should == "a:b:c:d:e"
|
27
37
|
end
|
28
38
|
|
29
39
|
it "should suppress connection errors" do
|
@@ -38,6 +48,19 @@ describe Schlep do
|
|
38
48
|
Schlep.events :test, [1,2,3]
|
39
49
|
|
40
50
|
Schlep.redis.llen(Schlep.key).should == 3
|
51
|
+
|
52
|
+
(1..3).each do |n|
|
53
|
+
envelope = JSON.parse(Schlep.redis.lpop(Schlep.key))
|
54
|
+
envelope['type'].should == "test"
|
55
|
+
envelope['message'].should == n
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should sanitize overridden options" do
|
60
|
+
Schlep.events "test", ["test"], :app => "a:b/c^d$$e", :host => "a:b/c^d$$e"
|
61
|
+
envelope = JSON.parse(Schlep.redis.lpop(Schlep.key))
|
62
|
+
envelope['app'].should == "a:b:c:d:e"
|
63
|
+
envelope['host'].should == "a:b:c:d:e"
|
41
64
|
end
|
42
65
|
|
43
66
|
it "should suppress connection errors" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schlep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
16
|
-
requirement: &
|
16
|
+
requirement: &70191267022160 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70191267022160
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: guard-rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70191267021720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70191267021720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70191267021300 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70191267021300
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70191267020820 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70191267020820
|
58
58
|
description: Ruby client for schlep. Schlep provides a simple interface for logging
|
59
59
|
and broadcasting events.
|
60
60
|
email:
|