propono 0.8.0 → 0.8.2
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.
- checksums.yaml +5 -13
- data/CHANGELOG.md +8 -0
- data/lib/propono.rb +0 -4
- data/lib/propono/services/publisher.rb +7 -3
- data/lib/propono/version.rb +1 -1
- data/propono.gemspec +0 -1
- data/test/services/publisher_test.rb +11 -3
- metadata +11 -25
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
             | 
| 5 | 
            -
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                MGY0OTNiNDExMjk4M2U2OTk2NjNkNzNmNWViYzlhMGU5MTM0NjJjNA==
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: a38b1949af11e63f303a09478759c077f484d95d
         | 
| 4 | 
            +
              data.tar.gz: 7d937ce9d0e24a3e764705ed5d9f21203d094d28
         | 
| 7 5 | 
             
            SHA512:
         | 
| 8 | 
            -
              metadata.gz:  | 
| 9 | 
            -
             | 
| 10 | 
            -
                ZDc1MDg1NWZhYjM5YzE4MzUyMDgwOWRlM2ExOTVhNzBlMGE3MTk3MGNlYWFh
         | 
| 11 | 
            -
                ZGYwNWI1ZTg0OWVkNGE2YjZmM2M3ZTI1YjhiNTczMTYzNGNhMjQ=
         | 
| 12 | 
            -
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                YWI4ZDIxYzRjNGVkYzk3ZjdlZDBlNDZhOGMyMjg2MWY2ZTU1MDczOGM5NWRl
         | 
| 14 | 
            -
                NWIyZTZkOGNmYmI4MDFiODYwZTY5MTZhZDk0NzMwMjc0ZDJiNGZlNzMwOTli
         | 
| 15 | 
            -
                ZDcyMWQyNzhiMTZjMjZhZTJkNzk5NjYzYjA3ZjU2NDE5MGFhMDQ=
         | 
| 6 | 
            +
              metadata.gz: 21de4b1f7ea789868a848ae044ef43ec01dacf8869a3a89a1a33d9aab04a5ab3d6ce4a17aacf4c701262fa2a6b8bb605327c82d4294bd76ee2c7410165165e32
         | 
| 7 | 
            +
              data.tar.gz: c39b68a06d648db435b3811cba44a81811702f0aea2a87d8fa4f48d8864a047d400b34540fe7510105d7e7939313698fcd2db42f0ee5b84918f66b2402ee79cf
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,11 @@ | |
| 1 | 
            +
            # 0.8.2 / 2013-11-01
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * [BUGFIX] Replace thread library with standard ruby threads to fix Unicorn problems.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            # 0.8.1 / 2013-11-01
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            * [FEATURE] Log all messages published from Propono.
         | 
| 8 | 
            +
             | 
| 1 9 | 
             
            # 0.8.0 / 2013-11-01
         | 
| 2 10 |  | 
| 3 11 | 
             
            * [FEATURE] SNS publish now delegates to a thread pool. The SNS response can be accessed via a future.
         | 
    
        data/lib/propono.rb
    CHANGED
    
    | @@ -2,8 +2,6 @@ | |
| 2 2 | 
             
            #
         | 
| 3 3 | 
             
            # Propono is a pub/sub gem built on top of Amazon Web Services (AWS). It uses Simple Notification Service (SNS) and Simple Queue Service (SQS) to seamlessly pass messages throughout your infrastructure.
         | 
| 4 4 |  | 
| 5 | 
            -
            require "thread/pool"
         | 
| 6 | 
            -
             | 
| 7 5 | 
             
            require "propono/version"
         | 
| 8 6 | 
             
            require 'propono/propono_error'
         | 
| 9 7 | 
             
            require 'propono/logger'
         | 
| @@ -28,8 +26,6 @@ require "propono/services/tcp_listener" | |
| 28 26 | 
             
            # It uses Simple Notification Service (SNS) and Simple Queue Service (SQS)
         | 
| 29 27 | 
             
            # to seamlessly pass messages throughout your infrastructure.
         | 
| 30 28 | 
             
            module Propono
         | 
| 31 | 
            -
              
         | 
| 32 | 
            -
              WORKER_POOL = Thread.pool(4)
         | 
| 33 29 |  | 
| 34 30 | 
             
              # Propono configuration settings.
         | 
| 35 31 | 
             
              #
         | 
| @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            require 'socket'
         | 
