attempt_to 0.3 → 0.4
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 +7 -0
- data/lib/attempt_to/attempt_to.rb +17 -1
- data/lib/attempt_to/version.rb +1 -1
- data/spec/attempt_to_spec.rb +19 -6
- metadata +42 -47
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 9cee4b7546988224234bf6ce6290c5af576b1db1
         | 
| 4 | 
            +
              data.tar.gz: 1ec8e3c7ec2105db8e2326e7131bd3c6b34dc233
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 02eb2d298df2af64bc20b0dc00fbd603c89c6eb0e20db89d4140f29a42b2fb2406bb465a1f8d4cd2718c58880af6a4be98144e2d4f0511c1c25eefb35bc2c145
         | 
| 7 | 
            +
              data.tar.gz: 8f5baa089c594cdb1ac94aa004563b0a7992adcb33e56e7682067682bad4f83f3e0bf067792ba11263159ff28a79fea9b8295abd233c8d3d5dad46cf4cd23946
         | 
| @@ -14,8 +14,24 @@ module AttemptTo | |
| 14 14 | 
             
                  end
         | 
| 15 15 | 
             
                }
         | 
| 16 16 | 
             
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def self.attempt_to_with_timeout(seconds)
         | 
| 19 | 
            +
                Timeout::timeout(seconds) {
         | 
| 20 | 
            +
                  success = false
         | 
| 21 | 
            +
                  while not success
         | 
| 22 | 
            +
                    begin
         | 
| 23 | 
            +
                      success = yield
         | 
| 24 | 
            +
                    rescue Exception
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                }
         | 
| 28 | 
            +
              end
         | 
| 17 29 | 
             
            end
         | 
| 18 30 |  | 
| 19 31 | 
             
            def attempt_to(something, amount, &code_block)
         | 
| 20 32 | 
             
              AttemptTo.attempt_to(something, amount, &code_block)
         | 
| 21 | 
            -
            end
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            def attempt_to_with_timeout(seconds, &code_block)
         | 
| 36 | 
            +
              AttemptTo.attempt_to_with_timeout(seconds, &code_block)
         | 
| 37 | 
            +
            end
         | 
    
        data/lib/attempt_to/version.rb
    CHANGED
    
    
    
        data/spec/attempt_to_spec.rb
    CHANGED
    
    | @@ -20,7 +20,7 @@ describe "Attempt to do something a couple of times, if it fails, bail out." do | |
| 20 20 | 
             
                  "returns"
         | 
| 21 21 | 
             
                }.should == "returns"
         | 
| 22 22 | 
             
              end
         | 
| 23 | 
            -
             | 
| 23 | 
            +
             | 
| 24 24 | 
             
              it "calls the block multiple times when it fails " do
         | 
| 25 25 | 
             
                Kernel.should_receive(:puts).with("Failed attempt #1 to do something. Error message: wrong 1")
         | 
| 26 26 | 
             
                attempt_to("do something", 3) {
         | 
| @@ -29,7 +29,7 @@ describe "Attempt to do something a couple of times, if it fails, bail out." do | |
| 29 29 | 
             
                }
         | 
| 30 30 | 
             
                @attempts.should == 2
         | 
| 31 31 | 
             
              end
         | 
| 32 | 
            -
             | 
| 32 | 
            +
             | 
| 33 33 | 
             
              it "bails out aften the maximum amount of attempts" do
         | 
| 34 34 | 
             
                Kernel.should_receive(:puts).exactly(3).times
         | 
| 35 35 | 
             
                Kernel.should_receive(:puts).with("Attempted 3 times to do this. Giving up...")
         | 
| @@ -39,15 +39,28 @@ describe "Attempt to do something a couple of times, if it fails, bail out." do | |
| 39 39 | 
             
                    raise(Exception, "wrong!")
         | 
| 40 40 | 
             
                  }
         | 
| 41 41 | 
             
                }.should raise_error(SystemExit)
         | 
| 42 | 
            -
             | 
| 42 | 
            +
             | 
| 43 43 | 
             
                @attempts.should == 3
         | 
| 44 44 | 
             
              end
         | 
| 45 | 
            -
             | 
| 45 | 
            +
             | 
| 46 46 | 
             
              # it "Can run the example code" do
         | 
| 47 47 | 
             
              #   attempt_to('connect to the network', 3) {
         | 
| 48 48 | 
             
              #     TCPSocket.new("some.very.weird.domain.name", 9342)
         | 
| 49 49 | 
             
              #   }
         | 
| 50 | 
            -
              # | 
| 50 | 
            +
              #
         | 
| 51 51 | 
             
              # end
         | 
| 52 | 
            -
             | 
| 52 | 
            +
              #
         | 
| 53 | 
            +
              it "can do an attempt_to with a timeout" do
         | 
| 54 | 
            +
                attempt_to_with_timeout(1) {
         | 
| 55 | 
            +
                  @attempts += 1
         | 
| 56 | 
            +
                  raise(Exception, "wrong #{@attempts}") if @attempts < 5
         | 
| 57 | 
            +
                  @attempts > 10
         | 
| 58 | 
            +
                }
         | 
| 59 | 
            +
                @attempts.should == 11
         | 
