oboe 2.2.6 → 2.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -1
- data/Appraisals +20 -0
- data/Gemfile +16 -20
- data/README.md +280 -10
- data/Rakefile +63 -7
- data/ext/oboe_metal/extconf.rb +2 -1
- data/ext/oboe_metal/tests/test.rb +4 -0
- data/gemfiles/rails2.3.gemfile +18 -0
- data/gemfiles/rails2.3.gemfile.lock +95 -0
- data/gemfiles/rails3.0.gemfile +18 -0
- data/gemfiles/rails3.0.gemfile.lock +142 -0
- data/gemfiles/rails3.1.gemfile +18 -0
- data/gemfiles/rails3.1.gemfile.lock +152 -0
- data/gemfiles/rails3.2.gemfile +18 -0
- data/gemfiles/rails3.2.gemfile.lock +150 -0
- data/init.rb +1 -1
- data/lib/joboe_metal.rb +52 -34
- data/lib/method_profiling.rb +1 -1
- data/lib/oboe.rb +6 -5
- data/lib/oboe/api.rb +1 -1
- data/lib/oboe/api/layerinit.rb +3 -0
- data/lib/oboe/api/logging.rb +1 -1
- data/lib/oboe/api/memcache.rb +2 -2
- data/lib/oboe/api/profiling.rb +6 -4
- data/lib/oboe/api/tracing.rb +1 -1
- data/lib/oboe/api/util.rb +1 -1
- data/lib/oboe/config.rb +29 -10
- data/lib/oboe/frameworks/rails.rb +6 -7
- data/lib/oboe/frameworks/rails/inst/action_controller.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/action_view.rb +3 -3
- data/lib/oboe/frameworks/rails/inst/action_view_2x.rb +3 -3
- data/lib/oboe/frameworks/rails/inst/action_view_30.rb +3 -3
- data/lib/oboe/frameworks/rails/inst/active_record.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql2.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/oracle.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/postgresql.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/utils.rb +2 -2
- data/lib/oboe/inst/cassandra.rb +2 -2
- data/lib/oboe/inst/dalli.rb +8 -4
- data/lib/oboe/inst/http.rb +38 -34
- data/lib/oboe/inst/memcache.rb +12 -3
- data/lib/oboe/inst/memcached.rb +10 -5
- data/lib/oboe/inst/mongo.rb +19 -15
- data/lib/oboe/inst/moped.rb +120 -51
- data/lib/oboe/inst/rack.rb +14 -7
- data/lib/oboe/inst/resque.rb +2 -2
- data/lib/oboe/instrumentation.rb +3 -0
- data/lib/oboe/loading.rb +2 -6
- data/lib/oboe/logger.rb +3 -1
- data/lib/oboe/ruby.rb +3 -0
- data/lib/oboe/util.rb +2 -0
- data/lib/oboe/version.rb +5 -2
- data/lib/oboe_fu.rb +2 -0
- data/lib/oboe_metal.rb +23 -10
- data/lib/rails/generators/oboe/install_generator.rb +5 -3
- data/lib/rails/generators/oboe/templates/oboe_initializer.rb +24 -2
- data/oboe.gemspec +20 -14
- data/test/instrumentation/cassandra_test.rb +331 -0
- data/test/instrumentation/dalli_test.rb +157 -0
- data/test/instrumentation/http_test.rb +74 -0
- data/test/instrumentation/memcache_test.rb +251 -0
- data/test/instrumentation/memcached_test.rb +218 -0
- data/test/instrumentation/mongo_test.rb +406 -0
- data/test/instrumentation/moped_test.rb +468 -0
- data/test/instrumentation/rack_test.rb +55 -0
- data/test/instrumentation/resque_test.rb +62 -0
- data/test/minitest_helper.rb +113 -0
- data/test/support/config_test.rb +41 -0
- metadata +56 -35
- data/Gemfile.lock +0 -103
- data/Guardfile +0 -24
- data/install.rb +0 -1
- data/spec/instrumentation/cassandra_spec.rb +0 -18
- data/spec/instrumentation/dalli_spec.rb +0 -14
- data/spec/instrumentation/http_spec.rb +0 -14
- data/spec/instrumentation/memcache_spec.rb +0 -19
- data/spec/instrumentation/memcached_spec.rb +0 -22
- data/spec/instrumentation/mongo_spec.rb +0 -29
- data/spec/instrumentation/moped_spec.rb +0 -41
- data/spec/instrumentation/resque_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -15
- data/spec/support/config_spec.rb +0 -27
- data/spec/support/oboe_spec.rb +0 -4
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
require 'rack/lobster'
|
4
|
+
require 'oboe/inst/rack'
|
5
|
+
|
6
|
+
Oboe::Config[:tracing_mode] = 'always'
|
7
|
+
Oboe::Config[:sample_rate] = 1e6
|
8
|
+
|
9
|
+
class RackTestApp < MiniTest::Unit::TestCase
|
10
|
+
include Rack::Test::Methods
|
11
|
+
|
12
|
+
def app
|
13
|
+
@app = Rack::Builder.new {
|
14
|
+
use Rack::CommonLogger
|
15
|
+
use Rack::ShowExceptions
|
16
|
+
use Oboe::Rack
|
17
|
+
map "/lobster" do
|
18
|
+
use Rack::Lint
|
19
|
+
run Rack::Lobster.new
|
20
|
+
end
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_get_the_lobster
|
25
|
+
clear_all_traces
|
26
|
+
|
27
|
+
get "/lobster"
|
28
|
+
|
29
|
+
traces = get_all_traces
|
30
|
+
traces.count.must_equal 3
|
31
|
+
|
32
|
+
validate_outer_layers(traces, 'rack')
|
33
|
+
|
34
|
+
kvs = {}
|
35
|
+
kvs["Label"] = "entry"
|
36
|
+
validate_event_keys(traces[0], kvs)
|
37
|
+
|
38
|
+
kvs.clear
|
39
|
+
kvs["Label"] = "info"
|
40
|
+
kvs["Status"] = "200"
|
41
|
+
kvs["SampleRate"] = "1000000"
|
42
|
+
kvs["SampleSource"] = "1"
|
43
|
+
kvs["HTTP-Host"] = "example.org"
|
44
|
+
kvs["Port"] = "80"
|
45
|
+
kvs["Proto"] = "http"
|
46
|
+
kvs["URL"] = "/lobster"
|
47
|
+
kvs["Method"] = "GET"
|
48
|
+
kvs["ClientIP"] = "127.0.0.1"
|
49
|
+
validate_event_keys(traces[1], kvs)
|
50
|
+
|
51
|
+
assert last_response.ok?
|
52
|
+
assert last_response['X-Trace']
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Oboe::Inst::Resque do
|
4
|
+
before do
|
5
|
+
clear_all_traces
|
6
|
+
|
7
|
+
# These are standard entry/exit KVs that are passed up with all moped operations
|
8
|
+
@entry_kvs = {
|
9
|
+
'Layer' => 'resque',
|
10
|
+
'Label' => 'entry' }
|
11
|
+
|
12
|
+
@exit_kvs = { 'Layer' => 'resque', 'Label' => 'exit' }
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'Stock Resque should be loaded, defined and ready' do
|
16
|
+
defined?(::Resque).wont_match nil
|
17
|
+
defined?(::Resque::Worker).wont_match nil
|
18
|
+
defined?(::Resque::Job).wont_match nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'Resque should have oboe methods defined' do
|
22
|
+
[ :enqueue, :enqueue_to, :dequeue ].each do |m|
|
23
|
+
::Resque.method_defined?("#{m}_with_oboe").must_equal true
|
24
|
+
end
|
25
|
+
|
26
|
+
::Resque::Worker.method_defined?("perform_with_oboe").must_equal true
|
27
|
+
::Resque::Job.method_defined?("fail_with_oboe").must_equal true
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should trace enqueue" do
|
31
|
+
skip
|
32
|
+
Oboe::API.start_trace('resque-client_test', '', {}) do
|
33
|
+
Resque.enqueue(OboeResqueJob, { :generate => :activerecord, :delay => rand(5..30).to_f })
|
34
|
+
Resque.enqueue(OboeResqueJobThatFails)
|
35
|
+
Resque.dequeue(OboeResqueJob, { :generate => :moped })
|
36
|
+
end
|
37
|
+
|
38
|
+
traces = get_all_traces
|
39
|
+
|
40
|
+
traces.count.must_equal 4
|
41
|
+
validate_outer_layers(traces, 'resque-client_test')
|
42
|
+
|
43
|
+
validate_event_keys(traces[1], @entry_kvs)
|
44
|
+
validate_event_keys(traces[2], @exit_kvs)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should trace dequeue" do
|
48
|
+
skip
|
49
|
+
Oboe::API.start_trace('resque-client_test', '', {}) do
|
50
|
+
Resque.dequeue(OboeResqueJob, { :generate => :moped })
|
51
|
+
end
|
52
|
+
|
53
|
+
traces = get_all_traces
|
54
|
+
|
55
|
+
traces.count.must_equal 4
|
56
|
+
validate_outer_layers(traces, 'resque-client_test')
|
57
|
+
|
58
|
+
validate_event_keys(traces[1], @entry_kvs)
|
59
|
+
validate_event_keys(traces[2], @exit_kvs)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require "minitest/autorun"
|
2
|
+
require "minitest/reporters"
|
3
|
+
|
4
|
+
ENV["RACK_ENV"] = "test"
|
5
|
+
MiniTest::Reporters.use!
|
6
|
+
|
7
|
+
require 'rubygems'
|
8
|
+
require 'bundler'
|
9
|
+
|
10
|
+
Bundler.require(:default, :test)
|
11
|
+
|
12
|
+
# Preload memcache-client
|
13
|
+
require 'memcache'
|
14
|
+
|
15
|
+
@trace_dir = File.dirname(__FILE__) + "/../tmp/"
|
16
|
+
$trace_file = @trace_dir + "trace_output.bson"
|
17
|
+
|
18
|
+
# Create a oboe-ruby/tmp dir to store trace output
|
19
|
+
Dir.mkdir @trace_dir unless File.exists?(@trace_dir) and File.directory?(@trace_dir)
|
20
|
+
|
21
|
+
# Configure Oboe
|
22
|
+
Oboe::Config[:tracing_mode] = "always"
|
23
|
+
Oboe::Config[:sample_rate] = 1000000
|
24
|
+
Oboe::Ruby.initialize
|
25
|
+
Oboe.logger.level = Logger::DEBUG
|
26
|
+
|
27
|
+
Oboe.logger.debug "[oboe/test] Debug log output test."
|
28
|
+
|
29
|
+
##
|
30
|
+
# clear_all_traces
|
31
|
+
#
|
32
|
+
# Truncates the trace output file to zero
|
33
|
+
#
|
34
|
+
def clear_all_traces
|
35
|
+
File.truncate($trace_file, 0)
|
36
|
+
end
|
37
|
+
|
38
|
+
##
|
39
|
+
# get_all_traces
|
40
|
+
#
|
41
|
+
# Retrieves all traces written to the trace file
|
42
|
+
#
|
43
|
+
def get_all_traces
|
44
|
+
traces = []
|
45
|
+
f = File.open($trace_file)
|
46
|
+
until f.eof?
|
47
|
+
traces << BSON.read_bson_document(f)
|
48
|
+
end
|
49
|
+
traces
|
50
|
+
end
|
51
|
+
|
52
|
+
##
|
53
|
+
# validate_outer_layers
|
54
|
+
#
|
55
|
+
# Validates that the KVs in kvs are present
|
56
|
+
# in event
|
57
|
+
#
|
58
|
+
def validate_outer_layers(traces, layer)
|
59
|
+
traces.first['Layer'].must_equal layer
|
60
|
+
traces.first['Label'].must_equal 'entry'
|
61
|
+
traces.last['Layer'].must_equal layer
|
62
|
+
traces.last['Label'].must_equal 'exit'
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# validate_event_keys
|
67
|
+
#
|
68
|
+
# Validates that the KVs in kvs are present
|
69
|
+
# in event
|
70
|
+
#
|
71
|
+
def validate_event_keys(event, kvs)
|
72
|
+
kvs.each do |k, v|
|
73
|
+
event.has_key?(k).must_equal true
|
74
|
+
event[k].must_equal v
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
##
|
79
|
+
# layer_has_key
|
80
|
+
#
|
81
|
+
# Checks an array of trace events if a specific layer (regardless of event type)
|
82
|
+
# has he specified key
|
83
|
+
#
|
84
|
+
def layer_has_key(traces, layer, key)
|
85
|
+
has_key = false
|
86
|
+
|
87
|
+
traces.each do |t|
|
88
|
+
if t["Layer"] == layer and t.has_key?(key)
|
89
|
+
has_key = true
|
90
|
+
|
91
|
+
(t["Backtrace"].length > 0).must_equal true
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
has_key.must_equal true
|
96
|
+
end
|
97
|
+
|
98
|
+
##
|
99
|
+
# layer_doesnt_have_key
|
100
|
+
#
|
101
|
+
# Checks an array of trace events to assure that a specific layer
|
102
|
+
# (regardless of event type) doesn't have the specified key
|
103
|
+
#
|
104
|
+
def layer_doesnt_have_key(traces, layer, key)
|
105
|
+
has_key = false
|
106
|
+
|
107
|
+
traces.each do |t|
|
108
|
+
has_key = true if t["Layer"] == layer and t.has_key?(key)
|
109
|
+
end
|
110
|
+
|
111
|
+
has_key.must_equal false
|
112
|
+
end
|
113
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Oboe::Config do
|
4
|
+
after do
|
5
|
+
# Set back to always trace mode
|
6
|
+
Oboe::Config[:tracing_mode] = "always"
|
7
|
+
Oboe::Config[:sample_rate] = 1000000
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should have the correct default values' do
|
11
|
+
# Reset Oboe::Config to defaults
|
12
|
+
Oboe::Config.initialize
|
13
|
+
|
14
|
+
Oboe::Config[:verbose].must_equal false
|
15
|
+
Oboe::Config[:sample_source].must_equal 2
|
16
|
+
Oboe::Config[:sample_rate].must_equal 300000
|
17
|
+
Oboe::Config[:tracing_mode].must_equal "through"
|
18
|
+
Oboe::Config[:reporter_host].must_equal "127.0.0.1"
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should have the correct instrumentation defaults' do
|
22
|
+
# Reset Oboe::Config to defaults
|
23
|
+
Oboe::Config.initialize
|
24
|
+
|
25
|
+
instrumentation = [ :cassandra, :dalli, :nethttp, :memcached, :memcache, :mongo,
|
26
|
+
:moped, :rack, :resque, :action_controller, :action_view,
|
27
|
+
:active_record ]
|
28
|
+
|
29
|
+
# Verify the number of individual instrumentations
|
30
|
+
instrumentation.count.must_equal 12
|
31
|
+
|
32
|
+
instrumentation.each do |k|
|
33
|
+
Oboe::Config[k][:enabled].must_equal true
|
34
|
+
Oboe::Config[k][:log_args].must_equal true
|
35
|
+
end
|
36
|
+
|
37
|
+
Oboe::Config[:resque][:link_workers].must_equal false
|
38
|
+
Oboe::Config[:blacklist].is_a?(Array).must_equal true
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
metadata
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oboe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
+
- 3
|
8
9
|
- 2
|
9
|
-
|
10
|
-
version: 2.2.6
|
10
|
+
version: 2.3.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
|
-
-
|
13
|
+
- Peter Giacomo Lombardo
|
14
|
+
- Spiros Eliopoulos
|
14
15
|
autorequire:
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2013-
|
19
|
+
date: 2013-10-22 00:00:00 Z
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: rake
|
@@ -32,7 +33,7 @@ dependencies:
|
|
32
33
|
type: :development
|
33
34
|
version_requirements: *id001
|
34
35
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
36
|
+
name: minitest
|
36
37
|
prerelease: false
|
37
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
39
|
none: false
|
@@ -45,8 +46,22 @@ dependencies:
|
|
45
46
|
version: "0"
|
46
47
|
type: :development
|
47
48
|
version_requirements: *id002
|
48
|
-
|
49
|
-
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: bson
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
63
|
+
description: The oboe gem provides TraceView instrumentation for Ruby and Ruby frameworks.
|
64
|
+
email: traceviewsupport@appneta.com
|
50
65
|
executables: []
|
51
66
|
|
52
67
|
extensions:
|
@@ -55,10 +70,9 @@ extra_rdoc_files:
|
|
55
70
|
- LICENSE
|
56
71
|
files:
|
57
72
|
- .gitignore
|
73
|
+
- Appraisals
|
58
74
|
- CHANGELOG
|
59
75
|
- Gemfile
|
60
|
-
- Gemfile.lock
|
61
|
-
- Guardfile
|
62
76
|
- LICENSE
|
63
77
|
- README.md
|
64
78
|
- Rakefile
|
@@ -70,9 +84,16 @@ files:
|
|
70
84
|
- ext/oboe_metal/src/oboe.hpp
|
71
85
|
- ext/oboe_metal/src/oboe_wrap.cxx
|
72
86
|
- ext/oboe_metal/tests/test.rb
|
87
|
+
- gemfiles/rails2.3.gemfile
|
88
|
+
- gemfiles/rails2.3.gemfile.lock
|
89
|
+
- gemfiles/rails3.0.gemfile
|
90
|
+
- gemfiles/rails3.0.gemfile.lock
|
91
|
+
- gemfiles/rails3.1.gemfile
|
92
|
+
- gemfiles/rails3.1.gemfile.lock
|
93
|
+
- gemfiles/rails3.2.gemfile
|
94
|
+
- gemfiles/rails3.2.gemfile.lock
|
73
95
|
- get_version.rb
|
74
96
|
- init.rb
|
75
|
-
- install.rb
|
76
97
|
- lib/joboe_metal.rb
|
77
98
|
- lib/method_profiling.rb
|
78
99
|
- lib/oboe.rb
|
@@ -120,18 +141,18 @@ files:
|
|
120
141
|
- oboe.gemspec
|
121
142
|
- oboe_fu.gemspec
|
122
143
|
- release.sh
|
123
|
-
-
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
127
|
-
-
|
128
|
-
-
|
129
|
-
-
|
130
|
-
-
|
131
|
-
-
|
132
|
-
-
|
133
|
-
-
|
134
|
-
homepage: http://
|
144
|
+
- test/instrumentation/cassandra_test.rb
|
145
|
+
- test/instrumentation/dalli_test.rb
|
146
|
+
- test/instrumentation/http_test.rb
|
147
|
+
- test/instrumentation/memcache_test.rb
|
148
|
+
- test/instrumentation/memcached_test.rb
|
149
|
+
- test/instrumentation/mongo_test.rb
|
150
|
+
- test/instrumentation/moped_test.rb
|
151
|
+
- test/instrumentation/rack_test.rb
|
152
|
+
- test/instrumentation/resque_test.rb
|
153
|
+
- test/minitest_helper.rb
|
154
|
+
- test/support/config_test.rb
|
155
|
+
homepage: http://www.appneta.com/application-performance-management
|
135
156
|
licenses: []
|
136
157
|
|
137
158
|
post_install_message:
|
@@ -163,16 +184,16 @@ rubyforge_project:
|
|
163
184
|
rubygems_version: 1.8.15
|
164
185
|
signing_key:
|
165
186
|
specification_version: 3
|
166
|
-
summary:
|
187
|
+
summary: AppNeta TraceView performance instrumentation gem for Ruby
|
167
188
|
test_files:
|
168
|
-
-
|
169
|
-
-
|
170
|
-
-
|
171
|
-
-
|
172
|
-
-
|
173
|
-
-
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
189
|
+
- test/minitest_helper.rb
|
190
|
+
- test/support/config_test.rb
|
191
|
+
- test/instrumentation/memcached_test.rb
|
192
|
+
- test/instrumentation/memcache_test.rb
|
193
|
+
- test/instrumentation/dalli_test.rb
|
194
|
+
- test/instrumentation/http_test.rb
|
195
|
+
- test/instrumentation/cassandra_test.rb
|
196
|
+
- test/instrumentation/resque_test.rb
|
197
|
+
- test/instrumentation/rack_test.rb
|
198
|
+
- test/instrumentation/moped_test.rb
|
199
|
+
- test/instrumentation/mongo_test.rb
|
data/Gemfile.lock
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
oboe (2.1.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
bson (1.8.2)
|
10
|
-
bson_ext (1.8.2)
|
11
|
-
bson (~> 1.8.2)
|
12
|
-
cassandra (0.17.0)
|
13
|
-
json
|
14
|
-
rake
|
15
|
-
simple_uuid (~> 0.2.0)
|
16
|
-
thrift_client (>= 0.7.0, < 0.9)
|
17
|
-
coderay (1.0.9)
|
18
|
-
dalli (2.6.2)
|
19
|
-
diff-lcs (1.1.3)
|
20
|
-
ffi (1.4.0)
|
21
|
-
guard (1.6.2)
|
22
|
-
listen (>= 0.6.0)
|
23
|
-
lumberjack (>= 1.0.2)
|
24
|
-
pry (>= 0.9.10)
|
25
|
-
terminal-table (>= 1.4.3)
|
26
|
-
thor (>= 0.14.6)
|
27
|
-
guard-rspec (2.4.1)
|
28
|
-
guard (>= 1.1)
|
29
|
-
rspec (~> 2.11)
|
30
|
-
json (1.7.7)
|
31
|
-
listen (0.7.3)
|
32
|
-
lumberjack (1.0.2)
|
33
|
-
memcache-client (1.8.5)
|
34
|
-
memcached (1.5.0)
|
35
|
-
method_source (0.8.1)
|
36
|
-
mongo (1.8.2)
|
37
|
-
bson (~> 1.8.2)
|
38
|
-
moped (1.4.2)
|
39
|
-
multi_json (1.6.1)
|
40
|
-
pry (0.9.12)
|
41
|
-
coderay (~> 1.0.5)
|
42
|
-
method_source (~> 0.8)
|
43
|
-
slop (~> 3.4)
|
44
|
-
rack (1.4.5)
|
45
|
-
rack-protection (1.3.2)
|
46
|
-
rack
|
47
|
-
rake (10.0.3)
|
48
|
-
rb-fchange (0.0.6)
|
49
|
-
ffi
|
50
|
-
rb-fsevent (0.9.3)
|
51
|
-
rb-inotify (0.9.0)
|
52
|
-
ffi (>= 0.5.0)
|
53
|
-
redis (3.0.2)
|
54
|
-
redis-namespace (1.2.1)
|
55
|
-
redis (~> 3.0.0)
|
56
|
-
resque (1.23.0)
|
57
|
-
multi_json (~> 1.0)
|
58
|
-
redis-namespace (~> 1.0)
|
59
|
-
sinatra (>= 0.9.2)
|
60
|
-
vegas (~> 0.1.2)
|
61
|
-
rspec (2.11.0)
|
62
|
-
rspec-core (~> 2.11.0)
|
63
|
-
rspec-expectations (~> 2.11.0)
|
64
|
-
rspec-mocks (~> 2.11.0)
|
65
|
-
rspec-core (2.11.1)
|
66
|
-
rspec-expectations (2.11.3)
|
67
|
-
diff-lcs (~> 1.1.3)
|
68
|
-
rspec-mocks (2.11.2)
|
69
|
-
simple_uuid (0.2.0)
|
70
|
-
sinatra (1.3.4)
|
71
|
-
rack (~> 1.4)
|
72
|
-
rack-protection (~> 1.3)
|
73
|
-
tilt (~> 1.3, >= 1.3.3)
|
74
|
-
slop (3.4.3)
|
75
|
-
terminal-table (1.4.5)
|
76
|
-
thor (0.17.0)
|
77
|
-
thrift (0.8.0)
|
78
|
-
thrift_client (0.8.3)
|
79
|
-
thrift (~> 0.8.0)
|
80
|
-
tilt (1.3.3)
|
81
|
-
vegas (0.1.11)
|
82
|
-
rack (>= 1.0.0)
|
83
|
-
|
84
|
-
PLATFORMS
|
85
|
-
ruby
|
86
|
-
|
87
|
-
DEPENDENCIES
|
88
|
-
bson_ext
|
89
|
-
cassandra
|
90
|
-
dalli
|
91
|
-
guard
|
92
|
-
guard-rspec
|
93
|
-
memcache-client
|
94
|
-
memcached
|
95
|
-
mongo
|
96
|
-
moped
|
97
|
-
oboe!
|
98
|
-
rake
|
99
|
-
rb-fchange
|
100
|
-
rb-fsevent
|
101
|
-
rb-inotify
|
102
|
-
resque
|
103
|
-
rspec
|