light-service 0.11.0 → 0.12.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 +5 -5
- data/.rubocop.yml +6 -0
- data/.travis.yml +1 -1
- data/README.md +26 -13
- data/RELEASES.md +4 -0
- data/lib/light-service.rb +1 -0
- data/lib/light-service/context.rb +4 -1
- data/lib/light-service/organizer.rb +8 -0
- data/lib/light-service/organizer/with_reducer.rb +1 -0
- data/lib/light-service/organizer/with_reducer_factory.rb +11 -7
- data/lib/light-service/organizer/with_reducer_log_decorator.rb +2 -2
- data/lib/light-service/version.rb +1 -1
- data/light-service.gemspec +4 -4
- data/spec/acceptance/custom_log_from_organizer_spec.rb +60 -0
- data/spec/acceptance/fail_spec.rb +42 -16
- data/spec/acceptance/organizer/execute_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- data/spec/test_doubles.rb +12 -0
- metadata +26 -10
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: d2a2ead51dc9f98f9b676a62b94377c2d0395b008afa88f702fefeebfb2e44f4
         | 
| 4 | 
            +
              data.tar.gz: 0c9a28ca3cd84a084c836beb8466e708d17ac112a0506db01d58b7c2af243546
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 938421a4c805d816d0592871427c39b58f1b01f5fd106e81f2f6d885c158eafeefb83c7230df001655ff635cb83d8a68b01f78d9cfb0ddf2bad9ced7c4a6290b
         | 
| 7 | 
            +
              data.tar.gz: 9f2c68f84c666f0d1d1604e0d0a46ff03d0a7c1bd3109f9098a84d14e3a721c7cb14730c6045b91cc3ed314ff2e25119726e638e9443d4797eb9c47ee97b49c2
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,4 +1,7 @@ | |
| 1 | 
            +
            require: rubocop-performance
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            AllCops:
         | 
| 4 | 
            +
              TargetRubyVersion: 2.3
         | 
| 2 5 | 
             
              Exclude:
         | 
| 3 6 | 
             
                - 'lib/light-service.rb'
         | 
| 4 7 | 
             
                - 'vendor/bundle/**/*'
         | 
| @@ -46,3 +49,6 @@ Metrics/BlockLength: | |
| 46 49 |  | 
| 47 50 | 
             
            Layout/TrailingBlankLines:
         | 
| 48 51 | 
             
              Enabled: false
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            Layout/EndOfLine:
         | 
| 54 | 
            +
              EnforcedStyle: lf
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -294,14 +294,16 @@ Consider this code: | |
| 294 294 | 
             
            class SomeOrganizer
         | 
| 295 295 | 
             
              extend LightService::Organizer
         | 
| 296 296 |  | 
| 297 | 
            -
              def call(ctx)
         | 
| 297 | 
            +
              def self.call(ctx)
         | 
| 298 298 | 
             
                with(ctx).reduce(actions)
         | 
| 299 299 | 
             
              end
         | 
| 300 300 |  | 
| 301 | 
            -
              def actions
         | 
| 302 | 
            -
                 | 
| 303 | 
            -
             | 
| 304 | 
            -
             | 
| 301 | 
            +
              def self.actions
         | 
| 302 | 
            +
                [
         | 
| 303 | 
            +
                  OneAction,
         | 
| 304 | 
            +
                  TwoAction,
         | 
| 305 | 
            +
                  ThreeAction
         | 
| 306 | 
            +
                ]
         | 
| 305 307 | 
             
              end
         | 
| 306 308 | 
             
            end
         | 
| 307 309 |  | 
| @@ -345,14 +347,16 @@ class SomeOrganizer | |
| 345 347 | 
             
                                      end
         | 
| 346 348 | 
             
                                    end)
         | 
| 347 349 |  | 
| 348 | 
            -
              def call(ctx)
         | 
| 350 | 
            +
              def self.call(ctx)
         | 
| 349 351 | 
             
                with(ctx).reduce(actions)
         | 
| 350 352 | 
             
              end
         | 
| 351 353 |  | 
| 352 | 
            -
              def actions
         | 
| 353 | 
            -
                 | 
| 354 | 
            -
             | 
| 355 | 
            -
             | 
| 354 | 
            +
              def self.actions
         | 
| 355 | 
            +
                [
         | 
| 356 | 
            +
                  OneAction,
         | 
| 357 | 
            +
                  TwoAction,
         | 
| 358 | 
            +
                  ThreeAction
         | 
| 359 | 
            +
                ]
         | 
| 356 360 | 
             
              end
         | 
| 357 361 | 
             
            end
         | 
| 358 362 |  | 
| @@ -451,9 +455,9 @@ class AnOrganizer | |
| 451 455 |  | 
| 452 456 | 
             
              def self.call(order)
         | 
| 453 457 | 
             
                with(:order => order).reduce(
         | 
| 454 | 
            -
             | 
| 455 | 
            -
             | 
| 456 | 
            -
             | 
| 458 | 
            +
                  AnAction,
         | 
| 459 | 
            +
                  AnotherAction,
         | 
| 460 | 
            +
                )
         | 
| 457 461 | 
             
              end
         | 
| 458 462 | 
             
            end
         | 
| 459 463 |  | 
| @@ -534,6 +538,15 @@ I, [DATE]  INFO -- : [LightService] - ;-) <TestDoubles::MakesLatteAction> has de | |
| 534 538 | 
             
            I, [DATE]  INFO -- : [LightService] - context message: Can't make a latte with a fatty milk like that!
         | 
| 535 539 | 
             
            ```
         | 
| 536 540 |  | 
| 541 | 
            +
            You can specify the logger on the organizer level, so the organizer does not use the global logger.
         | 
| 542 | 
            +
             | 
| 543 | 
            +
            ```ruby
         | 
| 544 | 
            +
            class FooOrganizer
         | 
| 545 | 
            +
              extend LightService::Organizer
         | 
| 546 | 
            +
              log_with Logger.new("/my/special.log")
         | 
| 547 | 
            +
            end
         | 
| 548 | 
            +
            ```
         | 
| 549 | 
            +
             | 
| 537 550 | 
             
            ## Error Codes
         | 
| 538 551 | 
             
            You can add some more structure to your error handling by taking advantage of error codes in the context.
         | 
| 539 552 | 
             
            Normally, when something goes wrong in your actions, you fail the process by setting the context to failure:
         | 
    
        data/RELEASES.md
    CHANGED
    
    | @@ -1,5 +1,9 @@ | |
| 1 1 | 
             
            A brief list of new features and changes introduced with the specified version.
         | 
| 2 2 |  | 
| 3 | 
            +
            ### 0.12.0
         | 
| 4 | 
            +
            * [Per organizer logger](https://github.com/adomokos/light-service/pull/162)
         | 
| 5 | 
            +
            * [Fix 'fail_and_return!' not accepting 'error_code' option](https://github.com/adomokos/light-service/pull/168)
         | 
| 6 | 
            +
             | 
| 3 7 | 
             
            ### 0.11.0
         | 
| 4 8 | 
             
            * [Switch to 'each_with_object' in WithReducer](https://github.com/adomokos/light-service/pull/149).
         | 
| 5 9 |  | 
    
        data/lib/light-service.rb
    CHANGED
    
    
| @@ -88,7 +88,7 @@ module LightService | |
| 88 88 |  | 
| 89 89 | 
             
                def fail_and_return!(*args)
         | 
| 90 90 | 
             
                  fail!(*args)
         | 
| 91 | 
            -
                  throw(:jump_when_failed | 
| 91 | 
            +
                  throw(:jump_when_failed)
         | 
| 92 92 | 
             
                end
         | 
| 93 93 |  | 
| 94 94 | 
             
                def fail_with_rollback!(message = nil, error_code = nil)
         | 
| @@ -115,8 +115,10 @@ module LightService | |
| 115 115 |  | 
| 116 116 | 
             
                def define_accessor_methods_for_keys(keys)
         | 
| 117 117 | 
             
                  return if keys.nil?
         | 
| 118 | 
            +
             | 
| 118 119 | 
             
                  keys.each do |key|
         | 
| 119 120 | 
             
                    next if respond_to?(key.to_sym)
         | 
| 121 | 
            +
             | 
| 120 122 | 
             
                    define_singleton_method(key.to_s) { fetch(key) }
         | 
| 121 123 | 
             
                    define_singleton_method("#{key}=") { |value| self[key] = value }
         | 
| 122 124 | 
             
                  end
         | 
| @@ -161,6 +163,7 @@ module LightService | |
| 161 163 |  | 
| 162 164 | 
             
                def check_nil(value)
         | 
| 163 165 | 
             
                  return 'nil' unless value
         | 
| 166 | 
            +
             | 
| 164 167 | 
             
                  "'#{value}'"
         | 
| 165 168 | 
             
                end
         | 
| 166 169 | 
             
              end
         | 
| @@ -2,13 +2,17 @@ module LightService | |
| 2 2 | 
             
              module Organizer
         | 
| 3 3 | 
             
                class WithReducerFactory
         | 
| 4 4 | 
             
                  def self.make(monitored_organizer)
         | 
| 5 | 
            -
                     | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
                     | 
| 10 | 
            -
             | 
| 11 | 
            -
                     | 
| 5 | 
            +
                    logger = monitored_organizer.logger ||
         | 
| 6 | 
            +
                             LightService::Configuration.logger
         | 
| 7 | 
            +
                    decorated = WithReducer.new
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    return decorated if logger.nil?
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    WithReducerLogDecorator.new(
         | 
| 12 | 
            +
                      monitored_organizer,
         | 
| 13 | 
            +
                      :decorated => decorated,
         | 
| 14 | 
            +
                      :logger => logger
         | 
| 15 | 
            +
                    )
         | 
| 12 16 | 
             
                  end
         | 
| 13 17 | 
             
                end
         | 
| 14 18 | 
             
              end
         | 
| @@ -5,10 +5,10 @@ module LightService | |
| 5 5 |  | 
| 6 6 | 
             
                  alias logged? logged
         | 
| 7 7 |  | 
| 8 | 
            -
                  def initialize(organizer, decorated  | 
| 8 | 
            +
                  def initialize(organizer, decorated: WithReducer.new, logger:)
         | 
| 9 9 | 
             
                    @decorated = decorated
         | 
| 10 10 | 
             
                    @organizer = organizer
         | 
| 11 | 
            -
                    @logger =  | 
| 11 | 
            +
                    @logger = logger
         | 
| 12 12 | 
             
                    @logged = false
         | 
| 13 13 | 
             
                  end
         | 
| 14 14 |  | 
    
        data/light-service.gemspec
    CHANGED
    
    | @@ -16,10 +16,10 @@ Gem::Specification.new do |gem| | |
| 16 16 | 
             
              gem.require_paths = ["lib"]
         | 
| 17 17 | 
             
              gem.version       = LightService::VERSION
         | 
| 18 18 |  | 
| 19 | 
            -
              gem. | 
| 20 | 
            -
             | 
| 19 | 
            +
              gem.add_development_dependency("activesupport", ">= 5.2.2")
         | 
| 21 20 | 
             
              gem.add_development_dependency("rspec", "~> 3.0")
         | 
| 22 21 | 
             
              gem.add_development_dependency("simplecov", "~> 0.16.1")
         | 
| 23 | 
            -
              gem.add_development_dependency("rubocop", "~> 0. | 
| 24 | 
            -
              gem.add_development_dependency(" | 
| 22 | 
            +
              gem.add_development_dependency("rubocop", "~> 0.68.0")
         | 
| 23 | 
            +
              gem.add_development_dependency("rubocop-performance", "~> 1.2.0")
         | 
| 24 | 
            +
              gem.add_development_dependency("pry", "~> 0.12.2")
         | 
| 25 25 | 
             
            end
         | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "Log from an organizer with a custom logger" do
         | 
| 4 | 
            +
              context "when overriding the global LightService organizer" do
         | 
| 5 | 
            +
                let(:global_logger_organizer) do
         | 
| 6 | 
            +
                  Class.new do
         | 
| 7 | 
            +
                    extend LightService::Organizer
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    def self.call(number)
         | 
| 10 | 
            +
                      with(:number => number).reduce(actions)
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    def self.actions
         | 
| 14 | 
            +
                      [
         | 
| 15 | 
            +
                        TestDoubles::AddsOneAction,
         | 
| 16 | 
            +
                        TestDoubles::AddsTwoAction,
         | 
| 17 | 
            +
                        TestDoubles::AddsThreeAction
         | 
| 18 | 
            +
                      ]
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                let(:global_logger_string) { StringIO.new }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                let(:custom_logger_string) { StringIO.new }
         | 
| 26 | 
            +
                let(:custom_logger_organizer) do
         | 
| 27 | 
            +
                  custom_logger = Logger.new(custom_logger_string)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  Class.new do
         | 
| 30 | 
            +
                    extend LightService::Organizer
         | 
| 31 | 
            +
                    log_with custom_logger
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    def self.call(coffee, this_hot = :very_hot)
         | 
| 34 | 
            +
                      with(:milk => this_hot, :coffee => coffee)
         | 
| 35 | 
            +
                        .reduce(TestDoubles::MakesLatteAction,
         | 
| 36 | 
            +
                                TestDoubles::AddsTwoActionWithFetch)
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                before do
         | 
| 42 | 
            +
                  @original_global_logger = LightService::Configuration.logger
         | 
| 43 | 
            +
                  LightService::Configuration.logger = Logger.new(global_logger_string)
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                it "logs in own logger" do
         | 
| 47 | 
            +
                  global_logger_organizer.call(1)
         | 
| 48 | 
            +
                  custom_logger_organizer.call(:coffee => "Cappucino")
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  expect(custom_logger_string.string).to include("MakesLatteAction")
         | 
| 51 | 
            +
                  expect(custom_logger_string.string).to_not include("AddsOneAction")
         | 
| 52 | 
            +
                  expect(global_logger_string.string).to include("AddsOneAction")
         | 
| 53 | 
            +
                  expect(global_logger_string.string).to_not include("MakesLatteAction")
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                after do
         | 
| 57 | 
            +
                  LightService::Configuration.logger = @original_global_logger
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
            end
         | 
| @@ -1,24 +1,50 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
            RSpec.describe " | 
| 4 | 
            -
               | 
| 5 | 
            -
                 | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
                   | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 3 | 
            +
            RSpec.describe "fail_and_return!" do
         | 
| 4 | 
            +
              describe "returns immediately from executed block" do
         | 
| 5 | 
            +
                class FailAndReturnAction
         | 
| 6 | 
            +
                  extend LightService::Action
         | 
| 7 | 
            +
                  promises :one, :two
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  executed do |ctx|
         | 
| 10 | 
            +
                    ctx.one = 1
         | 
| 11 | 
            +
                    # Have to set it in Context
         | 
| 12 | 
            +
                    ctx.two = nil
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    ctx.fail_and_return!('Something went wrong')
         | 
| 15 | 
            +
                    ctx.two = 2
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                it "returns immediately from executed block" do
         | 
| 20 | 
            +
                  result = FailAndReturnAction.execute
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  expect(result).to be_failure
         | 
| 23 | 
            +
                  expect(result.two).to be_nil
         | 
| 15 24 | 
             
                end
         | 
| 16 25 | 
             
              end
         | 
| 17 26 |  | 
| 18 | 
            -
               | 
| 19 | 
            -
                 | 
| 27 | 
            +
              describe "accepts error_code option" do
         | 
| 28 | 
            +
                class FailAndReturnWithErrorCodeAction
         | 
| 29 | 
            +
                  extend LightService::Action
         | 
| 30 | 
            +
                  promises :one, :two
         | 
| 20 31 |  | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 32 | 
            +
                  executed do |ctx|
         | 
| 33 | 
            +
                    ctx.one = 1
         | 
| 34 | 
            +
                    # Have to set it in Context
         | 
| 35 | 
            +
                    ctx.two = nil
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    ctx.fail_and_return!('Something went wrong', :error_code => 401)
         | 
| 38 | 
            +
                    ctx.two = 2
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                it "returned context contains the error_code" do
         | 
| 43 | 
            +
                  result = FailAndReturnWithErrorCodeAction.execute
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  expect(result).to be_failure
         | 
| 46 | 
            +
                  expect(result.error_code).to eq 401
         | 
| 47 | 
            +
                  expect(result.two).to be_nil
         | 
| 48 | 
            +
                end
         | 
| 23 49 | 
             
              end
         | 
| 24 50 | 
             
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -15,8 +15,9 @@ end | |
| 15 15 | 
             
            require 'light-service'
         | 
| 16 16 | 
             
            require 'light-service/testing'
         | 
| 17 17 | 
             
            require 'ostruct'
         | 
| 18 | 
            -
            require 'active_support/core_ext/string'
         | 
| 19 18 | 
             
            require 'pry'
         | 
| 20 19 | 
             
            require 'support'
         | 
| 20 | 
            +
            require 'test_doubles'
         | 
| 21 | 
            +
            require 'stringio'
         | 
| 21 22 |  | 
| 22 23 | 
             
            I18n.enforce_available_locales = true
         | 
    
        data/spec/test_doubles.rb
    CHANGED
    
    | @@ -269,6 +269,18 @@ module TestDoubles | |
| 269 269 | 
             
                end
         | 
| 270 270 | 
             
              end
         | 
| 271 271 |  | 
| 272 | 
            +
              class AddsOne
         | 
| 273 | 
            +
                extend LightService::Organizer
         | 
| 274 | 
            +
             | 
| 275 | 
            +
                def call(ctx)
         | 
| 276 | 
            +
                  with(ctx).reduce(actions)
         | 
| 277 | 
            +
                end
         | 
| 278 | 
            +
             | 
| 279 | 
            +
                def self.actions
         | 
| 280 | 
            +
                  [AddsOneAction]
         | 
| 281 | 
            +
                end
         | 
| 282 | 
            +
              end
         | 
| 283 | 
            +
             | 
| 272 284 | 
             
              class AddsOneAction
         | 
| 273 285 | 
             
                extend LightService::Action
         | 
| 274 286 | 
             
                expects :number
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: light-service
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.12.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Attila Domokos
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2019-05-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version:  | 
| 20 | 
            -
              type: : | 
| 19 | 
            +
                    version: 5.2.2
         | 
| 20 | 
            +
              type: :development
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version:  | 
| 26 | 
            +
                    version: 5.2.2
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: rspec
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -58,28 +58,42 @@ dependencies: | |
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version:  | 
| 61 | 
            +
                    version: 0.68.0
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: 0.68.0
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: rubocop-performance
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - "~>"
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: 1.2.0
         | 
| 62 76 | 
             
              type: :development
         | 
| 63 77 | 
             
              prerelease: false
         | 
| 64 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 79 | 
             
                requirements:
         | 
| 66 80 | 
             
                - - "~>"
         | 
| 67 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version:  | 
| 82 | 
            +
                    version: 1.2.0
         | 
| 69 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 84 | 
             
              name: pry
         | 
| 71 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 86 | 
             
                requirements:
         | 
| 73 87 | 
             
                - - "~>"
         | 
| 74 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version:  | 
| 89 | 
            +
                    version: 0.12.2
         | 
| 76 90 | 
             
              type: :development
         | 
| 77 91 | 
             
              prerelease: false
         | 
| 78 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 93 | 
             
                requirements:
         | 
| 80 94 | 
             
                - - "~>"
         | 
| 81 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version:  | 
| 96 | 
            +
                    version: 0.12.2
         | 
| 83 97 | 
             
            description: A service skeleton with an emphasis on simplicity
         | 
| 84 98 | 
             
            email:
         | 
| 85 99 | 
             
            - adomokos@gmail.com
         | 
| @@ -136,6 +150,7 @@ files: | |
| 136 150 | 
             
            - spec/acceptance/after_actions_spec.rb
         | 
| 137 151 | 
             
            - spec/acceptance/around_each_spec.rb
         | 
| 138 152 | 
             
            - spec/acceptance/before_actions_spec.rb
         | 
| 153 | 
            +
            - spec/acceptance/custom_log_from_organizer_spec.rb
         | 
| 139 154 | 
             
            - spec/acceptance/fail_spec.rb
         | 
| 140 155 | 
             
            - spec/acceptance/include_warning_spec.rb
         | 
| 141 156 | 
             
            - spec/acceptance/log_from_organizer_spec.rb
         | 
| @@ -204,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 204 219 | 
             
                  version: '0'
         | 
| 205 220 | 
             
            requirements: []
         | 
| 206 221 | 
             
            rubyforge_project: 
         | 
| 207 | 
            -
            rubygems_version: 2.6 | 
| 222 | 
            +
            rubygems_version: 2.7.6
         | 
| 208 223 | 
             
            signing_key: 
         | 
| 209 224 | 
             
            specification_version: 4
         | 
| 210 225 | 
             
            summary: A service skeleton with an emphasis on simplicity
         | 
| @@ -213,6 +228,7 @@ test_files: | |
| 213 228 | 
             
            - spec/acceptance/after_actions_spec.rb
         | 
| 214 229 | 
             
            - spec/acceptance/around_each_spec.rb
         | 
| 215 230 | 
             
            - spec/acceptance/before_actions_spec.rb
         | 
| 231 | 
            +
            - spec/acceptance/custom_log_from_organizer_spec.rb
         | 
| 216 232 | 
             
            - spec/acceptance/fail_spec.rb
         | 
| 217 233 | 
             
            - spec/acceptance/include_warning_spec.rb
         | 
| 218 234 | 
             
            - spec/acceptance/log_from_organizer_spec.rb
         |