pinky 0.2.11-java → 0.3.0-java

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/Gemfile CHANGED
@@ -7,14 +7,8 @@ source "http://rubygems.org"
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
 
9
9
  gem 'httparty'
10
- gem 'uuid', '2.3.6'
11
10
  gem 'json'
12
11
 
13
- platform :jruby do
14
- # energizer
15
- gem 'hot_bunnies'
16
- end
17
-
18
12
  group :test, :development do
19
13
  #gem 'fakeweb'
20
14
  gem 'timecop'
data/Gemfile.lock CHANGED
@@ -3,7 +3,6 @@ GEM
3
3
  specs:
4
4
  diff-lcs (1.1.3)
5
5
  git (1.2.5)
6
- hot_bunnies (1.3.8-java)
7
6
  httparty (0.9.0)
8
7
  multi_json (~> 1.0)
9
8
  multi_xml
@@ -14,8 +13,6 @@ GEM
14
13
  rdoc
15
14
  json (1.7.5)
16
15
  json (1.7.5-java)
17
- macaddr (1.6.1)
18
- systemu (~> 2.5.0)
19
16
  multi_json (1.3.6)
20
17
  multi_xml (0.5.1)
21
18
  rake (0.9.2.2)
@@ -29,10 +26,7 @@ GEM
29
26
  rspec-expectations (2.11.3)
30
27
  diff-lcs (~> 1.1.3)
31
28
  rspec-mocks (2.11.3)
32
- systemu (2.5.2)
33
29
  timecop (0.5.2)
34
- uuid (2.3.6)
35
- macaddr (~> 1.0)
36
30
 
37
31
  PLATFORMS
38
32
  java
@@ -40,11 +34,9 @@ PLATFORMS
40
34
 
41
35
  DEPENDENCIES
42
36
  bundler (> 1.0.0)
43
- hot_bunnies
44
37
  httparty
45
38
  jeweler (~> 1.8.4)
46
39
  json
47
40
  rdoc (~> 3.12)
48
41
  rspec (>= 2.11.0)
49
42
  timecop
50
- uuid (= 2.3.6)
@@ -1,7 +1,7 @@
1
1
  module Pinky
2
- class NotFoundException < Exception
2
+ class NotFoundException < StandardError
3
3
  end
4
4
 
5
- class TooManyFoundException < Exception
5
+ class TooManyFoundException < StandardError
6
6
  end
7
7
  end
data/lib/pinky.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'json'
2
2
  require 'httparty'
3
3
  require 'date'
4
+ require 'uuid'
4
5
 
5
6
  require 'hot_bunnies'
6
7
 
data/pinky.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "pinky"
8
- s.version = "0.2.11"
8
+ s.version = "0.3.0"
9
9
  s.platform = "java"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
@@ -29,8 +29,6 @@ Gem::Specification.new do |s|
29
29
  "lib/pinky.rb",
30
30
  "lib/pinky/associations.rb",
31
31
  "lib/pinky/cache.rb",
32
- "lib/pinky/energizer_bunny/connection.rb",
33
- "lib/pinky/energizer_bunny/subscription.rb",
34
32
  "lib/pinky/exceptions.rb",
35
33
  "lib/pinky/has_caches.rb",
36
34
  "lib/pinky/model.rb",
@@ -54,9 +52,7 @@ Gem::Specification.new do |s|
54
52
 
55
53
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
54
  s.add_runtime_dependency(%q<httparty>, [">= 0"])
57
- s.add_runtime_dependency(%q<uuid>, ["= 2.3.6"])
58
55
  s.add_runtime_dependency(%q<json>, [">= 0"])
59
- s.add_runtime_dependency(%q<hot_bunnies>, [">= 0"])
60
56
  s.add_development_dependency(%q<timecop>, [">= 0"])
61
57
  s.add_development_dependency(%q<rspec>, [">= 2.11.0"])
62
58
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
@@ -64,9 +60,7 @@ Gem::Specification.new do |s|
64
60
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
65
61
  else
66
62
  s.add_dependency(%q<httparty>, [">= 0"])