| 60 | 
            +
              end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
              it "will return a Timeout when the condition never happens" do
         | 
| 63 | 
            +
                expect { attempt_to_with_timeout(0.3) { false } }.to raise_error(Timeout::Error, "execution expired")
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
             | 
| 53 66 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,49 +1,50 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: attempt_to
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 5 | 
            -
              version: "0.3"
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: '0.4'
         | 
| 6 5 | 
             
            platform: ruby
         | 
| 7 | 
            -
            authors: | 
| 6 | 
            +
            authors:
         | 
| 8 7 | 
             
            - Bas Vodde
         | 
| 9 8 | 
             
            autorequire: 
         | 
| 10 9 | 
             
            bindir: bin
         | 
| 11 10 | 
             
            cert_chain: []
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
            dependencies: 
         | 
| 16 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 11 | 
            +
            date: 2014-07-05 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 17 14 | 
             
              name: rake
         | 
| 18 | 
            -
               | 
| 19 | 
            -
             | 
| 20 | 
            -
                none: false
         | 
| 21 | 
            -
                requirements: 
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 22 17 | 
             
                - - ">="
         | 
| 23 | 
            -
                  - !ruby/object:Gem::Version | 
| 24 | 
            -
                    version:  | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '0'
         | 
| 25 20 | 
             
              type: :runtime
         | 
| 26 | 
            -
              version_requirements: *id001
         | 
| 27 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 28 | 
            -
              name: rspec
         | 
| 29 21 | 
             
              prerelease: false
         | 
| 30 | 
            -
               | 
| 31 | 
            -
                 | 
| 32 | 
            -
                 | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ">="
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: rspec
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 33 31 | 
             
                - - ">="
         | 
| 34 | 
            -
                  - !ruby/object:Gem::Version | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 35 33 | 
             
                    version: 2.0.0
         | 
| 36 34 | 
             
              type: :development
         | 
| 37 | 
            -
               | 
| 38 | 
            -
             | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ">="
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: 2.0.0
         | 
| 41 | 
            +
            description: AttemptTo calls a code block and re-tries it if it throws an exception.
         | 
| 42 | 
            +
              Otherwise exits
         | 
| 39 43 | 
             
            email: basv@odd-e.com
         | 
| 40 44 | 
             
            executables: []
         | 
| 41 | 
            -
             | 
| 42 45 | 
             
            extensions: []
         | 
| 43 | 
            -
             | 
| 44 46 | 
             
            extra_rdoc_files: []
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            files: 
         | 
| 47 | 
            +
            files:
         | 
| 47 48 | 
             
            - Gemfile
         | 
| 48 49 | 
             
            - README.md
         | 
| 49 50 | 
             
            - Rakefile
         | 
| @@ -52,33 +53,27 @@ files: | |
| 52 53 | 
             
            - lib/attempt_to/attempt_to.rb
         | 
| 53 54 | 
             
            - lib/attempt_to/version.rb
         | 
| 54 55 | 
             
            - spec/attempt_to_spec.rb
         | 
| 55 | 
            -
            has_rdoc: true
         | 
| 56 56 | 
             
            homepage: https://github.com/basvodde/attempt_to
         | 
| 57 57 | 
             
            licenses: []
         | 
| 58 | 
            -
             | 
| 58 | 
            +
            metadata: {}
         | 
| 59 59 | 
             
            post_install_message: 
         | 
| 60 60 | 
             
            rdoc_options: []
         | 
| 61 | 
            -
             | 
| 62 | 
            -
            require_paths: 
         | 
| 61 | 
            +
            require_paths:
         | 
| 63 62 | 
             
            - lib
         | 
| 64 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 65 | 
            -
               | 
| 66 | 
            -
              requirements: 
         | 
| 63 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 64 | 
            +
              requirements:
         | 
| 67 65 | 
             
              - - ">="
         | 
| 68 | 
            -
                - !ruby/object:Gem::Version | 
| 69 | 
            -
                  version:  | 
| 70 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement | 
| 71 | 
            -
               | 
| 72 | 
            -
              requirements: 
         | 
| 66 | 
            +
                - !ruby/object:Gem::Version
         | 
| 67 | 
            +
                  version: '0'
         | 
| 68 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 69 | 
            +
              requirements:
         | 
| 73 70 | 
             
              - - ">="
         | 
| 74 | 
            -
                - !ruby/object:Gem::Version | 
| 75 | 
            -
                  version:  | 
| 71 | 
            +
                - !ruby/object:Gem::Version
         | 
| 72 | 
            +
                  version: '0'
         | 
| 76 73 | 
             
            requirements: []
         | 
| 77 | 
            -
             | 
| 78 74 | 
             
            rubyforge_project: 
         | 
| 79 | 
            -
            rubygems_version:  | 
| 75 | 
            +
            rubygems_version: 2.2.2
         | 
| 80 76 | 
             
            signing_key: 
         | 
| 81 | 
            -
            specification_version:  | 
| 77 | 
            +
            specification_version: 4
         | 
| 82 78 | 
             
            summary: AttemptTo is a small utility for attempting a code block multiple times
         | 
| 83 79 | 
             
            test_files: []
         | 
| 84 | 
            -
             |