drano 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/LICENSE +3 -0
- data/README.mkd +18 -0
- data/bin/drano +37 -0
- data/lib/drano.rb +4 -0
- data/lib/drano/queue.rb +22 -0
- metadata +83 -0
data/LICENSE
ADDED
data/README.mkd
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Drano
|
2
|
+
|
3
|
+
Drano is a queue cleaner for SQS. It connects to a queue as a worker, and then prints each message. Nothing else.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
$ gem install drano
|
8
|
+
$ drano --access-key=<AWS_ACCESS_KEY> --secret-key=<AWS_SECRET_KEY> --queue=myawesomequeue
|
9
|
+
|
10
|
+
## Options
|
11
|
+
|
12
|
+
* `--access-key` sets the AWS access key.
|
13
|
+
* `--secret-key` sets the AWS secret key.
|
14
|
+
* `--queue` sets the SQS queue name to use (not the whole URL, just the queue name).
|
15
|
+
|
16
|
+
## License
|
17
|
+
|
18
|
+
Drano is © 2011 Rémi Prévost and may be freely distributed under the [LITL license](http://litl.info/). See the `LICENSE` file.
|
data/bin/drano
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
4
|
+
|
5
|
+
def bail(msg); puts "[Drano] #{msg}"; exit 1; end
|
6
|
+
|
7
|
+
require 'rubygems'
|
8
|
+
require 'drano'
|
9
|
+
require 'optparse'
|
10
|
+
|
11
|
+
options = {}
|
12
|
+
opts = OptionParser.new do |opts|
|
13
|
+
opts.banner = "Usage: drano <options>
|
14
|
+
|
15
|
+
Options:
|
16
|
+
"
|
17
|
+
opts.on("--access-key [ACCESS_KEY]", "Set the AWS access key") do |access_key|
|
18
|
+
options[:access_key] = access_key
|
19
|
+
end
|
20
|
+
|
21
|
+
opts.on("--secret-key [SECRET_KEY]", "Set the AWS secret key") do |secret_key|
|
22
|
+
options[:secret_key] = secret_key
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on("--queue [QUEUE]", "Set the SQS queue name to print") do |queue|
|
26
|
+
options[:queue] = queue
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
opts.parse!
|
31
|
+
|
32
|
+
bail("You must specify an access key, a secret key and a queue.") unless %w{queue secret_key access_key}.map{ |option| options[option.to_sym] }.compact.count == 3
|
33
|
+
|
34
|
+
queue = Drano::Queue.new(:access_key => options[:access_key], :secret_key => options[:secret_key], :queue_name => options[:queue])
|
35
|
+
queue.poll do |message|
|
36
|
+
puts message.body.inspect
|
37
|
+
end
|
data/lib/drano.rb
ADDED
data/lib/drano/queue.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'aws-sdk'
|
2
|
+
|
3
|
+
module Drano
|
4
|
+
class Queue
|
5
|
+
|
6
|
+
def initialize(args={}) # {{{
|
7
|
+
@access_key = args[:access_key]
|
8
|
+
@secret_key = args[:secret_key]
|
9
|
+
@queue_name = args[:queue_name]
|
10
|
+
|
11
|
+
sqs = AWS::SQS.new :access_key_id => @access_key, :secret_access_key => @secret_key
|
12
|
+
@queue = sqs.queues.create(@queue_name)
|
13
|
+
end # }}}
|
14
|
+
|
15
|
+
def poll(&block) # {{{
|
16
|
+
@queue.poll do |message|
|
17
|
+
block.call(message)
|
18
|
+
end
|
19
|
+
end # }}}
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: drano
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: "0.1"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- "R\xC3\xA9mi Pr\xC3\xA9vost"
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-09-16 00:00:00 Z
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: aws-sdk
|
21
|
+
prerelease: false
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 29
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 0
|
31
|
+
- 5
|
32
|
+
version: 1.0.5
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
description: Drano is a queue cleaner for SQS. It connects to a queue as a worker, and then prints each message. Nothing else.
|
36
|
+
email: remi@exomel.com
|
37
|
+
executables:
|
38
|
+
- drano
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files: []
|
42
|
+
|
43
|
+
files:
|
44
|
+
- lib/drano/queue.rb
|
45
|
+
- lib/drano.rb
|
46
|
+
- README.mkd
|
47
|
+
- LICENSE
|
48
|
+
- bin/drano
|
49
|
+
homepage: http://github.com/remiprev/drano
|
50
|
+
licenses: []
|
51
|
+
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 3
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
requirements: []
|
76
|
+
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 1.8.6
|
79
|
+
signing_key:
|
80
|
+
specification_version: 3
|
81
|
+
summary: For the toughest clogged queues.
|
82
|
+
test_files: []
|
83
|
+
|