| 2 | 
            -
            require 'thread/future'
         | 
| 3 2 |  | 
| 4 3 | 
             
            module Propono
         | 
| 5 4 | 
             
              class PublisherError < ProponoError
         | 
| @@ -24,6 +23,7 @@ module Propono | |
| 24 23 | 
             
                end
         | 
| 25 24 |  | 
| 26 25 | 
             
                def publish
         | 
| 26 | 
            +
                  Propono.config.logger.info "Propono: Publishing #{message} to #{topic_id} via #{protocol}"
         | 
| 27 27 | 
             
                  send("publish_via_#{protocol}")
         | 
| 28 28 | 
             
                end
         | 
| 29 29 |  | 
| @@ -32,8 +32,12 @@ module Propono | |
| 32 32 | 
             
                def publish_via_sns
         | 
| 33 33 | 
             
                  topic = TopicCreator.find_or_create(topic_id)
         | 
| 34 34 | 
             
                  msg = message.is_a?(String) ? message : message.to_json
         | 
| 35 | 
            -
                  Thread. | 
| 36 | 
            -
                     | 
| 35 | 
            +
                  Thread.new do
         | 
| 36 | 
            +
                    begin
         | 
| 37 | 
            +
                      sns.publish(topic.arn, msg)
         | 
| 38 | 
            +
                    rescue => e
         | 
| 39 | 
            +
                      Propono.config.logger.error "Propono failed to send via sns : #{e}"
         | 
| 40 | 
            +
                    end
         | 
| 37 41 | 
             
                  end
         | 
| 38 42 | 
             
                end
         | 
| 39 43 |  | 
    
        data/lib/propono/version.rb
    CHANGED
    
    
    
        data/propono.gemspec
    CHANGED
    
    
| @@ -25,6 +25,12 @@ module Propono | |
| 25 25 | 
             
                  assert_equal :sns, publisher.protocol
         | 
| 26 26 | 
             
                end
         | 
| 27 27 |  | 
| 28 | 
            +
                def test_publish_logs
         | 
| 29 | 
            +
                  client = Publisher.new("foo", "bar")
         | 
| 30 | 
            +
                  Propono.config.logger.expects(:info).with() {|x| x =~ /^Propono: Publishing bar to foo via sns.*/}
         | 
| 31 | 
            +
                  client.send(:publish)
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 28 34 | 
             
                def test_publish_proxies_to_sns
         | 
| 29 35 | 
             
                  publisher = Publisher.new('topic', 'message')
         | 
| 30 36 | 
             
                  publisher.expects(:publish_via_sns)
         | 
| @@ -49,7 +55,8 @@ module Propono | |
| 49 55 | 
             
                  sns.expects(:publish).with(topic_arn, message)
         | 
| 50 56 | 
             
                  publisher = Publisher.new(topic, message)
         | 
| 51 57 | 
             
                  publisher.stubs(sns: sns)
         | 
| 52 | 
            -
                   | 
| 58 | 
            +
                  thread = publisher.send(:publish_via_sns)
         | 
| 59 | 
            +
                  thread.join
         | 
| 53 60 | 
             
                end
         | 
| 54 61 |  | 
| 55 62 | 
             
                def test_publish_via_sns_should_accept_a_hash_for_message
         | 
| @@ -64,9 +71,10 @@ module Propono | |
| 64 71 | 
             
                  sns.expects(:publish).with(topic_arn, message.to_json)
         | 
| 65 72 | 
             
                  publisher = Publisher.new(topic, message)
         | 
| 66 73 | 
             
                  publisher.stubs(sns: sns)
         | 
| 67 | 
            -
                   | 
| 74 | 
            +
                  thread = publisher.send(:publish_via_sns)
         | 
| 75 | 
            +
                  thread.join
         | 
| 68 76 | 
             
                end
         | 
| 69 | 
            -
             | 
| 77 | 
            +
             | 
| 70 78 | 
             
                def test_publish_via_sns_should_return_future_of_the_sns_response
         | 
| 71 79 | 
             
                  topic = "topic123"
         | 
| 72 80 | 
             
                  message = "message123"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: propono
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.8. | 
| 4 | 
            +
              version: 0.8.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - MalcyL
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013-11- | 
| 12 | 
            +
            date: 2013-11-06 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: fog
         | 
| @@ -25,20 +25,6 @@ dependencies: | |
| 25 25 | 
             
                - - ~>
         | 
