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 CHANGED
@@ -1,5 +1,5 @@
1
1
  sneakers.yaml
2
- sneakers.log
2
+ *.log
3
3
  sneakers.pid
4
4
  pkg/
5
5
  coverage/
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
- + Bunny.not_environmental! will no disable auto-environment discovery.
11
+ + Sneakers.not_environmental! will no disable auto-environment discovery.
12
12
  (#15)
13
13
 
14
14
 
@@ -4,7 +4,6 @@ require 'sneakers'
4
4
  class BenchmarkWorker
5
5
  include Sneakers::Worker
6
6
  from_queue 'downloads',
7
- :env => 'test',
8
7
  :durable => false,
9
8
  :ack => true,
10
9
  :threads => 50,
@@ -19,7 +19,7 @@ class MetricsWorker
19
19
  end
20
20
 
21
21
 
22
- Sneakers.configure( :daemonize => false, :log => STDOUT, :metrics => Sneakers::Metrics::LoggingMetrics.new)
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 'ruby-prof'
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
- 1000.times {
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 => 'dummy',
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
- puts "profiling start"
40
- RubyProf.start
41
-
42
- Thread.new do
43
- sleep 10
44
- puts "stopping profiler"
45
- result = RubyProf.stop
46
-
47
- # Print a flat profile to text
48
- printer = RubyProf::FlatPrinter.new(result)
49
- printer.print(STDOUT)
50
- r.stop
51
- exit(0)
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([ ProfilingWorker ])
68
+ r.run
55
69
 
@@ -4,7 +4,6 @@ require 'sneakers'
4
4
  class WorkflowWorker
5
5
  include Sneakers::Worker
6
6
  from_queue 'downloads',
7
- :env => 'test',
8
7
  :durable => false,
9
8
  :ack => true,
10
9
  :threads => 50,
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
@@ -6,7 +6,7 @@ module Sneakers
6
6
  end
7
7
 
8
8
  def increment(metric)
9
- @connection.incrememnt(metric)
9
+ @connection.increment(metric)
10
10
  end
11
11
 
12
12
  def timing(metric, &block)
@@ -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 [#{Support::QueueName.new(routing[:to_queue], @opts).to_s}]")
17
- @exchange.publish(msg, :routing_key => Support::QueueName.new(routing[:to_queue], @opts).to_s)
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 => :direct, :durable => @opts[:durable])
25
+ @exchange = @channel.exchange(@opts[:exchange], :type => @opts[:exchange_type], :durable => @opts[:durable])
28
26
  end
29
27
 
30
28
  def connected?
@@ -6,7 +6,7 @@ class Sneakers::Utils
6
6
  missing_workers = []
7
7
  workers = (workerstring || '').split(',').map do |k|
8
8
  begin
9
- w = Object.const_get(k)
9
+ w = k.split('::').inject(Kernel){|s, c| s.const_get(c)}
10
10
  rescue
11
11
  missing_workers << k
12
12
  end
@@ -21,7 +21,7 @@ Error: No workers found.
21
21
  Please set the classes of the workers you want to run like so:
22
22
 
23
23
  $ export WORKERS=MyWorker,FooWorker
24
- $ rake sneakers:work
24
+ $ rake sneakers:run
25
25
 
26
26
  EOF
27
27
  exit(1)
@@ -1,3 +1,3 @@
1
1
  module Sneakers
2
- VERSION = "0.1.0.pre"
2
+ VERSION = "0.1.1.pre"
3
3
  end
@@ -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 => Support::QueueName.new(routing[:to_queue], @opts).to_s)
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.0.7"
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 => "downloads_test")
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 => "downloads_test")
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
- end
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
@@ -5,7 +5,7 @@ require 'sneakers'
5
5
 
6
6
  describe Sneakers::Queue do
7
7
  before do
8
- Sneakers.configure(:env => 'test')
8
+ Sneakers.configure
9
9
  end
10
10
 
11
11
  describe "#subscribe" do
@@ -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(:env => 'test', :daemonize => true, :log => 'sneakers.log')
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('defaults_test')
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, :env=>"test", :durable=>true, :ack=>true, :amqp=>"amqp://guest:guest@localhost:5672", :vhost=>"/", :exchange=>"sneakers", :exchange_type=>:direct, :hooks=>{}, :handler=>Sneakers::Handlers::Oneshot, :heartbeat => 2}
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('downloads_test')
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, :env=>"test", :durable=>false, :ack=>false, :amqp=>"amqp://guest:guest@localhost:5672", :vhost=>"/", :exchange=>"dummy", :exchange_type=>:direct, :hooks=>{}, :handler=>Sneakers::Handlers::Oneshot, :heartbeat =>5}
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 => 'target_test').once
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.0.pre
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-01-30 00:00:00.000000000 Z
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.0.7
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.0.7
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!
@@ -1,14 +0,0 @@
1
- module Sneakers
2
- module Support
3
- class QueueName
4
- def initialize(queue, opts)
5
- @queue = queue
6
- @opts = opts
7
- end
8
-
9
- def to_s
10
- [@queue, @opts[:env]].compact.join('_')
11
- end
12
- end
13
- end
14
- end