roger_rabbit 0.0.1

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 ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in roger_rabbit.gemspec
4
+ gemspec
data/README ADDED
@@ -0,0 +1,29 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'roger_rabbit'
4
+
5
+ class TestRogerRabbit < Test::Unit::TestCase
6
+
7
+ # You should have rabbitmq installed and running.
8
+ def test_it
9
+ queue_name = "test"
10
+ 2.times do
11
+ RogerRabbit.publish queue_name, :joe => 'cool'
12
+ end
13
+
14
+ count = 0
15
+
16
+ # RogerRabbit.consume will loop forever, so we're
17
+ # going to break out of it with a Timeout.
18
+ assert_raises(Timeout::Error) do
19
+ Timeout.timeout(0.05) do
20
+ RogerRabbit.consume queue_name do |args|
21
+ assert_equal({ "joe" => 'cool' }, args)
22
+ count += 1
23
+ end
24
+ end
25
+ end
26
+
27
+ assert_equal 2, count, "we should have consumed 2 messages"
28
+ end
29
+ end
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'bundler'
5
+
6
+ Bundler::GemHelper.install_tasks
7
+
8
+ Rake::TestTask.new(:test) do |test|
9
+ test.libs << 'lib' << 'test'
10
+ test.pattern = 'test/**/test_*.rb'
11
+ end
12
+
13
+ task :default => :test
@@ -0,0 +1,3 @@
1
+ module RogerRabbit
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,34 @@
1
+ require 'bunny'
2
+ require 'json'
3
+ require 'active_support/hash_with_indifferent_access'
4
+
5
+ module RogerRabbit
6
+ def self.bunny
7
+ if ! @bunny
8
+ @bunny = Bunny.new
9
+ @bunny.start
10
+ @bunny.qos
11
+ end
12
+ @bunny
13
+ end
14
+
15
+ def self.bunny_queue queue_name
16
+ @queues ||= {}
17
+ @queues[queue_name] ||= bunny.queue(queue_name)
18
+ end
19
+
20
+ def self.consume queue_name, &block
21
+ bunny_queue(queue_name).subscribe(:ack => true) do |msg|
22
+ begin
23
+ yield ActiveSupport::HashWithIndifferentAccess.new(JSON.parse(msg[:payload]))
24
+ rescue JSON::ParserError => e
25
+ puts e.message
26
+ end
27
+ end
28
+ end
29
+
30
+ def self.publish queue_name, args
31
+ args = args.to_json
32
+ bunny_queue(queue_name).publish(args)
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "roger_rabbit/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "roger_rabbit"
7
+ s.version = RogerRabbit::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Joe Van Dyk"]
10
+ s.email = ["joe@tanga.com"]
11
+ s.homepage = "http://github.com/joevandyk/roger_rabbit"
12
+ s.summary = %q{Sweet wrapper around the bunny rabbitmq library}
13
+ s.description = %q{Sweet wrapper around the bunny rabbitmq library}
14
+
15
+ s.rubyforge_project = "roger_rabbit"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency "bunny"
23
+ s.add_dependency "json"
24
+ s.add_dependency "activesupport"
25
+ end
@@ -0,0 +1,30 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'roger_rabbit'
4
+
5
+ class TestRogerRabbit < Test::Unit::TestCase
6
+
7
+ # You should have rabbitmq installed and running.
8
+ def test_it
9
+ queue_name = "test"
10
+ 2.times do
11
+ RogerRabbit.publish queue_name, :joe => 'cool'
12
+ end
13
+
14
+ count = 0
15
+
16
+ # RogerRabbit.consume will loop forever, so we're
17
+ # going to break out of it with a Timeout.
18
+ assert_raises(Timeout::Error) do
19
+ Timeout.timeout(0.05) do
20
+ RogerRabbit.consume queue_name do |args|
21
+ assert_equal({ "joe" => 'cool' }, args)
22
+ assert_equal "cool", args[:joe] # Indifferent access
23
+ count += 1
24
+ end
25
+ end
26
+ end
27
+
28
+ assert_equal 2, count, "we should have consumed 2 messages"
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: roger_rabbit
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Joe Van Dyk
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-19 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bunny
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: json
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: activesupport
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: :runtime
62
+ version_requirements: *id003
63
+ description: Sweet wrapper around the bunny rabbitmq library
64
+ email:
65
+ - joe@tanga.com
66
+ executables: []
67
+
68
+ extensions: []
69
+
70
+ extra_rdoc_files: []
71
+
72
+ files:
73
+ - .gitignore
74
+ - Gemfile
75
+ - README
76
+ - Rakefile
77
+ - lib/roger_rabbit.rb
78
+ - lib/roger_rabbit/version.rb
79
+ - roger_rabbit.gemspec
80
+ - test/test_roger_rabbit.rb
81
+ has_rdoc: true
82
+ homepage: http://github.com/joevandyk/roger_rabbit
83
+ licenses: []
84
+
85
+ post_install_message:
86
+ rdoc_options: []
87
+
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ hash: 3
96
+ segments:
97
+ - 0
98
+ version: "0"
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ requirements: []
109
+
110
+ rubyforge_project: roger_rabbit
111
+ rubygems_version: 1.6.2
112
+ signing_key:
113
+ specification_version: 3
114
+ summary: Sweet wrapper around the bunny rabbitmq library
115
+ test_files: []
116
+