67
- s.add_dependency(%q<uuid>, ["= 2.3.6"])
68
63
  s.add_dependency(%q<json>, [">= 0"])
69
- s.add_dependency(%q<hot_bunnies>, [">= 0"])
70
64
  s.add_dependency(%q<timecop>, [">= 0"])
71
65
  s.add_dependency(%q<rspec>, [">= 2.11.0"])
72
66
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
@@ -75,9 +69,7 @@ Gem::Specification.new do |s|
75
69
  end
76
70
  else
77
71
  s.add_dependency(%q<httparty>, [">= 0"])
78
- s.add_dependency(%q<uuid>, ["= 2.3.6"])
79
72
  s.add_dependency(%q<json>, [">= 0"])
80
- s.add_dependency(%q<hot_bunnies>, [">= 0"])
81
73
  s.add_dependency(%q<timecop>, [">= 0"])
82
74
  s.add_dependency(%q<rspec>, [">= 2.11.0"])
83
75
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: pinky
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.11
5
+ version: 0.3.0
6
6
  platform: java
7
7
  authors:
8
8
  - Joel Friedman
@@ -29,22 +29,6 @@ dependencies:
29
29
  none: false
30
30
  prerelease: false
31
31
  type: :runtime
32
- - !ruby/object:Gem::Dependency
33
- name: uuid
34
- version_requirements: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - '='
37
- - !ruby/object:Gem::Version
38
- version: 2.3.6
39
- none: false
40
- requirement: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - '='
43
- - !ruby/object:Gem::Version
44
- version: 2.3.6
45
- none: false
46
- prerelease: false
47
- type: :runtime
48
32
  - !ruby/object:Gem::Dependency
49
33
  name: json
50
34
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,24 +47,6 @@ dependencies:
63
47
  none: false
64
48
  prerelease: false
65
49
  type: :runtime
66
- - !ruby/object:Gem::Dependency
67
- name: hot_bunnies
68
- version_requirements: !ruby/object:Gem::Requirement
69
- requirements:
70
- - - ! '>='
71
- - !ruby/object:Gem::Version
72
- version: !binary |-
73
- MA==
74
- none: false
75
- requirement: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - ! '>='
78
- - !ruby/object:Gem::Version
79
- version: !binary |-
80
- MA==
81
- none: false
82
- prerelease: false
83
- type: :runtime
84
50
  - !ruby/object:Gem::Dependency
85
51
  name: timecop
86
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -184,8 +150,6 @@ files:
184
150
  - lib/pinky.rb
185
151
  - lib/pinky/associations.rb
186
152
  - lib/pinky/cache.rb
187
- - lib/pinky/energizer_bunny/connection.rb
188
- - lib/pinky/energizer_bunny/subscription.rb
189
153
  - lib/pinky/exceptions.rb
190
154
  - lib/pinky/has_caches.rb
191
155
  - lib/pinky/model.rb
@@ -210,9 +174,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
174
  - !ruby/object:Gem::Version
211
175
  version: !binary |-
212
176
  MA==
213
- segments:
214
- - 0
215
- hash: 2
216
177
  none: false
217
178
  required_rubygems_version: !ruby/object:Gem::Requirement
218
179
  requirements:
