bugs_bunny 0.0.7

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/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
22
+ rabbitmq.yml
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Marcos Piccinini
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,17 @@
1
+ = bugs_bunny
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
+ * Send me a pull request. Bonus points for topic branches.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2010 Marcos Piccinini. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,58 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "bugs_bunny"
8
+ gem.summary = "Play/Manage RabbitMQ"
9
+ gem.description = "Play/Manage RabbitMQ. Vhosts, queues."
10
+ gem.email = "x@nofxx.com"
11
+ gem.homepage = "http://github.com/nofxx/bugs_bunny"
12
+ gem.authors = ["Marcos Piccinini"]
13
+
14
+ gem.add_dependency "amqp", ">=0.6.7"
15
+ gem.add_development_dependency "rspec", ">= 1.2.9"
16
+ gem.add_development_dependency "cucumber", ">= 0"
17
+ end
18
+ Jeweler::GemcutterTasks.new
19
+ rescue LoadError
20
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
+ end
22
+
23
+ require 'spec/rake/spectask'
24
+ Spec::Rake::SpecTask.new(:spec) do |spec|
25
+ spec.libs << 'lib' << 'spec'
26
+ spec.spec_files = FileList['spec/**/*_spec.rb']
27
+ end
28
+
29
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
30
+ spec.libs << 'lib' << 'spec'
31
+ spec.pattern = 'spec/**/*_spec.rb'
32
+ spec.rcov = true
33
+ end
34
+
35
+ task :spec => :check_dependencies
36
+
37
+ begin
38
+ require 'cucumber/rake/task'
39
+ Cucumber::Rake::Task.new(:features)
40
+
41
+ task :features => :check_dependencies
42
+ rescue LoadError
43
+ task :features do
44
+ abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
45
+ end
46
+ end
47
+
48
+ task :default => :spec
49
+
50
+ require 'rake/rdoctask'
51
+ Rake::RDocTask.new do |rdoc|
52
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
53
+
54
+ rdoc.rdoc_dir = 'rdoc'
55
+ rdoc.title = "bugs_bunny #{version}"
56
+ rdoc.rdoc_files.include('README*')
57
+ rdoc.rdoc_files.include('lib/**/*.rb')
58
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.7
data/bin/bbunny ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rubygems'
4
+ require 'optparse'
5
+ require 'bugs_bunny'
6
+
7
+ opt = OptionParser.new do |o|
8
+ o.banner = <<BANNER
9
+ Bugs Bunny - RabbitMQ Playground
10
+
11
+ Usage: #{File.basename($0)} command [args]
12
+
13
+ Commands:
14
+
15
+ vhosts - List vhosts
16
+ users - List and filter items
17
+ queues - Order by: name, price, store.
18
+ clear - Wipe out mnesia
19
+ config - "Generates a config file for AMQP connection
20
+
21
+ Common usage:
22
+
23
+ pyradise queue foo
24
+
25
+ Options:
26
+
27
+ BANNER
28
+ o.on('-c CONFIG', "Config file path") { |path| Opt[:config] = path }
29
+ o.on('-p PATH', "Output path for config file") { |path| Opt[:out] = path }
30
+ o.on('-v', "Verbose") { |b| Opt[:verbose] = true }
31
+ o.on('-f', "Force") { |b| Opt[:force] = true }
32
+ o.on('-h') { puts o; exit }
33
+ o.parse!
34
+ end
35
+
36
+ if ARGV.empty?
37
+ puts opt
38
+ else
39
+ BugsBunny::CLI.new(ARGV)
40
+ end
@@ -0,0 +1,78 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{bugs_bunny}
8
+ s.version = "0.0.7"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Marcos Piccinini"]
12
+ s.date = %q{2010-03-03}
13
+ s.default_executable = %q{bbunny}
14
+ s.description = %q{Play/Manage RabbitMQ. Vhosts, queues.}
15
+ s.email = %q{x@nofxx.com}
16
+ s.executables = ["bbunny"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".gitignore",
24
+ "LICENSE",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/bbunny",
29
+ "bugs_bunny.gemspec",
30
+ "cucumber.yml",
31
+ "features/bugs_bunny.feature",
32
+ "features/queues.feature",
33
+ "features/step_definitions/bugs_bunny_steps.rb",
34
+ "features/step_definitions/queue_steps.rb",
35
+ "features/support/env.rb",
36
+ "lib/bugs_bunny.rb",
37
+ "lib/bugs_bunny/cli.rb",
38
+ "lib/bugs_bunny/rabbit.rb",
39
+ "lib/bugs_bunny/rabbitmq.yml",
40
+ "lib/bugs_bunny/record.rb",
41
+ "spec/bugs_bunny/cli_spec.rb",
42
+ "spec/bugs_bunny/rabbit_spec.rb",
43
+ "spec/bugs_bunny_spec.rb",
44
+ "spec/spec.opts",
45
+ "spec/spec_helper.rb"
46
+ ]
47
+ s.homepage = %q{http://github.com/nofxx/bugs_bunny}
48
+ s.rdoc_options = ["--charset=UTF-8"]
49
+ s.require_paths = ["lib"]
50
+ s.rubygems_version = %q{1.3.6}
51
+ s.summary = %q{Play/Manage RabbitMQ}
52
+ s.test_files = [
53
+ "spec/bugs_bunny/cli_spec.rb",
54
+ "spec/bugs_bunny/rabbit_spec.rb",
55
+ "spec/bugs_bunny_spec.rb",
56
+ "spec/spec_helper.rb"
57
+ ]
58
+
59
+ if s.respond_to? :specification_version then
60
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
61
+ s.specification_version = 3
62
+
63
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
64
+ s.add_runtime_dependency(%q<amqp>, [">= 0.6.7"])
65
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
66
+ s.add_development_dependency(%q<cucumber>, [">= 0"])
67
+ else
68
+ s.add_dependency(%q<amqp>, [">= 0.6.7"])
69
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
70
+ s.add_dependency(%q<cucumber>, [">= 0"])
71
+ end
72
+ else
73
+ s.add_dependency(%q<amqp>, [">= 0.6.7"])
74
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
75
+ s.add_dependency(%q<cucumber>, [">= 0"])
76
+ end
77
+ end
78
+
data/cucumber.yml ADDED
@@ -0,0 +1 @@
1
+ default: -r features/support/env.rb -r features/step_definitions -r features
@@ -0,0 +1,10 @@
1
+ Feature: Debug RabbitMQ
2
+ In order to restore mental sanity
3
+ A user has a tool to play with rabbitmq
4
+
5
+ Scenario: Without params
6
+ Given I run ""
7
+ Then I should see "Bugs Bunny"
8
+ And I should see "Bugs Bunny"
9
+ And I should see "Usage"
10
+
@@ -0,0 +1,77 @@
1
+ Feature: Managing queues
2
+ In order to manage queues
3
+ A user should have a nice command to do it
4
+
5
+ Scenario: Creating queues
6
+ Given I have no queues
7
+ When I run "queues new todo"
8
+ Then I should have 1 queues
9
+ When I run "queues"
10
+ Then I should see "todo"
11
+ And I should see "0 messages"
12
+
13
+ Scenario: Show queues
14
+ Given a queue "crucification" with 3 messages
15
+ When I run "queue crucification"
16
+ Then I should see "About crucification"
17
+ And I should see "3 messages, 0 consumers"
18
+
19
+ Scenario: List queues
20
+ Given I run "queues"
21
+ Then I should see "Queues"
22
+ And I should see "todo"
23
+ And I should see "crucification"
24
+ And I should see "0 messages"
25
+ And I should see "3 messages"
26
+
27
+ Scenario: Add to queue
28
+ Given a queue "works"
29
+ When I run "queue works add bugsbunny"
30
+ And I run "queue works"
31
+ Then I should see "About works"
32
+ And I should see "1 message"
33
+ When I run "queue works add bunny"
34
+ And I run "queue works"
35
+ Then I should see "About works"
36
+ And I should see "2 messages"
37
+
38
+ Scenario: Pop from queue
39
+ When I run "queue works pop"
40
+ Then I should see "Pop"
41
+ And I should see "bugsbunny"
42
+ And I run "queue works"
43
+ Then I should see "About works"
44
+ And I should see "1 messages"
45
+ When I run "queue works pop"
46
+ And I run "queue works"
47
+ And I should see "0 messages"
48
+
49
+ Scenario: List all messages
50
+ When I run "queue works add rock"
51
+ And I run "queue works add roll"
52
+ When I run "queue works list"
53
+ Then I should see "QUEUE 1"
54
+ And I should see "rock"
55
+ And I should see "Consumer: works"
56
+ And I should see "Exchange:"
57
+ And I should see "QUEUE 2"
58
+ And I should see "roll"
59
+ And I should see "Mode 1"
60
+
61
+ Scenario: Purging queue
62
+ When I run "queue works add more"
63
+ Then I run "queue works purge"
64
+ And I run "queue works"
65
+ And I should see "0 messages"
66
+ When I run "queue crucification"
67
+ Then I should see "3 messages"
68
+
69
+ Scenario: Purging queues
70
+ When I run "queue works add moreone"
71
+ And I run "queue works"
72
+ And I should see "1 message"
73
+ Then I run "queues purge"
74
+ And I run "queue works"
75
+ And I should see "0 messages"
76
+ When I run "queue crucification"
77
+ Then I should see "0 messages"
@@ -0,0 +1,7 @@
1
+ When /^I run "([^\"]*)"$/ do |comm|
2
+ @out = `bin/bbunny #{comm}`
3
+ end
4
+
5
+ Then /^I should see "([^\"]*)"$/ do |args|
6
+ @out.should match(args)
7
+ end
@@ -0,0 +1,20 @@
1
+
2
+ Given /^a queue "([^\"]*)" with (\d+) messages$/ do |name, n|
3
+ Given "I run \"queues new #{name}\""
4
+ n.to_i.times do |i|
5
+ Given "I run \"queue #{name} add Message#{i}\""
6
+ end
7
+ end
8
+
9
+ Given /^a queue "([^\"]*)"$/ do |name|
10
+ Given "I run \"queues new #{name}\""
11
+ end
12
+
13
+ Given /^I have no queues$/ do
14
+ Given 'I run "queues delete"'
15
+ end
16
+
17
+ Then /^I should have (\d+) queues*$/ do |n|
18
+ Given 'I run "queues"'
19
+ @out.split("\n").length.should eql(n.to_i+1)
20
+ end
@@ -0,0 +1,8 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
2
+ require 'bugs_bunny'
3
+
4
+ require 'spec/expectations'
5
+
6
+ Before do
7
+ @opts = { :host => "localhost" }
8
+ end
@@ -0,0 +1,66 @@
1
+ # Command Line Stuff
2
+ require 'yaml'
3
+ begin # Needed (really?) for ruby 1.8
4
+ # require 'ftools'
5
+ rescue LoadError
6
+ end
7
+
8
+ module BugsBunny
9
+ class CLI
10
+ CONFIG_FILE = "rabbitmq.yml"
11
+
12
+ def initialize(argv)
13
+ if respond_to?(argv[0])
14
+ send(*argv)
15
+ else
16
+ parse_config
17
+ rb = BugsBunny::Rabbit.new
18
+ unless rb.respond_to?(argv[0])
19
+ puts "Can`t do that."; exit
20
+ end
21
+ log "Connecting to rabbitmq #{Opt[:rabbit][:vhost]}"
22
+ AMQP.start(Opt[:rabbit]) do
23
+ rb.start!(argv)
24
+ end
25
+ end
26
+ end
27
+
28
+ # Write down a yml in ./ or config/ for ease use with
29
+ # bugs and on the
30
+ def config
31
+ path = "./"
32
+ path = "config/" if File.exists?("config/")
33
+ if config_exists?(path) && !Opt[:force]
34
+ puts "Config file already exists"
35
+ exit
36
+ else
37
+ File.copy(File.dirname(__FILE__) + "/#{CONFIG_FILE}", path)
38
+ puts "Copied config file to #{path}"
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def log(*args)
45
+ return unless Opt[:verbose]
46
+ puts *args
47
+ end
48
+
49
+ def config_exists?(path, name = CONFIG_FILE)
50
+ File.exists?(path + name)
51
+ end
52
+
53
+ def parse_config
54
+ unless file = Opt[:config]
55
+ file = ["", "config/"].select { |p| config_exists?(p) }[0]
56
+ file += CONFIG_FILE
57
+ end
58
+ unless File.exists?(file)
59
+ puts "No config file"; exit
60
+ end
61
+ Opt[:rabbit].merge! YAML.load(File.read(file))
62
+ end
63
+
64
+ end
65
+
66
+ end
@@ -0,0 +1,72 @@
1
+ # Amqp rabbitmq stuff
2
+ module BugsBunny
3
+
4
+ class Rabbit
5
+
6
+ def initialize(params=nil)
7
+ end
8
+
9
+ def start!(command)
10
+ # @mq = MQ.new AMQP::connect
11
+ send(*command)
12
+ end
13
+
14
+ def vhosts
15
+ puts `rabbitmqctl list_vhosts`
16
+ end
17
+
18
+ def queues(param=nil,name=nil)
19
+ if param == "new"
20
+ return halt("new <name>") unless name
21
+ BugsBunny::Record.create(name)
22
+ return halt
23
+ end
24
+ qs = BugsBunny::Record.all
25
+ unless param
26
+ print_table "Queues", qs.sort_by { |r| r.msgs }
27
+ else
28
+ qs.each(&:"#{param}")
29
+ end
30
+ halt
31
+ end
32
+
33
+ def queue(q, action="info", *params)
34
+ rec = BugsBunny::Record.new(q)
35
+ if rec.respond_to?(action)
36
+ rec.send(action, *params)
37
+ else
38
+ puts "No such action for queues."
39
+ halt
40
+ end
41
+ end
42
+
43
+ def exchanges
44
+ print_table "Queues", @mq.exchanges
45
+ end
46
+
47
+ def print_table(title, arr)
48
+ return if arr.empty?
49
+ puts title
50
+ arr.each do |q|
51
+ puts q
52
+ end
53
+ end
54
+
55
+ def halt(msg=nil)
56
+ BugsBunny::Rabbit.halt(msg)
57
+ end
58
+
59
+ def self.halt(msg=nil)
60
+ puts msg if msg
61
+ MQ.queues{ |q| q.unsubscribe }
62
+ AMQP.stop { EM.stop }
63
+ #EM.stop_event_loop
64
+ #exit
65
+ end
66
+
67
+ trap("INT") { halt }
68
+ trap("TERM") { halt }
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,7 @@
1
+ :vhost: /nanite
2
+ :host: localhost
3
+ :port: 5672
4
+ :user: mapper
5
+ :pass: testing
6
+ :timeout: 5
7
+ :logging: false
@@ -0,0 +1,114 @@
1
+ module BugsBunny
2
+ class Record
3
+ attr_reader :name, :msgs, :users
4
+ @records = []
5
+
6
+ def self.all
7
+ # possible with amqp?
8
+ `rabbitmqctl list_queues -p #{Opt[:rabbit][:vhost]} name durable auto_delete arguments node messages_ready messages_unacknowledged messages_uncommitted messages consumers transactions memory`.split("\n").each do |l|
9
+ next if l =~ /Listing|\.\./
10
+ @records << BugsBunny::Record.new(*l.split("\t"))
11
+ end
12
+ @records
13
+ end
14
+
15
+ def self.create(name)
16
+ MQ.queue(name).status do |msg, users|
17
+ puts "#{msg} messages, #{users} consumers."
18
+ end
19
+ end
20
+
21
+ def initialize(*params)
22
+ @name, d, a,_,_,@msgs,_,_,@users, @transactions, @mem = *params
23
+ @durable = eval(d) if d #ugly
24
+ @auto_delete = eval(a) if a #more ugly
25
+ @mq = MQ.queue(@name, :passive => true)
26
+ end
27
+
28
+ def info
29
+ puts "About #{@name}"
30
+ @mq.status do |msg, users|
31
+ puts "#{msg} messages, #{users} consumers."
32
+ end
33
+ halt
34
+ end
35
+
36
+ def list
37
+ inspect
38
+ EM.add_timer(1) { halt }
39
+ end
40
+
41
+ def inspect
42
+ puts ""
43
+ @mq.subscribe(:ack => true) do |h, body| #, :nowait => false
44
+ puts "-------\n"
45
+ print "QUEUE #{h.delivery_tag} (#{h.content_type}): "
46
+ print "Redelivered " if h.redelivered
47
+ puts "Mode #{h.delivery_mode}"
48
+ puts "Consumer: #{h.consumer_tag} Exchange: #{h.exchange}"
49
+ txt = read(body)
50
+ puts "\nBody:"
51
+ puts txt
52
+ puts
53
+ end
54
+ end
55
+ alias :live :inspect
56
+
57
+ def add(txt)
58
+ @mq.publish(txt)
59
+ halt
60
+ end
61
+ alias :publish :add
62
+
63
+ def pop
64
+ @mq.pop do |h, b|
65
+ puts "Pop => #{h}\n Body => #{b}" if b
66
+ halt
67
+ end
68
+ end
69
+ alias :get :pop
70
+
71
+ def purge
72
+ print "Purging #{name}... "
73
+ @mq.purge
74
+ print "Done.\n"
75
+ halt
76
+ end
77
+ alias :clean :purge
78
+
79
+ def delete
80
+ @mq.delete #:if_empty, if_unused, :no_wait
81
+ halt
82
+ end
83
+
84
+ def to_s
85
+ "#{@name} #{durable}: #{@msgs} messages"
86
+ end
87
+
88
+ def <=>(other)
89
+ @name <=> other.name
90
+ end
91
+
92
+ private
93
+
94
+ def read(dump, mode=:marshal)
95
+ case mode
96
+ when :marshal then Marshal.load(dump)
97
+ when :json then JSON.load(dump)
98
+ else dump
99
+ end
100
+ rescue
101
+ dump
102
+ end
103
+
104
+ def durable
105
+ @durable ? "Durable" : "Volatile"
106
+ end
107
+
108
+ def halt
109
+ BugsBunny::Rabbit.halt
110
+ end
111
+
112
+ end
113
+
114
+ end
data/lib/bugs_bunny.rb ADDED
@@ -0,0 +1,17 @@
1
+ #
2
+ # O que que ha, velhinho?
3
+ #
4
+ begin
5
+ require "nanite"
6
+ rescue LoadError
7
+ require "amqp"
8
+ require "mq"
9
+ end
10
+
11
+ module BugsBunny
12
+ Opt = {:verbose => false, :force => false, :rabbit => {}}
13
+ end
14
+
15
+ require "bugs_bunny/cli"
16
+ require "bugs_bunny/rabbit"
17
+ require "bugs_bunny/record"
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ describe BugsBunny::CLI do
4
+
5
+ it "should call itself it has the method" do
6
+ File.should_receive(:exists?).with("config/").and_return(false)
7
+ File.should_receive(:exists?).with("./rabbitmq.yml").and_return(false)
8
+ File.should_receive(:copy).and_return(true)
9
+ BugsBunny::CLI.new(["config"])
10
+ end
11
+
12
+ it "should not overwrite config file" do
13
+ File.should_receive(:exists?).with("config/").and_return(false)
14
+ File.should_receive(:exists?).with("./rabbitmq.yml").and_return(true)
15
+ File.should_not_receive(:copy)
16
+ BugsBunny::CLI.new(["config"])
17
+ end
18
+
19
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ describe BugsBunny::Rabbit do
4
+
5
+ it "should find vhosts" do
6
+ @rb = BugsBunny::Rabbit.new
7
+ @rb.should_receive(:"`").with("rabbitmqctl list_vhosts").and_return("foo")
8
+ @rb.should_receive(:halt)
9
+ @rb.vhosts
10
+ end
11
+
12
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "BugsBunny" do
4
+ it "should work" do
5
+ end
6
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rubygems'
4
+ require 'bugs_bunny'
5
+ require 'spec'
6
+ require 'spec/autorun'
7
+
8
+ Spec::Runner.configure do |config|
9
+
10
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bugs_bunny
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 7
9
+ version: 0.0.7
10
+ platform: ruby
11
+ authors:
12
+ - Marcos Piccinini
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-03-03 00:00:00 -03:00
18
+ default_executable: bbunny
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: amqp
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 6
30
+ - 7
31
+ version: 0.6.7
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rspec
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 2
44
+ - 9
45
+ version: 1.2.9
46
+ type: :development
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: cucumber
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ type: :development
59
+ version_requirements: *id003
60
+ description: Play/Manage RabbitMQ. Vhosts, queues.
61
+ email: x@nofxx.com
62
+ executables:
63
+ - bbunny
64
+ extensions: []
65
+
66
+ extra_rdoc_files:
67
+ - LICENSE
68
+ - README.rdoc
69
+ files:
70
+ - .document
71
+ - .gitignore
72
+ - LICENSE
73
+ - README.rdoc
74
+ - Rakefile
75
+ - VERSION
76
+ - bin/bbunny
77
+ - bugs_bunny.gemspec
78
+ - cucumber.yml
79
+ - features/bugs_bunny.feature
80
+ - features/queues.feature
81
+ - features/step_definitions/bugs_bunny_steps.rb
82
+ - features/step_definitions/queue_steps.rb
83
+ - features/support/env.rb
84
+ - lib/bugs_bunny.rb
85
+ - lib/bugs_bunny/cli.rb
86
+ - lib/bugs_bunny/rabbit.rb
87
+ - lib/bugs_bunny/rabbitmq.yml
88
+ - lib/bugs_bunny/record.rb
89
+ - spec/bugs_bunny/cli_spec.rb
90
+ - spec/bugs_bunny/rabbit_spec.rb
91
+ - spec/bugs_bunny_spec.rb
92
+ - spec/spec.opts
93
+ - spec/spec_helper.rb
94
+ has_rdoc: true
95
+ homepage: http://github.com/nofxx/bugs_bunny
96
+ licenses: []
97
+
98
+ post_install_message:
99
+ rdoc_options:
100
+ - --charset=UTF-8
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ segments:
108
+ - 0
109
+ version: "0"
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ requirements: []
118
+
119
+ rubyforge_project:
120
+ rubygems_version: 1.3.6
121
+ signing_key:
122
+ specification_version: 3
123
+ summary: Play/Manage RabbitMQ
124
+ test_files:
125
+ - spec/bugs_bunny/cli_spec.rb
126
+ - spec/bugs_bunny/rabbit_spec.rb
127
+ - spec/bugs_bunny_spec.rb
128
+ - spec/spec_helper.rb