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.
Files changed (6) hide show
  1. data/LICENSE +3 -0
  2. data/README.mkd +18 -0
  3. data/bin/drano +37 -0
  4. data/lib/drano.rb +4 -0
  5. data/lib/drano/queue.rb +22 -0
  6. metadata +83 -0
data/LICENSE ADDED
@@ -0,0 +1,3 @@
1
+ Copyright 2011 Rémi Prévost.
2
+ You may use this work without restrictions, as long as this notice is included.
3
+ The work is provided "as is" without warranty of any kind, neither express nor implied.
@@ -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.
@@ -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
@@ -0,0 +1,4 @@
1
+ module Drano
2
+ VERSION = '0.1'
3
+ autoload :Queue, "drano/queue"
4
+ end
@@ -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
+