droid 1.0.3 → 1.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 CHANGED
@@ -1,2 +1,8 @@
1
1
  *.swp
2
2
  pkg/
3
+ *.gem
4
+ .bundle
5
+ .config
6
+ Gemfile.lock
7
+ rdoc
8
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
data/Rakefile CHANGED
@@ -1,37 +1,11 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
3
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "droid"
8
- gem.summary = %Q{AMQP Wrapper Library}
9
- gem.description = %Q{Easy to use AMQP Library with constructs for typical usage patterns}
10
- gem.email = "ricardo@heroku.com"
11
- gem.homepage = "http://heroku.com"
12
- gem.authors = ["Ricardo Chimal, Jr."]
4
+ require "rake/testtask"
13
5
 
14
- gem.add_development_dependency "baconmocha", ">= 0"
15
-
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- gem.add_dependency 'json_pure', '>= 1.2.0'
18
- gem.add_dependency 'rest-client', '>= 1.2.0'
19
- gem.add_dependency 'amqp', '0.6.7'
20
- gem.add_dependency 'bunny', '~> 0.6.0'
21
- gem.add_dependency 'eventmachine_httpserver', '0.2.0'
22
- end
23
- Jeweler::GemcutterTasks.new
24
- rescue LoadError
25
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
26
- end
27
-
28
- require 'rake/testtask'
29
- Rake::TestTask.new(:spec) do |spec|
30
- spec.libs << 'lib' << 'spec'
31
- spec.pattern = 'spec/**/*_spec.rb'
32
- spec.verbose = true
6
+ Rake::TestTask.new(:spec) do |t|
7
+ t.pattern = "spec/*_spec.rb"
8
+ t.verbose = true
33
9
  end
34
10
 
35
- task :spec => :check_dependencies
36
-
37
11
  task :default => :spec
@@ -1,97 +1,28 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/droid/version', __FILE__)
5
3
 
