msgr 1.3.2 → 1.5.0
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 +4 -4
- data/.github/workflows/test.yml +83 -0
- data/.gitignore +17 -17
- data/.markdownlint.yml +22 -0
- data/.rubocop.yml +6 -2
- data/.vscode/ltex.dictionary.en-US.txt +1 -0
- data/Appraisals +13 -8
- data/CHANGELOG.md +85 -8
- data/Gemfile +1 -1
- data/README.md +17 -16
- data/gemfiles/rails_5.2.gemfile +2 -1
- data/gemfiles/rails_6.0.gemfile +2 -1
- data/gemfiles/rails_6.1.gemfile +2 -1
- data/gemfiles/rails_7.0.gemfile +15 -0
- data/gemfiles/{rails_master.gemfile → rails_head.gemfile} +2 -1
- data/lib/msgr/binding.rb +2 -2
- data/lib/msgr/channel.rb +2 -7
- data/lib/msgr/cli.rb +11 -12
- data/lib/msgr/client.rb +2 -2
- data/lib/msgr/connection.rb +2 -2
- data/lib/msgr/railtie.rb +1 -1
- data/lib/msgr/route.rb +2 -2
- data/lib/msgr/test_pool.rb +3 -3
- data/lib/msgr/version.rb +3 -3
- data/lib/msgr.rb +1 -3
- data/msgr.gemspec +6 -3
- data/renovate.json +5 -0
- data/scripts/simple_test.rb +1 -1
- data/spec/integration/dummy/app/consumers/test_consumer.rb +6 -1
- data/spec/integration/dummy/config/rabbitmq.yml +2 -0
- data/spec/integration/msgr/dispatcher_spec.rb +5 -6
- data/spec/integration/spec_helper.rb +7 -1
- data/spec/integration/test_controller_spec.rb +10 -2
- data/spec/unit/msgr/client_spec.rb +2 -2
- data/spec/unit/msgr/dispatcher_spec.rb +4 -4
- data/spec/unit/msgr/route_spec.rb +15 -1
- data/spec/unit/msgr/test_pool_spec.rb +14 -0
- data/spec/unit/msgr_spec.rb +3 -4
- metadata +14 -65
- data/.github/workflows/build.yml +0 -52
- data/.github/workflows/lint.yml +0 -20
- data/.travis.yml +0 -29
- data/spec/integration/dummy/db/test.sqlite3 +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d505941f2c4bf678a5d8c5185b2d65c510fcc08aa818eca251e83e8f0225b178
         | 
| 4 | 
            +
              data.tar.gz: 3f78955ee1074190d7fa63384294ae1b09802fcb362645b2aa52b79062ab9057
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e421518963ac9b653faaab3da418687a96b4a7b91dfd931e7afc8d3166b247c711a2e6eb199bcef6fc0e83d970308b2998a152b80e32b3bc1d7f248af5fd161d
         | 
| 7 | 
            +
              data.tar.gz: 776b325f75779d39ad2c254020082da70ef4bf5a0dc1ec601c392546472315b29cfc0821718f94491d023077d1d84c7617b15ed808b9fa3f9b2aef1de56dd151
         | 
| @@ -0,0 +1,83 @@ | |
| 1 | 
            +
            name: test
         | 
| 2 | 
            +
            on: [push]
         | 
| 3 | 
            +
            jobs:
         | 
| 4 | 
            +
              test:
         | 
| 5 | 
            +
                name: Ruby ${{ matrix.ruby }} / ${{ matrix.gemfile }}
         | 
| 6 | 
            +
                runs-on: ubuntu-22.04
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                strategy:
         | 
| 9 | 
            +
                  matrix:
         | 
| 10 | 
            +
                    ruby:
         | 
| 11 | 
            +
                      - "3.2"
         | 
| 12 | 
            +
                      - "3.1"
         | 
| 13 | 
            +
                      - "3.0"
         | 
| 14 | 
            +
                      - "2.7"
         | 
| 15 | 
            +
                    gemfile:
         | 
| 16 | 
            +
                      - rails_5.2.gemfile
         | 
| 17 | 
            +
                      - rails_6.0.gemfile
         | 
| 18 | 
            +
                      - rails_6.1.gemfile
         | 
| 19 | 
            +
                      - rails_7.0.gemfile
         | 
| 20 | 
            +
                    exclude:
         | 
| 21 | 
            +
                      - ruby: "3.2"
         | 
| 22 | 
            +
                        gemfile: rails_5.2.gemfile
         | 
| 23 | 
            +
                      - ruby: "3.2"
         | 
| 24 | 
            +
                        gemfile: rails_6.0.gemfile
         | 
| 25 | 
            +
                      - ruby: "3.1"
         | 
| 26 | 
            +
                        gemfile: rails_5.2.gemfile
         | 
| 27 | 
            +
                      - ruby: "3.1"
         | 
| 28 | 
            +
                        gemfile: rails_6.0.gemfile
         | 
| 29 | 
            +
                      - ruby: "3.0"
         | 
| 30 | 
            +
                        gemfile: rails_5.2.gemfile
         | 
| 31 | 
            +
                  fail-fast: False
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                services:
         | 
| 34 | 
            +
                  rabbitmq:
         | 
| 35 | 
            +
                    image: rabbitmq:latest
         | 
| 36 | 
            +
                    options: >-
         | 
| 37 | 
            +
                      --health-cmd "rabbitmqctl node_health_check"
         | 
| 38 | 
            +
                      --health-interval 10s
         | 
| 39 | 
            +
                      --health-timeout 5s
         | 
| 40 | 
            +
                      --health-retries 5
         | 
| 41 | 
            +
                    ports:
         | 
| 42 | 
            +
                      - 5672:5672
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                env:
         | 
| 45 | 
            +
                  AMQP_SERVER: amqp://localhost:5672
         | 
| 46 | 
            +
                  BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}
         | 
| 47 | 
            +
                  BUNDLE_JOBS: 4
         | 
| 48 | 
            +
                  BUNDLE_RETRY: 10
         | 
| 49 | 
            +
                  BUNDLE_WITHOUT: development
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                steps:
         | 
| 52 | 
            +
                  - uses: actions/checkout@master
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  - name: Setup Ruby
         | 
| 55 | 
            +
                    uses: ruby/setup-ruby@v1
         | 
| 56 | 
            +
                    with:
         | 
| 57 | 
            +
                      ruby-version: ${{ matrix.ruby }}
         | 
| 58 | 
            +
                      bundler-cache: True
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  - name: Run unit tests
         | 
| 61 | 
            +
                    run: bundle exec rspec -Ispec/unit --color spec/unit
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  - name: Run integration tests
         | 
| 64 | 
            +
                    run: bundle exec rspec -Ispec/integration --color spec/integration
         | 
| 65 | 
            +
             | 
| 66 | 
            +
              rubocop:
         | 
| 67 | 
            +
                name: rubocop
         | 
| 68 | 
            +
                runs-on: ubuntu-22.04
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                env:
         | 
| 71 | 
            +
                  BUNDLE_JOBS: 4
         | 
| 72 | 
            +
                  BUNDLE_RETRY: 10
         | 
| 73 | 
            +
                  BUNDLE_WITHOUT: development
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                steps:
         | 
| 76 | 
            +
                  - uses: actions/checkout@master
         | 
| 77 | 
            +
                  - uses: ruby/setup-ruby@v1
         | 
| 78 | 
            +
                    with:
         | 
| 79 | 
            +
                      ruby-version: 3.0
         | 
| 80 | 
            +
                      bundler-cache: true
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                  - name: Run rubocop
         | 
| 83 | 
            +
                    run: bundle exec rubocop --parallel --color
         | 
    
        data/.gitignore
    CHANGED
    
    | @@ -1,29 +1,29 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            *.rbc
         | 
| 1 | 
            +
            _yardoc
         | 
| 3 2 | 
             
            .bundle
         | 
| 4 3 | 
             
            .config
         | 
| 4 | 
            +
            .idea
         | 
| 5 | 
            +
            .rbx
         | 
| 6 | 
            +
            .rspec
         | 
| 5 7 | 
             
            .yardoc
         | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 8 | 
            +
            *.gem
         | 
| 9 | 
            +
            *.iml
         | 
| 10 | 
            +
            *.lock
         | 
| 11 | 
            +
            *.log
         | 
| 12 | 
            +
            *.rbc
         | 
| 9 13 | 
             
            coverage
         | 
| 10 14 | 
             
            doc/
         | 
| 15 | 
            +
            InstalledFiles
         | 
| 11 16 | 
             
            lib/bundler/man
         | 
| 12 17 | 
             
            pkg
         | 
| 18 | 
            +
            pmip
         | 
| 13 19 | 
             
            rdoc
         | 
| 20 | 
            +
            spec/integration/dummy/.generators
         | 
| 21 | 
            +
            spec/integration/dummy/.rakeTasks
         | 
| 22 | 
            +
            spec/integration/dummy/.sass-cache
         | 
