gateway 0.1.0 → 0.1.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.
data/README.rdoc CHANGED
@@ -10,7 +10,7 @@ This gem provides a `Gateway::Base` class for other connection types to be built
10
10
  * Automatic retry
11
11
  * performance logging
12
12
  * Newrelic instrumentation. ( If newrelic is loaded. )
13
-
13
+ * Designed specifically for multi-threaded usage and is completely thread safe.
14
14
 
15
15
  == Contributing to gateway
16
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/gateway.gemspec ADDED
@@ -0,0 +1,80 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "gateway"
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Aaron Qian"]
12
+ s.date = "2012-02-15"
13
+ s.description = " Opinionated Generic IO Connection Manager "
14
+ s.email = "aq1018@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "gateway.gemspec",
28
+ "lib/gateway.rb",
29
+ "lib/gateway/base.rb",
30
+ "lib/gateway/connection.rb",
31
+ "lib/gateway/connection/pool.rb",
32
+ "lib/gateway/connection/single.rb",
33
+ "lib/gateway/connection/thread_local.rb",
34
+ "lib/gateway/errors.rb",
35
+ "lib/gateway/feature/categorize_error.rb",
36
+ "lib/gateway/feature/error_handle.rb",
37
+ "lib/gateway/feature/new_relic.rb",
38
+ "lib/gateway/feature/performance.rb",
39
+ "lib/gateway/feature/retry.rb",
40
+ "lib/gateway/feature/timeout.rb",
41
+ "spec/gateway_spec.rb",
42
+ "spec/spec_helper.rb"
43
+ ]
44
+ s.homepage = "http://github.com/aq1018/gateway"
45
+ s.licenses = ["MIT"]
46
+ s.require_paths = ["lib"]
47
+ s.rubygems_version = "1.8.10"
48
+ s.summary = "Opinionated Generic IO Connection Manager"
49
+
50
+ if s.respond_to? :specification_version then
51
+ s.specification_version = 3
52
+
53
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
+ s.add_runtime_dependency(%q<activesupport>, ["~> 3.0"])
55
+ s.add_runtime_dependency(%q<resource_pool>, [">= 0.2.0"])
56
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
57
+ s.add_development_dependency(%q<yard>, ["~> 0.7"])
58
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
59
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
60
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
61
+ else
62
+ s.add_dependency(%q<activesupport>, ["~> 3.0"])
63
+ s.add_dependency(%q<resource_pool>, [">= 0.2.0"])
64
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
65
+ s.add_dependency(%q<yard>, ["~> 0.7"])
66
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
67
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
68
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
69
+ end
70
+ else
71
+ s.add_dependency(%q<activesupport>, ["~> 3.0"])
72
+ s.add_dependency(%q<resource_pool>, [">= 0.2.0"])
73
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
74
+ s.add_dependency(%q<yard>, ["~> 0.7"])
75
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
76
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
77
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
78
+ end
79
+ end
80
+
@@ -4,6 +4,10 @@ module Gateway
4
4
  include ThreadLocal
5
5
  include Pool
6
6
 
7
+ def purge_current_connection!
8
+ send "purge_current_connection_from_#{connection_type}!"
9
+ end
10
+
7
11
  protected
8
12
 
9
13
  def connect
@@ -18,10 +22,6 @@ module Gateway
18
22
  raise "Abstract Method"
19
23
  end
20
24
 
21
- def purge_current_connection!
22
- send "purge_current_connection_from_#{connection_type}!"
23
- end
24
-
25
25
  def connection_type
26
26
  @connection_type ||= (options[:connection_type] || :thread_local)
27
27
  end
@@ -14,24 +14,27 @@ module Gateway
14
14
  protected
15
15
 
16
16
  def errors_for(action, error_category)
17
+ action = action.to_s
17
18
  cat = self.error_catalog[error_category]
18
19
  return [] if cat.blank?
19
20
 
20
21
  errors = cat[action] ? cat[action][:errors] : []
21
- default_errors = cat[:all][:errors] || []
22
+ default_errors = cat['all'][:errors] || []
22
23
  errors + default_errors
23
24
  end
24
25
 
25
26
  def error_callbacks_for(action, error_category)
27
+ action = action.to_s
26
28
  cat = self.error_catalog[error_category]
27
29
  return [] if cat.blank?
28
30
 
29
31
  lambdas = cat[action] ? cat[action][:lambdas] : []
30
- default_lambdas = cat[:all][:lambdas] || []
32
+ default_lambdas = cat['all'][:lambdas] || []
31
33
  lambdas + default_lambdas
32
34
  end
33
35
 
34
36
  def run_callbacks_for(action, error_category)
37
+ action = action.to_s
35
38
  error_callbacks_for(action, error_category).each do |cb|
36
39
  cb.call self
37
40
  end
@@ -63,7 +66,10 @@ module Gateway
63
66
  errors = params.flatten
64
67
 
65
68
  actions = [opt[:for]].flatten.compact
66
- actions = [:all] if actions.blank?
69
+ actions = ['all'] if actions.blank?
70
+
71
+ # convert actions to string
72
+ actions.map!{ |action| action.to_s }
67
73
 
68
74
  categories = [opt[:as]].flatten.compact
69
75
  categories = error_categories if categories.blank?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gateway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-10 00:00:00.000000000 Z
12
+ date: 2012-02-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &20040260 !ruby/object:Gem::Requirement
16
+ requirement: &23019720 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20040260
24
+ version_requirements: *23019720
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: resource_pool
27
- requirement: &20039500 !ruby/object:Gem::Requirement
27
+ requirement: &23018980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *20039500
35
+ version_requirements: *23018980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &20038340 !ruby/object:Gem::Requirement
38
+ requirement: &23018260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.8.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *20038340
46
+ version_requirements: *23018260
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &20037640 !ruby/object:Gem::Requirement
49
+ requirement: &23017220 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0.7'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *20037640
57
+ version_requirements: *23017220
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rdoc
60
- requirement: &20037020 !ruby/object:Gem::Requirement
60
+ requirement: &23223600 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '3.12'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *20037020
68
+ version_requirements: *23223600
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &20036340 !ruby/object:Gem::Requirement
71
+ requirement: &23222780 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.0.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *20036340
79
+ version_requirements: *23222780
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &20035680 !ruby/object:Gem::Requirement
82
+ requirement: &23221940 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: 1.8.3
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *20035680
90
+ version_requirements: *23221940
91
91
  description: ! ' Opinionated Generic IO Connection Manager '
92
92
  email: aq1018@gmail.com
93
93
  executables: []
@@ -103,6 +103,7 @@ files:
103
103
  - README.rdoc
104
104
  - Rakefile
105
105
  - VERSION
106
+ - gateway.gemspec
106
107
  - lib/gateway.rb
107
108
  - lib/gateway/base.rb
108
109
  - lib/gateway/connection.rb
@@ -133,7 +134,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
134
  version: '0'
134
135
  segments:
135
136
  - 0
136
- hash: -1877491257505437583
137
+ hash: 2883031289756242094
137
138
  required_rubygems_version: !ruby/object:Gem::Requirement
138
139
  none: false
139
140
  requirements: