my_queues 0.0.3

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.
@@ -0,0 +1,2 @@
1
+ require "my_queues/my_sqs.rb"
2
+ require "my_queues/mock_sqs.rb"
@@ -0,0 +1,33 @@
1
+
2
+ class MockSQS
3
+ def initialize
4
+ @queues={}
5
+ end
6
+ def safe_ruby_string text
7
+ return "'"+text.to_s.gsub(/[']/, '\\\\\'')+"'"
8
+ end
9
+ def send_message(queue_name,message)
10
+ queue = @queues[queue_name]
11
+ if !queue
12
+ queue=[]
13
+ @queues[queue_name]=queue
14
+ end
15
+
16
+ queue<<message
17
+
18
+ end
19
+ def recieve_message(queue_name)
20
+ queue = @queues[queue_name]
21
+ return nil if !queue
22
+ return nil if queue.length==0
23
+ queue.shift
24
+ end
25
+
26
+ def drain(queue_name)
27
+ queue = @queues[queue_name]
28
+ return [] if !queue
29
+ @queues[queue_name]=[]
30
+ return queue
31
+ end
32
+
33
+ end
@@ -0,0 +1,90 @@
1
+
2
+ require 'rubygems'
3
+ require 'sqs'
4
+ require 'cgi'
5
+
6
+
7
+ class MySQS
8
+ def initialize(access_key_id,secret_access_key)
9
+ SQS.access_key_id = access_key_id
10
+ SQS.secret_access_key = secret_access_key
11
+
12
+ end
13
+
14
+ def safe_ruby_string text
15
+ return "'"+text.to_s.gsub(/[']/, '\\\\\'')+"'"
16
+ end
17
+
18
+
19
+ def send_message(queue_name,message)
20
+ queue = SQS.create_queue queue_name
21
+ message=CGI.escape(message)
22
+ 16.times do |i|
23
+ begin
24
+ queue.send_message(message)
25
+ return
26
+ rescue => e
27
+ s= "#{e.message}\n#{e.backtrace}"
28
+ puts(s)#TODO log WARN to file
29
+ sleep(i*i)
30
+ end
31
+ end
32
+ # #TODO log ERROR to file
33
+ end
34
+
35
+
36
+ def recieve_message(queue_name)
37
+ queue = SQS.get_queue queue_name
38
+ message=nil
39
+
40
+ 4.times do |i|
41
+ begin
42
+ message=queue.receive_message
43
+
44
+ rescue => e
45
+ s= "#{e.message}\n#{e.backtrace}"
46
+ puts(s)#TODO log WARN to file
47
+
48
+ sleep(i*i)
49
+ end
50
+ end
51
+ if block_given?
52
+
53
+ begin
54
+ yield message
55
+ ensure
56
+ message.delete if message
57
+ end
58
+ return message
59
+ else
60
+ if message
61
+ message.delete
62
+
63
+ if message.body and message.body.length>0 and !message.body.index("undefined")
64
+ return CGI.unescape( message.body)
65
+ end
66
+
67
+
68
+ end
69
+
70
+
71
+ return nil
72
+ end
73
+ end
74
+
75
+ def drain(queue_name)
76
+ result=[]
77
+ SQS.create_queue queue_name
78
+ while true
79
+ message=recieve_message(queue_name)
80
+ if message
81
+ result<<message
82
+ else
83
+ return result
84
+ end
85
+ end
86
+ end
87
+
88
+ end
89
+
90
+
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: my_queues
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - David Knight
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-10-07 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: my queues.
17
+ email: knight@example.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/my_queues.rb
26
+ - lib/my_queues/my_sqs.rb
27
+ - lib/my_queues/mock_sqs.rb
28
+ has_rdoc: false
29
+ homepage: http://www.yahoo.com/
30
+ post_install_message:
31
+ rdoc_options: []
32
+
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: "0"
40
+ version:
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ requirements: []
48
+
49
+ rubyforge_project:
50
+ rubygems_version: 1.3.1
51
+ signing_key:
52
+ specification_version: 2
53
+ summary: my queues.
54
+ test_files: []
55
+