droid 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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'