schlep 0.1.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/.gitignore +4 -0
- data/.rvmrc +8 -0
- data/.travis.yml +8 -0
- data/Gemfile +11 -0
- data/Guardfile +5 -0
- data/Rakefile +12 -0
- data/Readme.md +1 -0
- data/lib/schlep/version.rb +3 -0
- data/lib/schlep.rb +57 -0
- data/schlep.gemspec +31 -0
- data/test/schlep_test.rb +105 -0
- data/test/test_helper.rb +7 -0
- metadata +104 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
rescue LoadError
|
4
|
+
puts "Ruby >= 1.9 required for build tasks"
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rake/testtask'
|
8
|
+
|
9
|
+
task :default => :test
|
10
|
+
|
11
|
+
desc "Run basic tests"
|
12
|
+
Rake::TestTask.new("test") { |t| t.pattern = 'test/*_test.rb' }
|
data/Readme.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# schlep [](https://secure.travis-ci.org/Movitas/schlep-ruby) [](https://gemnasium.com/Movitas/schlep-ruby)
|
data/lib/schlep.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require "schlep/version"
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
require "redis"
|
5
|
+
|
6
|
+
module Schlep
|
7
|
+
extend self
|
8
|
+
|
9
|
+
attr_writer :app, :hostname
|
10
|
+
|
11
|
+
def app
|
12
|
+
@app ||= ""
|
13
|
+
end
|
14
|
+
|
15
|
+
def configure
|
16
|
+
yield self
|
17
|
+
end
|
18
|
+
|
19
|
+
def envelope(type, message)
|
20
|
+
{
|
21
|
+
:timestamp => timestamp,
|
22
|
+
:app => app,
|
23
|
+
:host => hostname,
|
24
|
+
:type => type,
|
25
|
+
:message => serialize_message(message)
|
26
|
+
}.to_json
|
27
|
+
end
|
28
|
+
|
29
|
+
def event(type, message)
|
30
|
+
e = envelope(type, message)
|
31
|
+
redis.rpush 'schlep', e
|
32
|
+
e
|
33
|
+
end
|
34
|
+
|
35
|
+
def hostname
|
36
|
+
@hostname ||= `hostname`.split(".").first
|
37
|
+
end
|
38
|
+
|
39
|
+
def redis
|
40
|
+
@redis ||= Redis.new
|
41
|
+
end
|
42
|
+
|
43
|
+
def reset
|
44
|
+
%w[app hostname redis].each do |ivar|
|
45
|
+
instance_variable_set "@#{ivar}", nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def serialize_message(message)
|
50
|
+
return message if [String, Fixnum, Float].index message.class
|
51
|
+
message.to_json
|
52
|
+
end
|
53
|
+
|
54
|
+
def timestamp
|
55
|
+
Time.now.to_f
|
56
|
+
end
|
57
|
+
end
|
data/schlep.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "schlep/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "schlep"
|
7
|
+
s.version = Schlep::VERSION
|
8
|
+
s.authors = ["Justin Campbell"]
|
9
|
+
s.email = ["justin@justincampbell.me"]
|
10
|
+
s.homepage = "http://github.com/Movitas/schlep-ruby"
|
11
|
+
s.summary = %q{Ruby client for schlep http://github.com/Movitas/schlep}
|
12
|
+
s.description = %q{Ruby client for schlep. Schlep provides a simple interface for logging and broadcasting events.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "schlep"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_runtime_dependency "redis"
|
22
|
+
|
23
|
+
if RUBY_VERSION =~ /1.8/
|
24
|
+
s.add_runtime_dependency "json"
|
25
|
+
s.add_runtime_dependency "system_timer"
|
26
|
+
end
|
27
|
+
|
28
|
+
s.add_development_dependency "guard-test"
|
29
|
+
s.add_development_dependency "rake"
|
30
|
+
s.add_development_dependency "shoulda"
|
31
|
+
end
|
data/test/schlep_test.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
begin
|
2
|
+
require "test_helper"
|
3
|
+
rescue LoadError
|
4
|
+
require File.join(File.dirname(__FILE__), ".", "test_helper")
|
5
|
+
end
|
6
|
+
|
7
|
+
class SchlepTest < Test::Unit::TestCase
|
8
|
+
context "schlep" do
|
9
|
+
should "be defined as a module" do
|
10
|
+
assert_equal Module, Schlep.class
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "configure" do
|
15
|
+
should "be configurable with setters" do
|
16
|
+
Schlep.app = "test_app_1"
|
17
|
+
Schlep.hostname = "test_hostname_1"
|
18
|
+
|
19
|
+
assert_equal "test_app_1", Schlep.app, "app"
|
20
|
+
assert_equal "test_hostname_1", Schlep.hostname, "hostname"
|
21
|
+
end
|
22
|
+
|
23
|
+
should "be configurable with a block" do
|
24
|
+
Schlep.configure do |config|
|
25
|
+
config.app = "test_app_2"
|
26
|
+
config.hostname = "test_hostname_2"
|
27
|
+
end
|
28
|
+
|
29
|
+
assert_equal "test_app_2", Schlep.app, "app"
|
30
|
+
assert_equal "test_hostname_2", Schlep.hostname, "hostname"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "envelope" do
|
35
|
+
should "return valid json" do
|
36
|
+
assert_nothing_raised(Exception) {
|
37
|
+
JSON.parse(Schlep.envelope "test_type", { :one => { :two => 3 }})
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "hostname" do
|
43
|
+
should "be a string" do
|
44
|
+
assert Schlep.hostname.is_a? String
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "reset" do
|
49
|
+
should "reset instance variables to nil" do
|
50
|
+
Schlep.configure do |config|
|
51
|
+
config.app = "test_app"
|
52
|
+
config.hostname = "test_hostname"
|
53
|
+
end
|
54
|
+
|
55
|
+
Schlep.reset
|
56
|
+
|
57
|
+
%w[app hostname redis].each do |ivar|
|
58
|
+
assert_nil Schlep.instance_variable_get("@#{ivar}"), "@#{ivar}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "serialize message" do
|
64
|
+
should "leave valid json alone" do
|
65
|
+
assert_equal "{\"one\":{\"two\":3}}",
|
66
|
+
Schlep.serialize_message("{\"one\":{\"two\":3}}")
|
67
|
+
end
|
68
|
+
|
69
|
+
should "leave strings alone" do
|
70
|
+
assert_equal "test string",
|
71
|
+
Schlep.serialize_message("test string")
|
72
|
+
end
|
73
|
+
|
74
|
+
should "convert arrays to json" do
|
75
|
+
assert_equal "[1,2,[3,4]]",
|
76
|
+
Schlep.serialize_message([1,2,[3,4]])
|
77
|
+
end
|
78
|
+
|
79
|
+
should "convert hashes to json" do
|
80
|
+
assert_equal "{\"one\":{\"two\":3}}",
|
81
|
+
Schlep.serialize_message({ :one => { :two => 3 }})
|
82
|
+
end
|
83
|
+
|
84
|
+
should "convert an array of hashes to json" do
|
85
|
+
assert_equal "[{\"one\":{\"two\":3}},{\"four\":{\"five\":6}}]",
|
86
|
+
Schlep.serialize_message([{ :one => { :two => 3 }},{ :four => { :five => 6 }}])
|
87
|
+
end
|
88
|
+
|
89
|
+
should "leave integers alone" do
|
90
|
+
assert_equal 123,
|
91
|
+
Schlep.serialize_message(123)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "leave floats alone" do
|
95
|
+
assert_equal 1.23,
|
96
|
+
Schlep.serialize_message(1.23)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "timestamp" do
|
101
|
+
should "be a float" do
|
102
|
+
assert Schlep.timestamp.is_a? Float
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: schlep
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Justin Campbell
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-12 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: redis
|
16
|
+
requirement: &70138116747200 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70138116747200
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: guard-test
|
27
|
+
requirement: &70138116746760 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70138116746760
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &70138116746340 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70138116746340
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: shoulda
|
49
|
+
requirement: &70138116745900 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70138116745900
|
58
|
+
description: Ruby client for schlep. Schlep provides a simple interface for logging
|
59
|
+
and broadcasting events.
|
60
|
+
email:
|
61
|
+
- justin@justincampbell.me
|
62
|
+
executables: []
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- .gitignore
|
67
|
+
- .rvmrc
|
68
|
+
- .travis.yml
|
69
|
+
- Gemfile
|
70
|
+
- Guardfile
|
71
|
+
- Rakefile
|
72
|
+
- Readme.md
|
73
|
+
- lib/schlep.rb
|
74
|
+
- lib/schlep/version.rb
|
75
|
+
- schlep.gemspec
|
76
|
+
- test/schlep_test.rb
|
77
|
+
- test/test_helper.rb
|
78
|
+
homepage: http://github.com/Movitas/schlep-ruby
|
79
|
+
licenses: []
|
80
|
+
post_install_message:
|
81
|
+
rdoc_options: []
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
requirements: []
|
97
|
+
rubyforge_project: schlep
|
98
|
+
rubygems_version: 1.8.10
|
99
|
+
signing_key:
|
100
|
+
specification_version: 3
|
101
|
+
summary: Ruby client for schlep http://github.com/Movitas/schlep
|
102
|
+
test_files:
|
103
|
+
- test/schlep_test.rb
|
104
|
+
- test/test_helper.rb
|