drano 0.1

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