sneakers 0.1.0.pre → 0.1.1.pre
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 +1 -1
- data/CHANGELOG.md +1 -1
- data/examples/benchmark_worker.rb +0 -1
- data/examples/metrics_worker.rb +1 -1
- data/examples/profiling_worker.rb +35 -21
- data/examples/workflow_worker.rb +0 -1
- data/lib/sneakers.rb +0 -5
- data/lib/sneakers/metrics/statsd_metrics.rb +1 -1
- data/lib/sneakers/publisher.rb +4 -6
- data/lib/sneakers/support/utils.rb +1 -1
- data/lib/sneakers/tasks.rb +1 -1
- data/lib/sneakers/version.rb +1 -1
- data/lib/sneakers/worker.rb +11 -5
- data/sneakers.gemspec +2 -2
- data/spec/sneakers/publisher_spec.rb +25 -8
- data/spec/sneakers/queue_spec.rb +1 -1
- data/spec/sneakers/sneakers_spec.rb +0 -12
- data/spec/sneakers/support/utils_spec.rb +44 -0
- data/spec/sneakers/worker_spec.rb +21 -7
- metadata +6 -6
- data/Gemfile.lock +0 -153
- data/lib/sneakers/support/queue_name.rb +0 -14
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
+ Allow binding of multiple routing keys (@SebastianEdwards)
|
9
9
|
+ added work_with_params for advanced handling of work items with amqp
|
10
10
|
headers. (#12)
|
11
|
-
+
|
11
|
+
+ Sneakers.not_environmental! will no disable auto-environment discovery.
|
12
12
|
(#15)
|
13
13
|
|
14
14
|
|
data/examples/metrics_worker.rb
CHANGED
@@ -19,7 +19,7 @@ class MetricsWorker
|
|
19
19
|
end
|
20
20
|
|
21
21
|
|
22
|
-
Sneakers.configure(
|
22
|
+
Sneakers.configure(:metrics => Sneakers::Metrics::LoggingMetrics.new)
|
23
23
|
r = Sneakers::Runner.new([ MetricsWorker ])
|
24
24
|
r.run
|
25
25
|
|
@@ -1,25 +1,38 @@
|
|
1
1
|
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
2
2
|
require 'sneakers'
|
3
3
|
require 'sneakers/runner'
|
4
|
-
require '
|
4
|
+
require 'logger'
|
5
5
|
|
6
6
|
|
7
|
+
profiling = ARGV[0]
|
8
|
+
messages = 100_000
|
9
|
+
|
10
|
+
|
11
|
+
if profiling
|
12
|
+
require 'ruby-prof'
|
13
|
+
messages /= 100 # profiling makes everything much slower (around 300req/s)
|
14
|
+
end
|
15
|
+
|
16
|
+
Sneakers.configure
|
17
|
+
Sneakers.logger.level = Logger::ERROR
|
18
|
+
|
19
|
+
Sneakers::Worker.configure_logger(Logger.new('/dev/null'))
|
20
|
+
|
7
21
|
puts "feeding messages in"
|
8
|
-
|
22
|
+
messages.times {
|
9
23
|
Sneakers.publish("{}", :to_queue => 'downloads')
|
24
|
+
}
|
10
25
|
puts "done"
|
11
26
|
|
12
27
|
|
13
28
|
class ProfilingWorker
|
14
29
|
include Sneakers::Worker
|
15
30
|
from_queue 'downloads',
|
16
|
-
:env => '',
|
17
|
-
:durable => false,
|
18
31
|
:ack => true,
|
19
32
|
:threads => 50,
|
20
33
|
:prefetch => 50,
|
21
34
|
:timeout_job_after => 1,
|
22
|
-
:exchange => '
|
35
|
+
:exchange => 'sneakers',
|
23
36
|
:heartbeat => 5
|
24
37
|
def work(msg)
|
25
38
|
ack!
|
@@ -28,28 +41,29 @@ end
|
|
28
41
|
|
29
42
|
|
30
43
|
|
31
|
-
r = Sneakers::Runner.new
|
32
|
-
Sneakers::Worker.configure_logger(Logger.new('/dev/null'))
|
44
|
+
r = Sneakers::Runner.new([ProfilingWorker])
|
33
45
|
|
34
46
|
# ctrl-c and Ruby 2.0 breaks signal handling
|
35
47
|
# Sidekiq has same issues
|
36
48
|
# https://github.com/mperham/sidekiq/issues/728
|
37
49
|
#
|
38
50
|
# so we use a timeout and a thread that kills profiling
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
51
|
+
if profiling
|
52
|
+
puts "profiling start"
|
53
|
+
RubyProf.start
|
54
|
+
|
55
|
+
|
56
|
+
Thread.new do
|
57
|
+
sleep 10
|
58
|
+
puts "stopping profiler"
|
59
|
+
result = RubyProf.stop
|
60
|
+
|
61
|
+
# Print a flat profile to text
|
62
|
+
printer = RubyProf::FlatPrinter.new(result)
|
63
|
+
printer.print(STDOUT)
|
64
|
+
exit(0)
|
65
|
+
end
|
52
66
|
end
|
53
67
|
|
54
|
-
r.run
|
68
|
+
r.run
|
55
69
|
|
data/examples/workflow_worker.rb
CHANGED
data/lib/sneakers.rb
CHANGED
@@ -34,7 +34,6 @@ module Sneakers
|
|
34
34
|
:timeout_job_after => 5,
|
35
35
|
:prefetch => 10,
|
36
36
|
:threads => 10,
|
37
|
-
:env => ENV['RACK_ENV'],
|
38
37
|
:durable => true,
|
39
38
|
:ack => true,
|
40
39
|
:heartbeat => 2,
|
@@ -65,10 +64,6 @@ module Sneakers
|
|
65
64
|
@configured = false
|
66
65
|
end
|
67
66
|
|
68
|
-
def self.not_environmental!
|
69
|
-
Config[:env] = nil
|
70
|
-
end
|
71
|
-
|
72
67
|
def self.daemonize!(loglevel=Logger::INFO)
|
73
68
|
Config[:log] = 'sneakers.log'
|
74
69
|
Config[:daemonize] = true
|
data/lib/sneakers/publisher.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'sneakers/support/queue_name'
|
2
|
-
|
3
1
|
module Sneakers
|
4
2
|
class Publisher
|
5
3
|
attr_accessor :exchange
|
@@ -13,18 +11,18 @@ module Sneakers
|
|
13
11
|
@mutex.synchronize do
|
14
12
|
ensure_connection! unless connected?
|
15
13
|
end
|
16
|
-
Sneakers.logger.info("publishing <#{msg}> to [#{
|
17
|
-
@exchange.publish(msg, :routing_key =>
|
14
|
+
Sneakers.logger.info("publishing <#{msg}> to [#{routing[:to_queue]}]")
|
15
|
+
@exchange.publish(msg, :routing_key => routing[:to_queue])
|
18
16
|
end
|
19
17
|
|
20
18
|
|
21
19
|
private
|
22
20
|
|
23
21
|
def ensure_connection!
|
24
|
-
@bunny = Bunny.new(:heartbeat => @opts[:heartbeat])
|
22
|
+
@bunny = Bunny.new(@opts[:amqp], :heartbeat => @opts[:heartbeat])
|
25
23
|
@bunny.start
|
26
24
|
@channel = @bunny.create_channel
|
27
|
-
@exchange = @channel.exchange(@opts[:exchange], :type => :
|
25
|
+
@exchange = @channel.exchange(@opts[:exchange], :type => @opts[:exchange_type], :durable => @opts[:durable])
|
28
26
|
end
|
29
27
|
|
30
28
|
def connected?
|
data/lib/sneakers/tasks.rb
CHANGED
data/lib/sneakers/version.rb
CHANGED
data/lib/sneakers/worker.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'sneakers/queue'
|
2
2
|
require 'sneakers/support/utils'
|
3
|
-
require 'sneakers/support/queue_name'
|
4
3
|
require 'timeout'
|
5
4
|
|
6
5
|
module Sneakers
|
@@ -15,11 +14,8 @@ module Sneakers
|
|
15
14
|
def initialize(queue=nil, pool=nil, opts=nil)
|
16
15
|
opts = self.class.queue_opts
|
17
16
|
queue_name = self.class.queue_name
|
18
|
-
|
19
17
|
opts = Sneakers::Config.merge(opts)
|
20
18
|
|
21
|
-
queue_name = Support::QueueName.new(queue_name, opts).to_s
|
22
|
-
|
23
19
|
@should_ack = opts[:ack]
|
24
20
|
@timeout_after = opts[:timeout_job_after]
|
25
21
|
@pool = pool || Thread.pool(opts[:threads]) # XXX config threads
|
@@ -40,7 +36,7 @@ module Sneakers
|
|
40
36
|
|
41
37
|
def publish(msg, routing)
|
42
38
|
return unless routing[:to_queue]
|
43
|
-
@queue.exchange.publish(msg, :routing_key =>
|
39
|
+
@queue.exchange.publish(msg, :routing_key => routing[:to_queue])
|
44
40
|
end
|
45
41
|
|
46
42
|
def do_work(hdr, props, msg, handler)
|
@@ -120,6 +116,16 @@ module Sneakers
|
|
120
116
|
@queue_name = q.to_s
|
121
117
|
@queue_opts = opts
|
122
118
|
end
|
119
|
+
|
120
|
+
def enqueue(msg)
|
121
|
+
publisher.publish(msg, :to_queue => @queue_name)
|
122
|
+
end
|
123
|
+
|
124
|
+
private
|
125
|
+
|
126
|
+
def publisher
|
127
|
+
@publisher ||= Sneakers::Publisher.new
|
128
|
+
end
|
123
129
|
end
|
124
130
|
end
|
125
131
|
end
|
data/sneakers.gemspec
CHANGED
@@ -12,12 +12,12 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.summary = %q{Fast background processing framework for Ruby and RabbitMQ}
|
13
13
|
gem.homepage = ""
|
14
14
|
|
15
|
-
gem.files = `git ls-files`.split($/)
|
15
|
+
gem.files = `git ls-files`.split($/).reject{|f| f == 'Gemfile.lock'}
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
gem.add_dependency "serverengine"
|
20
|
-
gem.add_dependency "bunny", "~> 1.
|
20
|
+
gem.add_dependency "bunny", "~> 1.1.3"
|
21
21
|
gem.add_dependency "thread"
|
22
22
|
gem.add_dependency "thor"
|
23
23
|
|
@@ -3,14 +3,10 @@ require 'sneakers'
|
|
3
3
|
|
4
4
|
|
5
5
|
describe Sneakers::Publisher do
|
6
|
-
before do
|
7
|
-
Sneakers.configure(:env => 'test')
|
8
|
-
end
|
9
|
-
|
10
6
|
describe "#publish" do
|
11
7
|
it "should publish a message to an exchange" do
|
12
8
|
xchg = Object.new
|
13
|
-
mock(xchg).publish("test msg", :routing_key => "
|
9
|
+
mock(xchg).publish("test msg", :routing_key => "downloads")
|
14
10
|
|
15
11
|
p = Sneakers::Publisher.new
|
16
12
|
p.exchange = xchg
|
@@ -21,7 +17,7 @@ describe Sneakers::Publisher do
|
|
21
17
|
|
22
18
|
it "should not reconnect if already connected" do
|
23
19
|
xchg = Object.new
|
24
|
-
mock(xchg).publish("test msg", :routing_key => "
|
20
|
+
mock(xchg).publish("test msg", :routing_key => "downloads")
|
25
21
|
|
26
22
|
p = Sneakers::Publisher.new
|
27
23
|
p.exchange = xchg
|
@@ -30,8 +26,29 @@ describe Sneakers::Publisher do
|
|
30
26
|
|
31
27
|
p.publish("test msg", :to_queue => 'downloads')
|
32
28
|
end
|
33
|
-
end
|
34
29
|
|
30
|
+
it "should connect to rabbitmq configured on Sneakers.configure" do
|
31
|
+
Sneakers.configure(
|
32
|
+
:amqp => "amqp://someuser:somepassword@somehost:5672",
|
33
|
+
:heartbeat => 1, :exchange => 'another_exchange',
|
34
|
+
:exchange_type => :topic,
|
35
|
+
:durable => false)
|
35
36
|
|
36
|
-
|
37
|
+
channel = Object.new
|
38
|
+
mock(channel).exchange("another_exchange", :type => :topic, :durable => false) {
|
39
|
+
mock(Object.new).publish("test msg", :routing_key => "downloads")
|
40
|
+
}
|
37
41
|
|
42
|
+
bunny = Object.new
|
43
|
+
mock(bunny).start
|
44
|
+
mock(bunny).create_channel { channel }
|
45
|
+
|
46
|
+
mock(Bunny).new("amqp://someuser:somepassword@somehost:5672", :heartbeat => 1 ) { bunny }
|
47
|
+
|
48
|
+
p = Sneakers::Publisher.new
|
49
|
+
|
50
|
+
p.publish("test msg", :to_queue => 'downloads')
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/spec/sneakers/queue_spec.rb
CHANGED
@@ -40,18 +40,6 @@ describe Sneakers do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
describe '.not_environmental!' do
|
44
|
-
it 'should ignore environment (RACK_ENV) for all workers' do
|
45
|
-
Sneakers.configure(:env => 'production')
|
46
|
-
Sneakers.not_environmental!
|
47
|
-
EnvWorker.new.queue.name.must_equal('defaults')
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'should ignore environment (RACK_ENV) for all workers' do
|
51
|
-
Sneakers.configure(:env => 'production')
|
52
|
-
EnvWorker.new.queue.name.must_equal('defaults_production')
|
53
|
-
end
|
54
|
-
end
|
55
43
|
|
56
44
|
describe '.clear!' do
|
57
45
|
it 'must reset dirty configuration to default' do
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'sneakers'
|
3
|
+
|
4
|
+
describe Sneakers::Utils do
|
5
|
+
describe '::parse_workers' do
|
6
|
+
before(:all) do
|
7
|
+
class Foo; end
|
8
|
+
class Bar; end
|
9
|
+
class Baz
|
10
|
+
class Quux; end
|
11
|
+
class Corge; end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'given a single class name' do
|
16
|
+
describe 'without namespace' do
|
17
|
+
it 'returns the worker class name' do
|
18
|
+
Sneakers::Utils.parse_workers('Foo').must_equal([[Foo],[]])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'with namespace' do
|
23
|
+
it 'returns the worker class name' do
|
24
|
+
Sneakers::Utils.parse_workers('Baz::Quux').must_equal([[Baz::Quux],[]])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'given a list of class names' do
|
30
|
+
describe 'without namespaces' do
|
31
|
+
it 'returns all worker class names' do
|
32
|
+
Sneakers::Utils.parse_workers('Foo,Bar').must_equal([[Foo,Bar],[]])
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'with namespaces' do
|
37
|
+
it 'returns all worker class names' do
|
38
|
+
workers = Sneakers::Utils.parse_workers('Baz::Quux,Baz::Corge')
|
39
|
+
workers.must_equal([[Baz::Quux,Baz::Corge],[]])
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -6,7 +6,6 @@ require 'timeout'
|
|
6
6
|
class DummyWorker
|
7
7
|
include Sneakers::Worker
|
8
8
|
from_queue 'downloads',
|
9
|
-
:env => 'test',
|
10
9
|
:durable => false,
|
11
10
|
:ack => false,
|
12
11
|
:threads => 50,
|
@@ -139,11 +138,26 @@ describe Sneakers::Worker do
|
|
139
138
|
stub(@queue).opts { {} }
|
140
139
|
stub(@queue).exchange { @exchange }
|
141
140
|
|
142
|
-
Sneakers.configure(:
|
141
|
+
Sneakers.configure(:daemonize => true, :log => 'sneakers.log')
|
143
142
|
Sneakers::Worker.configure_logger(Logger.new('/dev/null'))
|
144
143
|
Sneakers::Worker.configure_metrics
|
145
144
|
end
|
146
145
|
|
146
|
+
describe ".enqueue" do
|
147
|
+
it "publishes a message to the class queue" do
|
148
|
+
message = "my message"
|
149
|
+
mock = MiniTest::Mock.new
|
150
|
+
|
151
|
+
mock.expect(:publish, true) do |msg, opts|
|
152
|
+
msg.must_equal(message)
|
153
|
+
opts.must_equal(:to_queue => "defaults")
|
154
|
+
end
|
155
|
+
|
156
|
+
stub(Sneakers::Publisher).new { mock }
|
157
|
+
DefaultsWorker.enqueue(message)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
147
161
|
describe "#initialize" do
|
148
162
|
describe "builds an internal queue" do
|
149
163
|
before do
|
@@ -152,16 +166,16 @@ describe Sneakers::Worker do
|
|
152
166
|
end
|
153
167
|
|
154
168
|
it "should build a queue with correct configuration given defaults" do
|
155
|
-
@defaults_q.name.must_equal('
|
169
|
+
@defaults_q.name.must_equal('defaults')
|
156
170
|
@defaults_q.opts.must_equal(
|
157
|
-
{:runner_config_file=>nil, :metrics=>nil, :daemonize=>true, :start_worker_delay=>0.2, :workers=>4, :log=>"sneakers.log", :pid_path=>"sneakers.pid", :timeout_job_after=>5, :prefetch=>10, :threads=>10, :
|
171
|
+
{:runner_config_file=>nil, :metrics=>nil, :daemonize=>true, :start_worker_delay=>0.2, :workers=>4, :log=>"sneakers.log", :pid_path=>"sneakers.pid", :timeout_job_after=>5, :prefetch=>10, :threads=>10, :durable=>true, :ack=>true, :amqp=>"amqp://guest:guest@localhost:5672", :vhost=>"/", :exchange=>"sneakers", :exchange_type=>:direct, :hooks=>{}, :handler=>Sneakers::Handlers::Oneshot, :heartbeat => 2}
|
158
172
|
)
|
159
173
|
end
|
160
174
|
|
161
175
|
it "should build a queue with given configuration" do
|
162
|
-
@dummy_q.name.must_equal('
|
176
|
+
@dummy_q.name.must_equal('downloads')
|
163
177
|
@dummy_q.opts.must_equal(
|
164
|
-
{:runner_config_file=>nil, :metrics=>nil, :daemonize=>true, :start_worker_delay=>0.2, :workers=>4, :log=>"sneakers.log", :pid_path=>"sneakers.pid", :timeout_job_after=>1, :prefetch=>40, :threads=>50, :
|
178
|
+
{:runner_config_file=>nil, :metrics=>nil, :daemonize=>true, :start_worker_delay=>0.2, :workers=>4, :log=>"sneakers.log", :pid_path=>"sneakers.pid", :timeout_job_after=>1, :prefetch=>40, :threads=>50, :durable=>false, :ack=>false, :amqp=>"amqp://guest:guest@localhost:5672", :vhost=>"/", :exchange=>"dummy", :exchange_type=>:direct, :hooks=>{}, :handler=>Sneakers::Handlers::Oneshot, :heartbeat =>5}
|
165
179
|
)
|
166
180
|
end
|
167
181
|
end
|
@@ -287,7 +301,7 @@ describe Sneakers::Worker do
|
|
287
301
|
describe 'publish' do
|
288
302
|
it 'should be able to publish a message from working context' do
|
289
303
|
w = PublishingWorker.new(@queue, TestPool.new)
|
290
|
-
mock(@exchange).publish('msg', :routing_key => '
|
304
|
+
mock(@exchange).publish('msg', :routing_key => 'target').once
|
291
305
|
w.do_work(nil, nil, 'msg', nil)
|
292
306
|
end
|
293
307
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sneakers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1.pre
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-03-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: serverengine
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.
|
37
|
+
version: 1.1.3
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
45
|
+
version: 1.1.3
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: thread
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,7 +214,6 @@ files:
|
|
214
214
|
- .gitignore
|
215
215
|
- CHANGELOG.md
|
216
216
|
- Gemfile
|
217
|
-
- Gemfile.lock
|
218
217
|
- Guardfile
|
219
218
|
- LICENSE.txt
|
220
219
|
- README.md
|
@@ -240,7 +239,6 @@ files:
|
|
240
239
|
- lib/sneakers/queue.rb
|
241
240
|
- lib/sneakers/runner.rb
|
242
241
|
- lib/sneakers/support/production_formatter.rb
|
243
|
-
- lib/sneakers/support/queue_name.rb
|
244
242
|
- lib/sneakers/support/utils.rb
|
245
243
|
- lib/sneakers/tasks.rb
|
246
244
|
- lib/sneakers/version.rb
|
@@ -254,6 +252,7 @@ files:
|
|
254
252
|
- spec/sneakers/publisher_spec.rb
|
255
253
|
- spec/sneakers/queue_spec.rb
|
256
254
|
- spec/sneakers/sneakers_spec.rb
|
255
|
+
- spec/sneakers/support/utils_spec.rb
|
257
256
|
- spec/sneakers/worker_spec.rb
|
258
257
|
- spec/spec_helper.rb
|
259
258
|
homepage: ''
|
@@ -288,5 +287,6 @@ test_files:
|
|
288
287
|
- spec/sneakers/publisher_spec.rb
|
289
288
|
- spec/sneakers/queue_spec.rb
|
290
289
|
- spec/sneakers/sneakers_spec.rb
|
290
|
+
- spec/sneakers/support/utils_spec.rb
|
291
291
|
- spec/sneakers/worker_spec.rb
|
292
292
|
- spec/spec_helper.rb
|
data/Gemfile.lock
DELETED
@@ -1,153 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
sneakers (0.1.0)
|
5
|
-
bunny (~> 1.0.7)
|
6
|
-
serverengine
|
7
|
-
thor
|
8
|
-
thread
|
9
|
-
|
10
|
-
GEM
|
11
|
-
remote: https://rubygems.org/
|
12
|
-
specs:
|
13
|
-
activesupport (3.2.15)
|
14
|
-
i18n (~> 0.6, >= 0.6.4)
|
15
|
-
multi_json (~> 1.0)
|
16
|
-
amq-protocol (1.9.2)
|
17
|
-
arrayfields (4.9.0)
|
18
|
-
awesome_print (1.2.0)
|
19
|
-
bluff (0.1.0)
|
20
|
-
bunny (1.0.7)
|
21
|
-
amq-protocol (>= 1.9.2)
|
22
|
-
cane (2.6.0)
|
23
|
-
parallel
|
24
|
-
celluloid (0.15.2)
|
25
|
-
timers (~> 1.1.0)
|
26
|
-
chronic (0.10.2)
|
27
|
-
churn (0.0.34)
|
28
|
-
chronic (>= 0.2.3)
|
29
|
-
hirb
|
30
|
-
json_pure
|
31
|
-
main
|
32
|
-
ruby_parser (~> 3.0)
|
33
|
-
sexp_processor (~> 4.1)
|
34
|
-
code_analyzer (0.4.3)
|
35
|
-
sexp_processor
|
36
|
-
code_metrics (0.1.1)
|
37
|
-
coderay (1.0.9)
|
38
|
-
colored (1.2)
|
39
|
-
erubis (2.7.0)
|
40
|
-
fattr (2.2.1)
|
41
|
-
ffi (1.9.0)
|
42
|
-
flay (2.4.0)
|
43
|
-
ruby_parser (~> 3.0)
|
44
|
-
sexp_processor (~> 4.0)
|
45
|
-
flog (4.1.2)
|
46
|
-
ruby_parser (~> 3.1, > 3.1.0)
|
47
|
-
sexp_processor (~> 4.0)
|
48
|
-
formatador (0.2.4)
|
49
|
-
guard (2.1.0)
|
50
|
-
formatador (>= 0.2.4)
|
51
|
-
listen (~> 2.1)
|
52
|
-
lumberjack (~> 1.0)
|
53
|
-
pry (>= 0.9.12)
|
54
|
-
thor (>= 0.18.1)
|
55
|
-
guard-minitest (2.0.0)
|
56
|
-
guard (~> 2.0)
|
57
|
-
minitest (>= 3.0)
|
58
|
-
hirb (0.7.1)
|
59
|
-
i18n (0.6.5)
|
60
|
-
json_pure (1.8.0)
|
61
|
-
listen (2.1.1)
|
62
|
-
celluloid (>= 0.15.2)
|
63
|
-
rb-fsevent (>= 0.9.3)
|
64
|
-
rb-inotify (>= 0.9)
|
65
|
-
lumberjack (1.0.4)
|
66
|
-
main (5.2.0)
|
67
|
-
arrayfields (>= 4.7.4)
|
68
|
-
chronic (>= 0.6.2)
|
69
|
-
fattr (>= 2.2.0)
|
70
|
-
map (>= 5.1.0)
|
71
|
-
map (6.5.1)
|
72
|
-
method_source (0.8.2)
|
73
|
-
metric_fu (4.4.4)
|
74
|
-
bluff
|
75
|
-
cane (~> 2.5, >= 2.5.2)
|
76
|
-
churn (~> 0.0.28)
|
77
|
-
code_metrics (~> 0.1)
|
78
|
-
coderay
|
79
|
-
flay (~> 2.1, >= 2.0.1)
|
80
|
-
flog (~> 4.1, >= 4.1.1)
|
81
|
-
metric_fu-Saikuro (>= 1.1.1.0)
|
82
|
-
multi_json
|
83
|
-
rails_best_practices (~> 1.14, >= 1.14.3)
|
84
|
-
redcard
|
85
|
-
reek (~> 1.3, >= 1.3.3)
|
86
|
-
roodi (~> 3.1)
|
87
|
-
metric_fu-Saikuro (1.1.1.0)
|
88
|
-
mini_portile (0.5.1)
|
89
|
-
minitest (5.0.8)
|
90
|
-
multi_json (1.8.2)
|
91
|
-
nokogiri (1.6.0)
|
92
|
-
mini_portile (~> 0.5.0)
|
93
|
-
parallel (0.9.0)
|
94
|
-
pry (0.9.12.2)
|
95
|
-
coderay (~> 1.0.5)
|
96
|
-
method_source (~> 0.8)
|
97
|
-
slop (~> 3.4)
|
98
|
-
rails_best_practices (1.14.4)
|
99
|
-
activesupport
|
100
|
-
awesome_print
|
101
|
-
code_analyzer (>= 0.4.3)
|
102
|
-
colored
|
103
|
-
erubis
|
104
|
-
i18n
|
105
|
-
require_all
|
106
|
-
ruby-progressbar
|
107
|
-
rake (10.1.0)
|
108
|
-
rb-fsevent (0.9.3)
|
109
|
-
rb-inotify (0.9.2)
|
110
|
-
ffi (>= 0.5.0)
|
111
|
-
redcard (1.1.0)
|
112
|
-
reek (1.3.4)
|
113
|
-
ruby2ruby (~> 2.0.2)
|
114
|
-
ruby_parser (~> 3.2)
|
115
|
-
sexp_processor
|
116
|
-
require_all (1.3.1)
|
117
|
-
roodi (3.1.1)
|
118
|
-
ruby_parser (~> 3.2, >= 3.2.2)
|
119
|
-
rr (1.1.2)
|
120
|
-
ruby-prof (0.13.0)
|
121
|
-
ruby-progressbar (1.2.0)
|
122
|
-
ruby2ruby (2.0.6)
|
123
|
-
ruby_parser (~> 3.1)
|
124
|
-
sexp_processor (~> 4.0)
|
125
|
-
ruby_parser (3.2.2)
|
126
|
-
sexp_processor (~> 4.1)
|
127
|
-
serverengine (1.5.7)
|
128
|
-
sigdump (~> 0.2.2)
|
129
|
-
sexp_processor (4.3.0)
|
130
|
-
sigdump (0.2.2)
|
131
|
-
simplecov (0.7.1)
|
132
|
-
multi_json (~> 1.0)
|
133
|
-
simplecov-html (~> 0.7.1)
|
134
|
-
simplecov-html (0.7.1)
|
135
|
-
simplecov-rcov-text (0.0.2)
|
136
|
-
slop (3.4.6)
|
137
|
-
thor (0.18.1)
|
138
|
-
thread (0.1.3)
|
139
|
-
timers (1.1.0)
|
140
|
-
|
141
|
-
PLATFORMS
|
142
|
-
ruby
|
143
|
-
|
144
|
-
DEPENDENCIES
|
145
|
-
guard-minitest
|
146
|
-
metric_fu
|
147
|
-
nokogiri
|
148
|
-
rake
|
149
|
-
rr
|
150
|
-
ruby-prof
|
151
|
-
simplecov
|
152
|
-
simplecov-rcov-text
|
153
|
-
sneakers!
|