| 26 26 | 
             
                  - !ruby/object:Gem::Version
         | 
| 27 27 | 
             
                    version: 1.15.0
         | 
| 28 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 29 | 
            -
              name: thread
         | 
| 30 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 31 | 
            -
                requirements:
         | 
| 32 | 
            -
                - - ~>
         | 
| 33 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 34 | 
            -
                    version: 0.1.1
         | 
| 35 | 
            -
              type: :runtime
         | 
| 36 | 
            -
              prerelease: false
         | 
| 37 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 38 | 
            -
                requirements:
         | 
| 39 | 
            -
                - - ~>
         | 
| 40 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 41 | 
            -
                    version: 0.1.1
         | 
| 42 28 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 43 29 | 
             
              name: bundler
         | 
| 44 30 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -57,42 +43,42 @@ dependencies: | |
| 57 43 | 
             
              name: rake
         | 
| 58 44 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 59 45 | 
             
                requirements:
         | 
| 60 | 
            -
                - -  | 
| 46 | 
            +
                - - '>='
         | 
| 61 47 | 
             
                  - !ruby/object:Gem::Version
         | 
| 62 48 | 
             
                    version: '0'
         | 
| 63 49 | 
             
              type: :development
         | 
| 64 50 | 
             
              prerelease: false
         | 
| 65 51 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 66 52 | 
             
                requirements:
         | 
| 67 | 
            -
                - -  | 
| 53 | 
            +
                - - '>='
         | 
| 68 54 | 
             
                  - !ruby/object:Gem::Version
         | 
| 69 55 | 
             
                    version: '0'
         | 
| 70 56 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 71 57 | 
             
              name: mocha
         | 
| 72 58 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 73 59 | 
             
                requirements:
         | 
| 74 | 
            -
                - -  | 
| 60 | 
            +
                - - '>='
         | 
| 75 61 | 
             
                  - !ruby/object:Gem::Version
         | 
| 76 62 | 
             
                    version: '0'
         | 
| 77 63 | 
             
              type: :development
         | 
| 78 64 | 
             
              prerelease: false
         | 
| 79 65 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 80 66 | 
             
                requirements:
         | 
| 81 | 
            -
                - -  | 
| 67 | 
            +
                - - '>='
         | 
| 82 68 | 
             
                  - !ruby/object:Gem::Version
         | 
| 83 69 | 
             
                    version: '0'
         | 
| 84 70 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 85 71 | 
             
              name: yard
         | 
| 86 72 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 87 73 | 
             
                requirements:
         | 
| 88 | 
            -
                - -  | 
| 74 | 
            +
                - - '>='
         | 
| 89 75 | 
             
                  - !ruby/object:Gem::Version
         | 
| 90 76 | 
             
                    version: '0'
         | 
| 91 77 | 
             
              type: :development
         | 
| 92 78 | 
             
              prerelease: false
         | 
| 93 79 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 94 80 | 
             
                requirements:
         | 
| 95 | 
            -
                - -  | 
| 81 | 
            +
                - - '>='
         | 
| 96 82 | 
             
                  - !ruby/object:Gem::Version
         | 
| 97 83 | 
             
                    version: '0'
         | 
| 98 84 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -177,17 +163,17 @@ require_paths: | |
| 177 163 | 
             
            - lib
         | 
| 178 164 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 179 165 | 
             
              requirements:
         | 
| 180 | 
            -
              - -  | 
| 166 | 
            +
              - - '>='
         | 
| 181 167 | 
             
                - !ruby/object:Gem::Version
         | 
| 182 168 | 
             
                  version: '0'
         | 
| 183 169 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 184 170 | 
             
              requirements:
         | 
| 185 | 
            -
              - -  | 
| 171 | 
            +
              - - '>='
         | 
| 186 172 | 
             
                - !ruby/object:Gem::Version
         | 
| 187 173 | 
             
                  version: '0'
         | 
| 188 174 | 
             
            requirements: []
         | 
| 189 175 | 
             
            rubyforge_project: 
         | 
| 190 | 
            -
            rubygems_version: 2. | 
| 176 | 
            +
            rubygems_version: 2.0.3
         | 
| 191 177 | 
             
            signing_key: 
         | 
| 192 178 | 
             
            specification_version: 4
         | 
| 193 179 | 
             
            summary: General purpose pub/sub library built on top of AWS SNS and SQS
         |