6
- Gem::Specification.new do |s|
7
- s.name = %q{droid}
8
- s.version = "1.0.3"
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Ricardo Chimal, Jr."]
6
+ gem.email = ["ricardo@heroku.com"]
7
+ gem.description = %q{Easy to use AMQP Library with constructs for typical usage patterns}
8
+ gem.summary = %q{AMQP Wrapper Library}
9
+ gem.homepage = %q{http://www.heroku.com}
9
10
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Ricardo Chimal, Jr."]
12
- s.date = %q{2011-08-25}
13
- s.default_executable = %q{bleedq}
14
- s.description = %q{Easy to use AMQP Library with constructs for typical usage patterns}
15
- s.email = %q{ricardo@heroku.com}
16
- s.executables = ["bleedq"]
17
- s.files = [
18
- ".gitignore",
19
- "Rakefile",
20
- "VERSION",
21
- "bin/bleedq",
22
- "droid.gemspec",
23
- "examples/async_reply.rb",
24
- "examples/heroku_async_reply.rb",
25
- "examples/sync.rb",
26
- "examples/worker.rb",
27
- "lib/droid.rb",
28
- "lib/droid/em.rb",
29
- "lib/droid/heroku.rb",
30
- "lib/droid/heroku/local_stats.rb",
31
- "lib/droid/heroku/logger_client.rb",
32
- "lib/droid/heroku/memcache_cluster.rb",
33
- "lib/droid/heroku/stats.rb",
34
- "lib/droid/json_server.rb",
35
- "lib/droid/monkey.rb",
36
- "lib/droid/publish.rb",
37
- "lib/droid/queue.rb",
38
- "lib/droid/request.rb",
39
- "lib/droid/sync.rb",
40
- "lib/droid/utilization.rb",
41
- "lib/droid/utils.rb",
42
- "lib/heroku_droid.rb",
43
- "lib/local_stats.rb",
44
- "lib/memcache_cluster.rb",
45
- "lib/stats.rb",
46
- "spec/publish_spec.rb",
47
- "spec/response_spec.rb",
48
- "spec/spec_helper.rb",
49
- "spec/utils_spec.rb",
50
- "spec/wait_for_port_spec.rb"
51
- ]
52
- s.homepage = %q{http://heroku.com}
53
- s.rdoc_options = ["--charset=UTF-8"]
54
- s.require_paths = ["lib"]
55
- s.rubygems_version = %q{1.3.6}
56
- s.summary = %q{AMQP Wrapper Library}
57
- s.test_files = [
58
- "spec/publish_spec.rb",
59
- "spec/response_spec.rb",
60
- "spec/spec_helper.rb",
61
- "spec/utils_spec.rb",
62
- "spec/wait_for_port_spec.rb",
63
- "examples/async_reply.rb",
64
- "examples/heroku_async_reply.rb",
65
- "examples/sync.rb",
66
- "examples/worker.rb"
67
- ]
11
+ gem.rubygems_version = %q{1.3.7}
12
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
13
+ gem.files = `git ls-files`.split("\n")
14
+ gem.test_files = `git ls-files -- {examples,spec}/*`.split("\n")
15
+ gem.name = "droid"
16
+ gem.require_paths = ["lib"]
17
+ gem.version = Droid.version
68
18
 
69
- if s.respond_to? :specification_version then
70
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
71
- s.specification_version = 3
19
+ gem.add_dependency "json_pure", ">= 1.2.0"
20
+ gem.add_dependency "rest-client", ">= 1.2.0"
21
+ gem.add_dependency "amqp", "= 0.6.7"
22
+ gem.add_dependency "bunny", "~> 0.7.0"
23
+ gem.add_dependency "eventmachine_httpserver", "= 0.2.0"
72
24
 
73
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
74
- s.add_development_dependency(%q<baconmocha>, [">= 0"])
75
- s.add_runtime_dependency(%q<json_pure>, [">= 1.2.0"])
76
- s.add_runtime_dependency(%q<rest-client>, [">= 1.2.0"])
77
- s.add_runtime_dependency(%q<amqp>, ["= 0.6.7"])
78
- s.add_runtime_dependency(%q<bunny>, ["~> 0.6.0"])
79
- s.add_runtime_dependency(%q<eventmachine_httpserver>, ["= 0.2.0"])
80
- else
81
- s.add_dependency(%q<baconmocha>, [">= 0"])
82
- s.add_dependency(%q<json_pure>, [">= 1.2.0"])
83
- s.add_dependency(%q<rest-client>, [">= 1.2.0"])
84
- s.add_dependency(%q<amqp>, ["= 0.6.7"])
85
- s.add_dependency(%q<bunny>, ["~> 0.6.0"])
86
- s.add_dependency(%q<eventmachine_httpserver>, ["= 0.2.0"])
87
- end
88
- else
89
- s.add_dependency(%q<baconmocha>, [">= 0"])
90
- s.add_dependency(%q<json_pure>, [">= 1.2.0"])
91
- s.add_dependency(%q<rest-client>, [">= 1.2.0"])
92
- s.add_dependency(%q<amqp>, ["= 0.6.7"])
93
- s.add_dependency(%q<bunny>, ["~> 0.6.0"])
94
- s.add_dependency(%q<eventmachine_httpserver>, ["= 0.2.0"])
95
- end
25
+ gem.add_development_dependency "rake"
26
+ gem.add_development_dependency "mocha"
27
+ gem.add_development_dependency "minitest"
96
28
  end
97
-
@@ -8,9 +8,11 @@ if RUBY_VERSION[0,3] == "1.8"
8
8
  DroidTimer = SystemTimer
9
9
  rescue LoadError
10
10
  # systemtimer wasn't available, fall back to Timeout
11
+ require 'timeout'
11
12
  DroidTimer = Timeout
12
13
  end
13
14
  else
15
+ require 'timeout'
14
16
  DroidTimer = Timeout
15
17
  end
16
18
 
@@ -20,6 +22,9 @@ if !defined?(JSON) && !defined?(JSON_LOADED)
20
22
  require 'json/pure'
21
23
  end
22
24
 
25
+
26
+ require 'droid/version'
27
+
23
28
  require 'droid/monkey'
24
29
 
25
30
  require 'droid/utils'
@@ -30,10 +35,6 @@ require 'droid/queue'
30
35
  require 'droid/em'
31
36
 
32
37
  class Droid
33
- def self.version
34
- @@version ||= File.read(File.dirname(__FILE__) + '/../VERSION').strip
35
- end
36
-
37
38
  def self.name
38
39
  @@name ||= nil
39
40
  end
@@ -24,18 +24,6 @@ rescue LoadError => e
24
24
  end
25
25
 
26
26
  class HerokuDroid < Droid
27
- attr_reader :extended_stats
28
-
29
- def initialize(name, opts={}, &blk)
30
- @extended_stats = !(opts[:extended_stats] == false)
31
-
32
- super(name, opts) do |droid|
33
- setup_standard_topics(self) unless opts[:standard_topics] == false
34
- LocalStats.attach
35
- blk.call(self)
36
- end
37
- end
38
-
39
27
  def stats(&blk)
40
28
  @stats = blk
41
29
  out = call_stats
@@ -50,53 +38,4 @@ class HerokuDroid < Droid
50
38
  def name
51
39
  Droid.name
52
40
  end
53
-
54
- def ruby_path
55
- if File.exists?("/usr/ruby1.8.6/bin/ruby")
56
- "/usr/ruby1.8.6/bin"
57
- else
58
- "/usr/local/bin"
59
- end
60
- end
61
-
62
- def setup_standard_topics(droid)
63
- setup_ping_topic(droid)
64
- end
65
-
66
- def setup_ping_topic(droid)
67
- require 'time'
68
-
69
- droid.listener('ping').subscribe do |req|
70
- Droid::Utilization.latency = (Time.now.to_f - req['departed_at']).abs
71
- end
72
-
73
- blk = Proc.new do |d|
74
- begin
75
- t1 = Time.now
76
- response = {}.merge(LocalStats.stats)
77
-
78
- estats = nil
79
- if self.extended_stats
80
- estats = droid.call_stats
81
- estats = { :notes => estats } unless estats.kind_of?(Hash)
82
- estats[:notes] ||= estats.map { |k, v| "#{v} #{k}" }.join(", ")
83
- estats.merge!(LocalStats.extended_stats)
84
- end
85
-
86
- response.merge!({
87
- :extended_stats => estats,
88
- :droid_name => Droid.name,
89
- :latency => Droid::Utilization.latency,
90
- })
91
-
92
- d.publish('pong', response.merge(:stat_collection => (Time.now - t1)))
93
- rescue Object => e
94
- log.error "Ping Block Error: #{e.class} -> #{e.message}", :exception => e
95
- end
96
- end
97
-
98
- EM.add_timer(2) { blk.call(droid) }
99
- EM.add_periodic_timer(50 + (rand*15).to_i) { blk.call(droid) }
100
- end
101
41
  end
102
-
@@ -17,7 +17,7 @@ class Droid
17
17
  default_response
18
18
  else
19
19
  method_name = "get_#{@http_request_uri.split("/")[1]}".gsub(/[^\d\w_]/,'').downcase
20
- if public_methods.include?(method_name)
20
+ if public_methods.map(&:to_sym).include?(method_name.to_sym)
21
21
  generate_response(method_name)
22
22
  else
23
23
  not_found_response
@@ -29,6 +29,7 @@ class Droid
29
29
  def tag
30
30
  s = "queue=#{q.name}"
31
31
  s += " exchange=#{ex.name}" if ex
32
+ s
32
33
  end
33
34
 
34
35
  def subscribe(amqp_opts={}, opts={})
@@ -106,7 +107,7 @@ class Droid
106
107
  class ReplyQueue < BaseQueue
107
108
  def initialize(queue_name, opts={})
108
109
  opts[:auto_delete] = true
109
- super
110
+ super(queue_name, opts)
110
111
  end
111
112
 
112
113
  def setup
@@ -72,8 +72,7 @@ class Droid
72
72
  def publish(name, data, opts={}, popts={}, &block)
73
73
  opts = default_publish_opts.merge(opts)
74
74
  if block
75
- opts[:reply_to] ||= Droid::Utils.generate_reply_to(name)
76
- Droid::ReplyQueue.new(opts[:reply_to]).subscribe(&block)
75
+ raise StandardError, "async publish/reply no longer directly supported... for now."
77
76
  end
78
77
  Droid.publish(name, data, opts, popts)
79
78
  end
@@ -0,0 +1,5 @@
1
+ class Droid
2
+ def self.version
3
+ "1.1.0"
4
+ end
5
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
2
 
3
3
  describe 'AMQP Publish' do
4
4
  before do
@@ -8,7 +8,7 @@ describe 'AMQP Publish' do
8
8
 
9
9
  it "publishes a message to a queue" do
10
10
  @q = mock('queue')
11
- ::MQ.expects(:queue).with('topic').returns(@q)
11
+ ::MQ.expects(:queue).with('topic', :passive => true).returns(@q)
12
12
  @q.expects(:publish).with(@json, @publish_opts)
13
13
  Droid.publish_to_q('topic', :x => 1, :y => 2)
14
14
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
2
 
3
3
  describe 'Request' do
4
4
  before do
@@ -19,10 +19,10 @@ describe 'Request' do
19
19
  end
20
20
 
21
21
  it "allows access to response via symbols or strings in array access" do
22
- @res['x'].should == 123
23
- @res[:x].should == 123
24
- @res['y'].should == 'abc'
25
- @res[:y].should == 'abc'
22
+ @res['x'].must_be :==, 123
23
+ @res[:x].must_be :==, 123
24
+ @res['y'].must_be :==, 'abc'
25
+ @res[:y].must_be :==, 'abc'
26
26
  end
27
27
 
28
28
  it "calls ack on the header" do
@@ -1,5 +1,6 @@
1
- require 'rubygems'
2
- require 'baconmocha'
1
+ require 'minitest/autorun'
2
+ require 'minitest/spec'
3
+ require 'mocha'
3
4
 
4
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
5
6
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
@@ -7,5 +8,3 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
8
  require 'droid'
8
9
 
9
10
  Droid.log.level = Logger::FATAL
10
-
11
- Bacon.summary_on_exit
@@ -1,11 +1,11 @@
1
- require 'spec_helper'
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
2
 
3
3
  describe 'Utils' do
4
4
  before do
5
5
  end
6
6
 
7
7
  it "parses a json message" do
8
- Droid::Utils.parse_message('{"x":1,"y":2}').should == {'x' => 1, 'y' => 2}
8
+ Droid::Utils.parse_message('{"x":1,"y":2}').must_be :==, {'x' => 1, 'y' => 2}
9
9
  end
10
10
 
11
11
  it "parses custom headers and force integers on a few values" do
@@ -19,25 +19,25 @@ describe 'Utils' do
19
19
 
20
20
  h = Droid::Utils.parse_custom_headers(headers)
21
21
 
22
- h.size.should == 6
23
- h[:ttl].should == -1
24
- h[:reply_to].should == 'q.random.reply'
25
- h[:published_on].should == 12345
26
- h[:event_hash].should == 'x123'
22
+ h.size.must_be :==, 6
23
+ h[:ttl].must_be :==, -1
24
+ h[:reply_to].must_be :==, 'q.random.reply'
25
+ h[:published_on].must_be :==, 12345
26
+ h[:event_hash].must_be :==, 'x123'
27
27
  end
28
28
 
29
29
  it "raises an exception if the data to format for publish is not a hash" do
30
- lambda { Droid::Utils.format_publish('bad payload') }.should.raise Droid::BadPayload
30
+ lambda { Droid::Utils.format_publish('bad payload') }.must_raise Droid::BadPayload
31
31
  end
32
32
 
33
33
  it "generates a name for the instance" do
34
34
  Socket.stubs(:gethostname).returns('deepblue.123')
35
- Droid::Utils.generate_name_for_instance('woo').should == 'woo.deepblue.123'
35
+ Droid::Utils.generate_name_for_instance('woo').must_be :==, 'woo.deepblue.123'
36
36
  end
37
37
 
38
38
  it "generates queue name, really more like a generic identifier" do
39
39
  Socket.stubs(:gethostname).returns('deepblue.123')
40
- Droid::Utils.generate_queue('topic').should == "topic.deepblue.123.#{$$}"
41
- Droid::Utils.generate_queue('topic', 'local').should == "topic.deepblue.123.local"
40
+ Droid::Utils.generate_queue('topic').must_be :==, "topic.deepblue.123.#{$$}"
41
+ Droid::Utils.generate_queue('topic', 'local').must_be :==, "topic.deepblue.123.local"
42
42
  end
43
43
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
2
 
3
3
  Thread.new do
4
4
  sleep 2
@@ -10,7 +10,7 @@ describe 'Connectivity' do
10
10
  start = Time.now
11
11
  Droid.wait_for_tcp_port('localhost', 20_001)
12
12
  finish = Time.now
13
- (finish - start).should > 1
14
- (finish - start).should < 3
13
+ (finish - start).must_be :>, 1
14
+ (finish - start).must_be :<, 3
15
15
  end
16
16
  end
metadata CHANGED
@@ -1,120 +1,117 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: droid
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 0
8
- - 3
9
- version: 1.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Ricardo Chimal, Jr.
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-08-25 00:00:00 -07:00
18
- default_executable: bleedq
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: baconmocha
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- version: "0"
30
- type: :development
31
- version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
33
15
  name: json_pure
34
- prerelease: false
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 1
41
- - 2
42
- - 0
16
+ requirement: &2160293160 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
43
21
  version: 1.2.0
44
22
  type: :runtime
45
- version_requirements: *id002
46
- - !ruby/object:Gem::Dependency
47
- name: rest-client
48
23
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- segments:
54
- - 1
55
- - 2
56
- - 0
24
+ version_requirements: *2160293160
25
+ - !ruby/object:Gem::Dependency
26
+ name: rest-client
27
+ requirement: &2160292560 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
57
32
  version: 1.2.0
58
33
  type: :runtime
59
- version_requirements: *id003
60
- - !ruby/object:Gem::Dependency
61
- name: amqp
62
34
  prerelease: false
63
- requirement: &id004 !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "="
66
- - !ruby/object:Gem::Version
67
- segments:
68
- - 0
69
- - 6
70
- - 7
35
+ version_requirements: *2160292560
36
+ - !ruby/object:Gem::Dependency
37
+ name: amqp
38
+ requirement: &2160292040 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - =
42
+ - !ruby/object:Gem::Version
71
43
  version: 0.6.7
72
44
  type: :runtime
73
- version_requirements: *id004
74
- - !ruby/object:Gem::Dependency
75
- name: bunny
76
45
  prerelease: false
77
- requirement: &id005 !ruby/object:Gem::Requirement
78
- requirements:
46
+ version_requirements: *2160292040
47
+ - !ruby/object:Gem::Dependency
48
+ name: bunny
49
+ requirement: &2160291540 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
79
52
  - - ~>
80
- - !ruby/object:Gem::Version
81
- segments:
82
- - 0
83
- - 6
84
- - 0
85
- version: 0.6.0
53
+ - !ruby/object:Gem::Version
54
+ version: 0.7.0
86
55
  type: :runtime
87
- version_requirements: *id005
88
- - !ruby/object:Gem::Dependency
89
- name: eventmachine_httpserver
90
56
  prerelease: false
91
- requirement: &id006 !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "="
94
- - !ruby/object:Gem::Version
95
- segments:
96
- - 0
97
- - 2
98
- - 0
57
+ version_requirements: *2160291540
58
+ - !ruby/object:Gem::Dependency
59
+ name: eventmachine_httpserver
60
+ requirement: &2160291080 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - =
64
+ - !ruby/object:Gem::Version
99
65
  version: 0.2.0
100
66
  type: :runtime
101
- version_requirements: *id006
67
+ prerelease: false
68
+ version_requirements: *2160291080
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: &2160290700 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2160290700
80
+ - !ruby/object:Gem::Dependency
81
+ name: mocha
82
+ requirement: &2160290160 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2160290160
91
+ - !ruby/object:Gem::Dependency
92
+ name: minitest
93
+ requirement: &2160289680 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *2160289680
102
102
  description: Easy to use AMQP Library with constructs for typical usage patterns
103
- email: ricardo@heroku.com
104
- executables:
103
+ email:
104
+ - ricardo@heroku.com
105
+ executables:
105
106
  - bleedq
106
107
  extensions: []
107
-
108
108
  extra_rdoc_files: []
109
-
110
- files:
109
+ files:
111
110
  - .gitignore
111
+ - Gemfile
112
112
  - Rakefile
113
- - VERSION
114
113
  - bin/bleedq
115
114
  - droid.gemspec
116
- - examples/async_reply.rb
117
- - examples/heroku_async_reply.rb
118
115
  - examples/sync.rb
119
116
  - examples/worker.rb
120
117
  - lib/droid.rb
@@ -123,7 +120,6 @@ files:
123
120
  - lib/droid/heroku/local_stats.rb
124
121
  - lib/droid/heroku/logger_client.rb
125
122
  - lib/droid/heroku/memcache_cluster.rb
126
- - lib/droid/heroku/stats.rb
127
123
  - lib/droid/json_server.rb
128
124
  - lib/droid/monkey.rb
129
125
  - lib/droid/publish.rb
@@ -132,52 +128,47 @@ files:
132
128
  - lib/droid/sync.rb
133
129
  - lib/droid/utilization.rb
134
130
  - lib/droid/utils.rb
135
- - lib/heroku_droid.rb
136
- - lib/local_stats.rb
137
- - lib/memcache_cluster.rb
138
- - lib/stats.rb
131
+ - lib/droid/version.rb
139
132
  - spec/publish_spec.rb
140
133
  - spec/response_spec.rb
141
134
  - spec/spec_helper.rb
142
135
  - spec/utils_spec.rb
143
136
  - spec/wait_for_port_spec.rb
144
- has_rdoc: true
145
- homepage: http://heroku.com
137
+ homepage: http://www.heroku.com
146
138
  licenses: []
147
-
148
139
  post_install_message:
149
- rdoc_options:
150
- - --charset=UTF-8
151
- require_paths:
140
+ rdoc_options: []
141
+ require_paths:
152
142
  - lib
153
- required_ruby_version: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
157
- segments:
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ segments:
158
150
  - 0
159
- version: "0"
160
- required_rubygems_version: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- segments:
151
+ hash: -591860115473353597
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ segments:
165
159
  - 0
166
- version: "0"
160
+ hash: -591860115473353597
167
161
  requirements: []
168
-
169
162
  rubyforge_project:
170
- rubygems_version: 1.3.6
163
+ rubygems_version: 1.8.11
171
164
  signing_key:
172
165
  specification_version: 3
173
166
  summary: AMQP Wrapper Library
174
- test_files:
167
+ test_files:
168
+ - examples/sync.rb
169
+ - examples/worker.rb
175
170
  - spec/publish_spec.rb
176
171
  - spec/response_spec.rb
177
172
  - spec/spec_helper.rb
178
173
  - spec/utils_spec.rb
179
174
  - spec/wait_for_port_spec.rb
180
- - examples/async_reply.rb
181
- - examples/heroku_async_reply.rb
182
- - examples/sync.rb
183
- - examples/worker.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.0.3
@@ -1,25 +0,0 @@
1
- $:.unshift File.dirname(__FILE__) + '/../lib'
2
- require 'droid'
3
-
4
- def log
5
- Droid.log
6
- end
7
-
8
- Droid.new('Example Reply') do |droid|
9
- droid.worker('example.target').subscribe do |req|
10
- log.debug "headers: #{req.header.headers.inspect}"
11
- log.debug "event_hash should be woot -> #{req.droid_headers[:event_hash]}"
12
- req.reply(:target_received_at => Time.now.to_i)
13
- req.ack
14
- end
15
-
16
- droid.listener('example.check.target').subscribe do |req|
17
- req.publish('example.target', { :checking => Time.now.to_i }) do |req2|
18
- log.debug "event_hash should be woot -> #{req2.droid_headers[:event_hash]}"
19
- log.info "We're done checking!"
20
- Droid.stop_safe
21
- end
22
- end
23
-
24
- droid.timer(2) { Droid.publish('example.check.target', {:sent_at => Time.now.to_i}, {:event_hash => "woot"}) }
25
- end
@@ -1,22 +0,0 @@
1
- $:.unshift File.dirname(__FILE__) + '/../lib/'
2
- require 'heroku_droid'
3
-
4
- def log
5
- Droid.log
6
- end
7
-
8
- HerokuDroid.new('Example Reply') do |droid|
9
- droid.worker('example.target').subscribe do |req|
10
- req.reply(:target_received_at => Time.now.to_i)
11
- req.ack
12
- end
13
-
14
- droid.listener('example.check.target').subscribe do |req|
15
- req.publish('example.target', { :checking => Time.now.to_i }) do |req2|
16
- log.info "We're done checking!"
17
- Droid.stop_safe
18
- end
19
- end
20
-
21
- EM.add_timer(2) { Droid.publish('example.check.target', :sent_at => Time.now.to_i ) }
22
- end
@@ -1,14 +0,0 @@
1
- # Deprecated
2
- module Stats
3
- def cache
4
- @@cache ||= MemcacheCluster.cache("heroku:stats")
5
- end
6
-
7
- def increment(key, amount=1)
8
- end
9
-
10
- def sample(key, value)
11
- end
12
-
13
- extend self
14
- end
@@ -1 +0,0 @@
1
- require 'droid/heroku'
@@ -1 +0,0 @@
1
- require 'droid/heroku/local_stats'
@@ -1 +0,0 @@
1
- require 'droid/heroku/memcache_cluster'
@@ -1 +0,0 @@
1
- require 'droid/heroku/stats'