| 23 | 
            +
            spec/integration/dummy/db/*.sqlite3
         | 
| 24 | 
            +
            spec/integration/dummy/db/*.sqlite3-journal
         | 
| 25 | 
            +
            spec/integration/dummy/tmp
         | 
| 14 26 | 
             
            spec/reports
         | 
| 15 27 | 
             
            test/tmp
         | 
| 16 28 | 
             
            test/version_tmp
         | 
| 17 29 | 
             
            tmp
         | 
| 18 | 
            -
            .idea
         | 
| 19 | 
            -
            pmip
         | 
| 20 | 
            -
            *.iml
         | 
| 21 | 
            -
            .rbx
         | 
| 22 | 
            -
            .rspec
         | 
| 23 | 
            -
            *.log
         | 
| 24 | 
            -
            spec/integration/dummy/db/*.sqlite3
         | 
| 25 | 
            -
            spec/integration/dummy/db/*.sqlite3-journal
         | 
| 26 | 
            -
            spec/integration/dummy/tmp
         | 
| 27 | 
            -
            spec/integration/dummy/.sass-cache
         | 
| 28 | 
            -
            spec/integration/dummy/.generators
         | 
| 29 | 
            -
            spec/integration/dummy/.rakeTasks
         | 
    
        data/.markdownlint.yml
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # markdownlint config
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # The CHANGELOG contains duplicated headers by design
         | 
| 4 | 
            +
            MD024: false
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            # MD013/line-length: disable line length for all. We prefer lines as
         | 
| 7 | 
            +
            # long as paragraph with in-editor line breaks.
         | 
| 8 | 
            +
            MD013: false
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            # MD033/no-inline-html: allow often need tags
         | 
| 11 | 
            +
            MD033:
         | 
| 12 | 
            +
              allowed_elements:
         | 
| 13 | 
            +
                - figure
         | 
| 14 | 
            +
                - figcaption
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            # MD046/code-block-style: code block style conflicting with
         | 
| 17 | 
            +
            # admonitions...
         | 
| 18 | 
            +
            MD046: false
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            # MD048/code-fence-style: code fence style
         | 
| 21 | 
            +
            MD048:
         | 
| 22 | 
            +
              style: backtick
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,8 +1,9 @@ | |
| 1 1 | 
             
            inherit_gem:
         | 
| 2 | 
            -
               | 
| 2 | 
            +
              rubocop-config: default.yml
         | 
| 3 3 |  | 
| 4 4 | 
             
            AllCops:
         | 
| 5 | 
            -
              TargetRubyVersion: 2. | 
| 5 | 
            +
              TargetRubyVersion: 2.7
         | 
| 6 | 
            +
              SuggestExtensions: False
         | 
| 6 7 | 
             
              Exclude:
         | 
| 7 8 | 
             
                - gemfiles/**/*
         | 
| 8 9 | 
             
                - spec/integration/dummy/**/*
         | 
| @@ -11,3 +12,6 @@ AllCops: | |
| 11 12 | 
             
            Layout/LineLength:
         | 
| 12 13 | 
             
              Exclude:
         | 
| 13 14 | 
             
                - spec/**/*
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            RSpec/MultipleMemoizedHelpers:
         | 
| 17 | 
            +
              Max: 15
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            AMQP
         | 
    
        data/Appraisals
    CHANGED
    
    | @@ -1,18 +1,23 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            -
            # -*- mode: ruby -*-
         | 
| 3 2 |  | 
| 4 | 
            -
             | 
| 5 | 
            -
              gem 'rails', '~> 5.2.0'
         | 
| 6 | 
            -
            end
         | 
| 3 | 
            +
            # vim: ft=ruby
         | 
| 7 4 |  | 
| 8 | 
            -
            appraise 'rails- | 
| 9 | 
            -
             | 
| 10 | 
            -
            end
         | 
| 5 | 
            +
            # appraise 'rails-5.2' do
         | 
| 6 | 
            +
            #   gem 'rails', '~> 5.2.0'
         | 
| 7 | 
            +
            # end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # appraise 'rails-6.0' do
         | 
| 10 | 
            +
            #   gem 'rails', '~> 6.0.0'
         | 
| 11 | 
            +
            # end
         | 
| 11 12 |  | 
| 12 13 | 
             
            appraise 'rails-6.1' do
         | 
| 13 14 | 
             
              gem 'rails', '~> 6.1.0'
         | 
| 14 15 | 
             
            end
         | 
| 15 16 |  | 
| 16 | 
            -
            appraise 'rails- | 
| 17 | 
            +
            appraise 'rails-7.0' do
         | 
| 18 | 
            +
              gem 'rails', '~> 6.1.0'
         | 
| 19 | 
            +
            end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            appraise 'rails-head' do
         | 
| 17 22 | 
             
              gem 'rails', git: 'https://github.com/rails/rails', require: 'rails'
         | 
| 18 23 | 
             
            end
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,54 +1,99 @@ | |
| 1 1 | 
             
            # Changelog
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            All notable changes to this project will be documented in this file.
         | 
| 3 4 |  | 
| 4 5 | 
             
            The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
         | 
| 5 6 |  | 
| 6 7 | 
             
            ## [Unreleased]
         | 
