pinky 0.2.11-java → 0.3.0-java

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