@@ -1,94 +0,0 @@
1
- require File.expand_path('../subscription', __FILE__)
2
-
3
- module Pinky
4
- module EnergizerBunny
5
- class Connection
6
-
7
- def initialize config, logger = Rails.logger
8
- @config = config
9
- @logger = logger
10
- return unless enabled?
11
- at_exit { close }
12
- @exchanges = Hash.new { |exchanges, topic_key| exchanges[topic_key] = create_exchange topic_key }
13
- @queues = Hash.new { |queues, topic_key| queues[topic_key] = create_queue topic_key }
14
- @subscriptions = []
15
- create_connection
16
- end
17
-
18
- def subscribe topic_key, subscription_opts = {}, &block
19
- return unless enabled?
20
- @subscriptions << Subscription.new(@queues[topic_key], subscription_opts, @logger, block)
21
- end
22
-
23
- def publish topic_key, message, opts = {}
24
- add_message_id_to_header! opts
25
- @exchanges[topic_key].publish message, opts if enabled?
26
- end
27
-
28
- def connected?
29
- @connection && @connection.open?
30
- end
31
-
32
- def enabled?
33
- @config[:enabled]
34
- end
35
-
36
- def connection_url
37
- @config[:broker][:url]
38
- end
39
-
40
- private
41
- def create_exchange topic_key
42
- exchange_hash = @config[:exchanges][topic_key]
43
- channel.exchange exchange_hash[:name], exchange_hash[:opts]
44
- end
45
-
46
- def create_connection
47
- url = connection_url
48
- raise Exception.new('Please set a broker url for RabbitMQ') if enabled? && url.nil?
49
- @logger.info "Connecting bunny to: #{url}"
50
- @connection = HotBunnies.connect :uri => url
51
- end
52
-
53
- #TODO: is having one channel bad, should this be one per exchange?
54
- def channel
55
- @channel ||= @connection.create_channel.tap { |c| c.prefetch = (@config.delete(:prefetch_count) || 1) }
56
- end
57
-
58
- def create_queue topic_key
59
- queue_hash = @config[:queues][topic_key]
60
- raise Exception.new("Cannot find queue configuration for queue: #{topic_key}") if queue_hash.nil?
61
- queue_opts = queue_hash[:opts]
62
- queue_opts[:durable] = true unless queue_opts.key? :durable
63
- channel.queue(queue_hash[:name], queue_opts).tap do |queue|
64
- queue_bind_opts = queue_hash[:bind_opts] || {}
65
- Array(queue_hash[:bindings]).each do |binding|
66
- binding_opts = queue_bind_opts.merge(binding[:binding_opts] || {})
67
- queue.bind @exchanges[binding[:exchange_topic_key]], binding_opts
68
- end
69
- end
70
- end
71
-
72
- def close
73
- @logger.info 'Closing rabbit connection'
74
- @subscriptions.each &:close
75
- return unless connected?
76
- if @channel
77
- @channel.close
78
- @channel = nil
79
- end
80
- @connection.close
81
- @connection = nil
82
- end
83
-
84
- def add_message_id_to_header!(opts)
85
- opts[:headers] ||= {}
86
- opts[:headers]['message_id'] ||= guid_generator.generate
87
- end
88
-
89
- def guid_generator
90
- @guid_generator ||= UUID.new
91
- end
92
- end
93
- end
94
- end
@@ -1,54 +0,0 @@
1
- module Pinky
2
- module EnergizerBunny
3
- class Subscription
4
- import java.util.concurrent.Executors
5
-
6
- def initialize queue, subscription_opts, logger, handle_message
7
- @queue, @subscription_opts, @logger, @handle_message = queue, subscription_opts.dup, logger, handle_message
8
- @reraise_errors = @subscription_opts.delete(:reraise_errors)
9
- @subscription_opts[:executor] = executor unless @subscription_opts[:executor]
10
- listen!
11
- end
12
-
13
- def close
14
- close_executor
15
- return if @subscription.nil?
16
- @subscription.shutdown!
17
- @subscription = nil
18
- end
19
-
20
- private
21
- def listen!
22
- @subscription = @queue.subscribe(@subscription_opts) do |headers, msg|
23
- begin
24
- @handle_message.call headers.properties.headers, msg
25
- headers.ack
26
- rescue => e
27
- @logger.error "!!!Error handling message: #{e.message}"
28
- headers.reject
29
- raise if @reraise_errors
30
- end
31
- end
32
- self
33
- end
34
-
35
- def log_error e
36
- @logger.error "An error has occured on another thread: #{e}#{$/}#{e.backtrace}"
37
- end
38
-
39
- def thread_pool_size
40
- @thread_pool_size ||= (@subscription_opts.delete(:thread_pool_size) || 1)
41
- end
42
-
43
- def executor
44
- @executor ||= Executors.new_fixed_thread_pool(thread_pool_size)
45
- end
46
-
47
- def close_executor
48
- return unless @executor
49
- @executor.shutdown_now
50
- @executor = nil
51
- end
52
- end
53
- end
54
- end