| 7 8 |  | 
| 9 | 
            +
            ## [1.5.0] - 2023-08-16
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ### Added
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            - Support for Ruby 3.1 and 3.2
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ### Changed
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            - Drop support for Ruby < 2.7
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ### Fixed
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            - `TestPool#run` passing down keyword arguments
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ## [1.4.0] - 2022-01-10
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            ### Added
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            - Support for namespaced consumer classes in routes file (#48, #49)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ### Removed
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            - Unused `Channel#reject` method
         | 
| 32 | 
            +
             | 
| 8 33 | 
             
            ## [1.3.2] - 2021-09-21
         | 
| 34 | 
            +
             | 
| 9 35 | 
             
            ### Fixed
         | 
| 36 | 
            +
             | 
| 10 37 | 
             
            - Rake task `msgr:drain` ran before all routes were initialized (#44)
         | 
| 11 38 |  | 
| 12 39 | 
             
            ## [1.3.1] - 2020-12-16
         | 
| 40 | 
            +
             | 
| 13 41 | 
             
            ### Fixed
         | 
| 42 | 
            +
             | 
| 14 43 | 
             
            - Delay setting default options for correct relative routing file path
         | 
| 15 44 |  | 
| 16 45 | 
             
            ## [1.3.0] - 2020-12-16
         | 
| 46 | 
            +
             | 
| 17 47 | 
             
            ### Added
         | 
| 48 | 
            +
             | 
| 18 49 | 
             
            - Support and testing for Rails 6.1
         | 
| 19 50 | 
             
            - Rake task for purging all known queues (#43)
         | 
| 20 51 |  | 
| 21 52 | 
             
            ### Changed
         | 
| 53 | 
            +
             | 
| 22 54 | 
             
            - High-risk feature to autostart client in-process has been removed without replacement
         | 
| 23 55 | 
             
            - Parsing config is more relaxed now but directly based on YAML boolean values
         | 
| 24 56 |  | 
| 25 57 | 
             
            ## [1.2.0] - 2019-06-27
         | 
| 58 | 
            +
             | 
| 26 59 | 
             
            ### Added
         | 
| 60 | 
            +
             | 
| 27 61 | 
             
            - Test support of Rails 5.2
         | 
| 28 62 |  | 
| 29 63 | 
             
            ### Changed
         | 
| 30 | 
            -
             | 
| 64 | 
            +
             | 
| 65 | 
            +
            - Serialize JSON using core JSON instead of `MultiJson`
         | 
| 31 66 | 
             
            - Remove application/text fallback for payload (#25)
         | 
| 32 67 |  | 
| 33 68 | 
             
            ## [1.1.0] - 2018-07-25
         | 
| 69 | 
            +
             | 
| 34 70 | 
             
            ### Added
         | 
| 71 | 
            +
             | 
| 35 72 | 
             
            - New command line runner
         | 
| 36 73 |  | 
| 37 74 | 
             
            ## [1.0.0] - 2017-12-29
         | 
| 75 | 
            +
             | 
| 38 76 | 
             
            ### Changed
         | 
| 77 | 
            +
             | 
| 39 78 | 
             
            - Configure prefetch per binding and disable auto ack in consumer for customized batch processing (#15)
         | 
| 40 79 | 
             
            - Replace usage of deprecated exception class (#12)
         | 
| 41 80 |  | 
| 42 81 | 
             
            ## [0.15.2] - 2017-09-04
         | 
| 82 | 
            +
             | 
| 43 83 | 
             
            ### Fixed
         | 
| 84 | 
            +
             | 
| 44 85 | 
             
            - Fix regression in parsing `:uri` config with empty path
         | 
| 45 86 |  | 
| 46 87 | 
             
            ## [0.15.1] - 2017-07-31
         | 
| 88 | 
            +
             | 
| 47 89 | 
             
            ### Fixed
         | 
| 90 | 
            +
             | 
| 48 91 | 
             
            - Fix errors with additional configuration keys for AMQP connection (#13)
         | 
| 49 92 |  | 
| 50 93 | 
             
            ## [0.15.0] - 2017-03-30
         | 
| 94 | 
            +
             | 
| 51 95 | 
             
            ### Added
         | 
| 96 | 
            +
             | 
| 52 97 | 
             
            - Add new configuration option `:raise_exceptions` that can be used to enable
         | 
| 53 98 | 
             
              exceptions being raised from consumers. Mostly useful for testing consumers.
         | 
| 54 99 | 
             
              Defaults to `false`.
         | 
| @@ -56,69 +101,101 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | |
| 56 101 | 
             
            - Add methods for purging queues
         | 
| 57 102 |  | 
| 58 103 | 
             
            ### Changed
         | 
| 59 | 
            -
             | 
| 104 | 
            +
             | 
| 105 | 
            +
            - Rework `TestPool` timeout handling to not account processing time
         | 
| 60 106 |  | 
| 61 107 | 
             
            ## [0.14.1] - 2016-02-17
         | 
| 108 | 
            +
             | 
| 62 109 | 
             
            ### Fixed
         | 
| 110 | 
            +
             | 
| 63 111 | 
             
            - Fix loading test pool source file
         | 
| 64 112 |  | 
| 65 113 | 
             
            ## [0.14.0] - 2016-02-17
         | 
| 114 | 
            +
             | 
| 66 115 | 
             
            ### Added
         | 
| 116 | 
            +
             | 
| 67 117 | 
             
            - Add experimental test pool (`Msgr::TestPool`)
         | 
| 68 118 |  | 
| 69 119 | 
             
            ## [0.13.0] - 2015-08-24
         | 
| 120 | 
            +
             | 
| 70 121 | 
             
            ### Changed
         | 
| 122 | 
            +
             | 
| 71 123 | 
             
            - Use `Rails.application.config_for` if available.
         | 
| 72 124 |  | 
| 73 125 | 
             
            ## [0.12.2] - 2015-01-14
         | 
| 126 | 
            +
             | 
| 74 127 | 
             
            ### Changed
         | 
| 128 | 
            +
             | 
| 75 129 | 
             
            - Do not delete the exchange on stop delete:true - as the exchange is changed
         | 
| 76 130 |  | 
| 77 131 | 
             
            ## [0.12.1] - 2014-11-06
         | 
| 132 | 
            +
             | 
| 78 133 | 
             
            ### Changed
         | 
| 134 | 
            +
             | 
| 79 135 | 
             
            - Loose dependency on bunny to allow `~> 1.4` for stone-age old RabbitMQ servers.
         | 
| 80 136 |  | 
| 81 137 | 
             
            ## [0.11.0-rc3] - 2014-04-11
         | 
| 138 | 
            +
             | 
| 82 139 | 
             
            ### Added
         | 
| 83 | 
            -
             | 
| 140 | 
            +
             | 
| 141 | 
            +
            - Add `checkcredentials` config option to disable initial connect to RabbitMQ
         | 
| 84 142 | 
             
              server to check the credentials
         | 
| 85 143 |  | 
| 86 144 | 
             
            ### Changed
         | 
| 145 | 
            +
             | 
| 87 146 | 
             
            - Define pool_class by string to make it useable with rails
         | 
| 88 147 |  | 
| 89 148 | 
             
            ## [0.11.0-rc2] - 2014-03-29
         | 
| 149 | 
            +
             | 
| 90 150 | 
             
            ### Added
         | 
| 91 | 
            -
             | 
| 151 | 
            +
             | 
| 152 | 
            +
            - Add `#nack` for messages when an error is rescued by dispatcher
         | 
| 92 153 |  | 
| 93 154 | 
             
            ## [0.11.0-rc1] - 2014-03-29
         | 
| 155 | 
            +
             | 
| 94 156 | 
             
            ### Added
         | 
| 95 | 
            -
             | 
| 157 | 
            +
             | 
| 158 | 
            +
            - Add `pool_class` config to override pool classes used by dispatcher
         | 
| 96 159 |  | 
| 97 160 | 
             
            ## [0.4.1] - 2014-03-18
         | 
| 161 | 
            +
             | 
| 98 162 | 
             
            ### Fixed
         | 
| 163 | 
            +
             | 
| 99 164 | 
             
            - Fix bug with empty routes on client start
         | 
| 100 165 |  | 
| 101 166 | 
             
            ## [0.4.0] - 2014-03-04
         | 
| 167 | 
            +
             | 
| 102 168 | 
             
            ### Changed
         | 
| 103 | 
            -
             | 
| 169 | 
            +
             | 
| 170 | 
            +
            - Improve `Railtie` and autostart code
         | 
| 104 171 |  | 
| 105 172 | 
             
            ## 0.4.0 - 0.10.0
         | 
| 173 | 
            +
             | 
| 106 174 | 
             
            ### Changed
         | 
| 175 | 
            +
             | 
| 107 176 | 
             
            - Some lost history due to several crises
         | 
| 108 177 |  | 
| 109 178 | 
             
            ## [0.3.0] - 2014-03-03
         | 
| 179 | 
            +
             | 
| 110 180 | 
             
            ### Added
         | 
| 181 | 
            +
             | 
| 111 182 | 
             
            - Support for forking web servers like unicorn
         | 
| 112 183 |  | 
| 113 184 | 
             
            ## [0.2.1] - 2014-02-26
         | 
| 185 | 
            +
             | 
| 114 186 | 
             
            ### Fixed
         | 
| 115 | 
            -
             | 
| 187 | 
            +
             | 
| 188 | 
            +
            - Fix wrong Rails initializer code - was not use the config file
         | 
| 116 189 |  | 
| 117 190 | 
             
            ## [0.2.0] - 2014-02-21
         | 
| 191 | 
            +
             | 
| 118 192 | 
             
            ### Changed
         | 
| 193 | 
            +
             | 
| 119 194 | 
             
            - Improve rails initializer code
         | 
| 120 195 |  | 
| 121 | 
            -
            [Unreleased]: https://github.com/jgraichen/msgr/compare/v1. | 
| 196 | 
            +
            [Unreleased]: https://github.com/jgraichen/msgr/compare/v1.5.0...HEAD
         | 
| 197 | 
            +
            [1.5.0]: https://github.com/jgraichen/msgr/compare/v1.4.0...v1.5.0
         | 
| 198 | 
            +
            [1.4.0]: https://github.com/jgraichen/msgr/compare/v1.3.2...v1.4.0
         | 
| 122 199 | 
             
            [1.3.2]: https://github.com/jgraichen/msgr/compare/v1.3.1...v1.3.2
         | 
| 123 200 | 
             
            [1.3.1]: https://github.com/jgraichen/msgr/compare/v1.3.0...v1.3.1
         | 
| 124 201 | 
             
            [1.3.0]: https://github.com/jgraichen/msgr/compare/v1.2.0...v1.3.0
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -4,11 +4,11 @@ source 'https://rubygems.org' | |
| 4 4 |  | 
| 5 5 | 
             
            gem 'appraisal'
         | 
| 6 6 | 
             
            gem 'coveralls'
         | 
| 7 | 
            -
            gem 'my-rubocop', github: 'jgraichen/my-rubocop'
         | 
| 8 7 | 
             
            gem 'rake'
         | 
| 9 8 | 
             
            gem 'rake-release', '~> 1.1'
         | 
| 10 9 | 
             
            gem 'rspec', '~> 3.0'
         | 
| 11 10 | 
             
            gem 'rspec-rails'
         | 
| 11 | 
            +
            gem 'rubocop-config', github: 'jgraichen/rubocop-config', ref: 'v11', require: false
         | 
| 12 12 |  | 
| 13 13 | 
             
            gem 'rails'
         | 
| 14 14 | 
             
            gem 'sqlite3'
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,34 +1,38 @@ | |
| 1 | 
            -
            # Msgr:  | 
| 1 | 
            +
            # Msgr: _Rails-like Messaging Framework_
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
            [](https://travis-ci.org/jgraichen/msgr)
         | 
| 6 | 
            -
            [](https://github.com/jgraichen/msgr/actions?query=workflow%3ABuild+branch%3Amaster)
         | 
| 3 | 
            +
            [](https://rubygems.org/gems/msgr)
         | 
| 4 | 
            +
            [](https://github.com/jgraichen/msgr/actions/workflows/test.yml)
         | 
| 7 5 | 
             
            [](http://rubydoc.info/github/jgraichen/msgr/master/frames)
         | 
| 8 6 |  | 
| 9 7 | 
             
            You know it and you like it. Using Rails you can just declare your routes and
         | 
| 10 8 | 
             
            create a controller. That's all you need to process requests.
         | 
| 11 9 |  | 
| 12 | 
            -
            With  | 
| 10 | 
            +
            With _Msgr_ you can do the same for asynchronous AMQP messaging. Just define
         | 
| 13 11 | 
             
            your routes, create your consumer and watch your app processing messages.
         | 
| 14 12 |  | 
| 15 13 | 
             
            ## Installation
         | 
| 16 14 |  | 
| 17 15 | 
             
            Add this line to your application's Gemfile:
         | 
| 18 16 |  | 
| 19 | 
            -
             | 
| 17 | 
            +
            ```ruby
         | 
| 18 | 
            +
            gem 'msgr', '~> 1.5'
         | 
| 19 | 
            +
            ```
         | 
| 20 20 |  | 
| 21 21 | 
             
            And then execute:
         | 
| 22 22 |  | 
| 23 | 
            -
             | 
| 23 | 
            +
            ```console
         | 
| 24 | 
            +
            bundle
         | 
| 25 | 
            +
            ```
         | 
| 24 26 |  | 
| 25 27 | 
             
            Or install it yourself as:
         | 
| 26 28 |  | 
| 27 | 
            -
             | 
| 29 | 
            +
            ```console
         | 
| 30 | 
            +
            gem install msgr
         | 
| 31 | 
            +
            ```
         | 
| 28 32 |  | 
| 29 33 | 
             
            ## Usage
         | 
| 30 34 |  | 
| 31 | 
            -
            After adding 'msgr' to your  | 
| 35 | 
            +
            After adding 'msgr' to your Gemfile create a `config/rabbitmq.yml` like this:
         | 
| 32 36 |  | 
| 33 37 | 
             
            ```yaml
         | 
| 34 38 | 
             
            common: &common
         | 
| @@ -83,7 +87,6 @@ end | |
| 83 87 |  | 
| 84 88 | 
             
            Run client daemon with `bundle exec msgr`.
         | 
| 85 89 |  | 
| 86 | 
            -
             | 
| 87 90 | 
             
            ## Advanced configuration
         | 
| 88 91 |  | 
| 89 92 | 
             
            ### Manual message acknowledgments
         | 
| @@ -106,10 +109,9 @@ end | |
| 106 109 |  | 
| 107 110 | 
             
            Per default each message queue has a prefetch count of 1. This value can be changed when specifying the messaging routes:
         | 
| 108 111 |  | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 112 | 
            +
            ```ruby
         | 
| 113 | 
            +
            route 'local.test.index', to: 'test#index', prefetch: 42
         | 
| 114 | 
            +
            ```
         | 
| 113 115 |  | 
| 114 116 | 
             
            ## Testing
         | 
| 115 117 |  | 
| @@ -154,7 +156,6 @@ it 'executes the consumer' do | |
| 154 156 | 
             
            end
         | 
| 155 157 | 
             
            ```
         | 
| 156 158 |  | 
| 157 | 
            -
             | 
| 158 159 | 
             
            ## Contributing
         | 
| 159 160 |  | 
| 160 161 | 
             
            1. Fork it
         | 
    
        data/gemfiles/rails_5.2.gemfile
    CHANGED
    
    | @@ -4,8 +4,9 @@ source "https://rubygems.org" | |
| 4 4 |  | 
| 5 5 | 
             
            gem "appraisal"
         | 
| 6 6 | 
             
            gem "coveralls"
         | 
| 7 | 
            -
            gem "my-rubocop", github: "jgraichen/my-rubocop"
         | 
| 7 | 
            +
            gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
         | 
| 8 8 | 
             
            gem "rake"
         | 
| 9 | 
            +
            gem "rake-release", "~> 1.1"
         | 
| 9 10 | 
             
            gem "rspec", "~> 3.0"
         | 
| 10 11 | 
             
            gem "rspec-rails"
         | 
| 11 12 | 
             
            gem "rails", "~> 5.2.0"
         | 
    
        data/gemfiles/rails_6.0.gemfile
    CHANGED
    
    | @@ -4,8 +4,9 @@ source "https://rubygems.org" | |
| 4 4 |  | 
| 5 5 | 
             
            gem "appraisal"
         | 
| 6 6 | 
             
            gem "coveralls"
         | 
| 7 | 
            -
            gem "my-rubocop", github: "jgraichen/my-rubocop"
         | 
| 7 | 
            +
            gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
         | 
| 8 8 | 
             
            gem "rake"
         | 
| 9 | 
            +
            gem "rake-release", "~> 1.1"
         | 
| 9 10 | 
             
            gem "rspec", "~> 3.0"
         | 
| 10 11 | 
             
            gem "rspec-rails"
         | 
| 11 12 | 
             
            gem "rails", "~> 6.0.0"
         | 
    
        data/gemfiles/rails_6.1.gemfile
    CHANGED
    
    | @@ -4,8 +4,9 @@ source "https://rubygems.org" | |
| 4 4 |  | 
| 5 5 | 
             
            gem "appraisal"
         | 
| 6 6 | 
             
            gem "coveralls"
         | 
| 7 | 
            -
            gem "my-rubocop", github: "jgraichen/my-rubocop"
         | 
| 7 | 
            +
            gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
         | 
| 8 8 | 
             
            gem "rake"
         | 
| 9 | 
            +
            gem "rake-release", "~> 1.1"
         | 
| 9 10 | 
             
            gem "rspec", "~> 3.0"
         | 
| 10 11 | 
             
            gem "rspec-rails"
         | 
| 11 12 | 
             
            gem "rails", "~> 6.1.0"
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            # This file was generated by Appraisal
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            source "https://rubygems.org"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            gem "appraisal"
         | 
| 6 | 
            +
            gem "coveralls"
         | 
| 7 | 
            +
            gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
         | 
| 8 | 
            +
            gem "rake"
         | 
| 9 | 
            +
            gem "rake-release", "~> 1.1"
         | 
| 10 | 
            +
            gem "rspec", "~> 3.0"
         | 
| 11 | 
            +
            gem "rspec-rails"
         | 
| 12 | 
            +
            gem "rails", "~> 6.1.0"
         | 
| 13 | 
            +
            gem "sqlite3"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            gemspec path: "../"
         | 
| @@ -4,8 +4,9 @@ source "https://rubygems.org" | |
| 4 4 |  | 
| 5 5 | 
             
            gem "appraisal"
         | 
| 6 6 | 
             
            gem "coveralls"
         | 
| 7 | 
            -
            gem "my-rubocop", github: "jgraichen/my-rubocop"
         | 
| 7 | 
            +
            gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
         | 
| 8 8 | 
             
            gem "rake"
         | 
| 9 | 
            +
            gem "rake-release", "~> 1.1"
         | 
| 9 10 | 
             
            gem "rspec", "~> 3.0"
         | 
| 10 11 | 
             
            gem "rspec-rails"
         | 
| 11 12 | 
             
            gem "rails", git: "https://github.com/rails/rails", require: "rails"
         | 
    
        data/lib/msgr/binding.rb
    CHANGED
    
    | @@ -10,7 +10,7 @@ module Msgr | |
| 10 10 | 
             
                  :dispatcher,
         | 
| 11 11 | 
             
                  :queue,
         | 
| 12 12 | 
             
                  :route,
         | 
| 13 | 
            -
                  :subscription
         | 
| 13 | 
            +
                  :subscription,
         | 
| 14 14 | 
             
                )
         | 
| 15 15 |  | 
| 16 16 | 
             
                def initialize(connection, route, dispatcher)
         | 
| @@ -54,7 +54,7 @@ module Msgr | |
| 54 54 | 
             
                  rescue StandardError => e
         | 
| 55 55 | 
             
                    log(:error) do
         | 
| 56 56 | 
             
                      "Rescued error from subscribe: #{e.class.name}: " \
         | 
| 57 | 
            -
             | 
| 57 | 
            +
                        "#{e}\n#{e.backtrace.join("\n")}"
         | 
| 58 58 | 
             
                    end
         | 
| 59 59 | 
             
                  end
         | 
| 60 60 | 
             
                end
         | 
    
        data/lib/msgr/channel.rb
    CHANGED
    
    | @@ -22,7 +22,7 @@ module Msgr | |
| 22 22 | 
             
                    @channel.topic(prefix(EXCHANGE_NAME), durable: true).tap do |ex|
         | 
| 23 23 | 
             
                      log(:debug) do
         | 
| 24 24 | 
             
                        "Created exchange #{ex.name} (type: #{ex.type}, " \
         | 
| 25 | 
            -
             | 
| 25 | 
            +
                          "durable: #{ex.durable?}, auto_delete: #{ex.auto_delete?})"
         | 
| 26 26 | 
             
                      end
         | 
| 27 27 | 
             
                    end
         | 
| 28 28 | 
             
                  end
         | 
| @@ -32,7 +32,7 @@ module Msgr | |
| 32 32 | 
             
                  @channel.queue(prefix(name), durable: true, **opts).tap do |queue|
         | 
| 33 33 | 
             
                    log(:debug) do
         | 
| 34 34 | 
             
                      "Create queue #{queue.name} (durable: #{queue.durable?}, " \
         | 
| 35 | 
            -
             | 
| 35 | 
            +
                        "auto_delete: #{queue.auto_delete?})"
         | 
| 36 36 | 
             
                    end
         | 
| 37 37 | 
             
                  end
         | 
| 38 38 | 
             
                end
         | 
| @@ -55,11 +55,6 @@ module Msgr | |
| 55 55 | 
             
                  log(:debug) { "Nacked message: #{delivery_tag}" }
         | 
| 56 56 | 
             
                end
         | 
| 57 57 |  | 
| 58 | 
            -
                def reject(delivery_tag, requeue = true)
         | 
| 59 | 
            -
                  @channel.reject delivery_tag, requeue
         | 
| 60 | 
            -
                  log(:debug) { "Rejected message: #{delivery_tag}" }
         | 
| 61 | 
            -
                end
         | 
| 62 | 
            -
             | 
| 63 58 | 
             
                def close
         | 
| 64 59 | 
             
                  @channel.close if @channel.open?
         | 
| 65 60 | 
             
                end
         | 
    
        data/lib/msgr/cli.rb
    CHANGED
    
    | @@ -41,17 +41,16 @@ module Msgr | |
| 41 41 | 
             
                  Signal.trap('INT') { w.puts 'INT' }
         | 
| 42 42 | 
             
                  Signal.trap('TERM') { w.puts 'TERM' }
         | 
| 43 43 |  | 
| 44 | 
            -
                  Msgr.logger = Logger.new( | 
| 44 | 
            +
                  Msgr.logger = Logger.new($stdout)
         | 
| 45 45 | 
             
                  Msgr.client.start
         | 
| 46 46 |  | 
| 47 | 
            -
                   | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
                    end
         | 
| 47 | 
            +
                  # Wait until we receive a signal
         | 
| 48 | 
            +
                  r.wait_readable
         | 
| 49 | 
            +
                  case r.gets.strip
         | 
| 50 | 
            +
                    when 'INT', 'TERM' # Safe shutdown
         | 
| 51 | 
            +
                      Msgr.client.stop
         | 
| 52 | 
            +
                    else # Error
         | 
| 53 | 
            +
                      exit 1
         | 
| 55 54 | 
             
                  end
         | 
| 56 55 | 
             
                end
         | 
| 57 56 |  | 
| @@ -65,20 +64,20 @@ module Msgr | |
| 65 64 | 
             
                  def parse(_argv)
         | 
| 66 65 | 
             
                    options = {
         | 
| 67 66 | 
             
                      require: Dir.pwd,
         | 
| 68 | 
            -
                      environment: 'development'
         | 
| 67 | 
            +
                      environment: 'development',
         | 
| 69 68 | 
             
                    }
         | 
| 70 69 |  | 
| 71 70 | 
             
                    OptionParser.new do |o|
         | 
| 72 71 | 
             
                      o.on(
         | 
| 73 72 | 
             
                        '-r', '--require [PATH|DIR]',
         | 
| 74 | 
            -
                        'Location of Rails application (default to current directory)'
         | 
| 73 | 
            +
                        'Location of Rails application (default to current directory)',
         | 
| 75 74 | 
             
                      ) do |arg|
         | 
| 76 75 | 
             
                        options[:require] = arg
         | 
| 77 76 | 
             
                      end
         | 
| 78 77 |  | 
| 79 78 | 
             
                      o.on(
         | 
| 80 79 | 
             
                        '-e', '--environment [env]',
         | 
| 81 | 
            -
                        'Rails environment (default to development)'
         | 
| 80 | 
            +
                        'Rails environment (default to development)',
         | 
| 82 81 | 
             
                      ) do |arg|
         | 
| 83 82 | 
             
                        options[:environment] = arg
         | 
| 84 83 | 
             
                      end
         |