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 +1 -1
- data/VERSION +1 -1
- data/gateway.gemspec +80 -0
- data/lib/gateway/connection.rb +4 -4
- data/lib/gateway/feature/categorize_error.rb +9 -3
- metadata +18 -17
    
        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. | 
| 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 | 
            +
             | 
    
        data/lib/gateway/connection.rb
    CHANGED
    
    | @@ -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[ | 
| 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[ | 
| 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 = [ | 
| 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. | 
| 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- | 
| 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: & | 
| 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: * | 
| 24 | 
            +
              version_requirements: *23019720
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: resource_pool
         | 
| 27 | 
            -
              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: * | 
| 35 | 
            +
              version_requirements: *23018980
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: rspec
         | 
| 38 | 
            -
              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: * | 
| 46 | 
            +
              version_requirements: *23018260
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: yard
         | 
| 49 | 
            -
              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: * | 
| 57 | 
            +
              version_requirements: *23017220
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 59 | 
             
              name: rdoc
         | 
| 60 | 
            -
              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: * | 
| 68 | 
            +
              version_requirements: *23223600
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: bundler
         | 
| 71 | 
            -
              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: * | 
| 79 | 
            +
              version_requirements: *23222780
         | 
| 80 80 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 81 81 | 
             
              name: jeweler
         | 
| 82 | 
            -
              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: * | 
| 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:  | 
| 137 | 
            +
                  hash: 2883031289756242094
         | 
| 137 138 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 138 139 | 
             
              none: false
         | 
| 139 140 | 
             
              requirements:
         |