sync-defer 0.9.3 → 0.9.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.
- data/CHANGES.md +9 -0
- data/Rakefile +1 -1
- data/lib/eventmachine/sync-defer.rb +2 -2
- data/lib/sync-defer.rb +5 -1
- data/sync-defer.gemspec +2 -2
- data/test/test_sync-defer.rb +19 -2
- metadata +2 -2
    
        data/CHANGES.md
    CHANGED
    
    | @@ -1,5 +1,14 @@ | |
| 1 1 | 
             
            # CHANGES
         | 
| 2 2 |  | 
| 3 | 
            +
            ## sync-defer 0.9.4 -- 2012-03-21
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Fixed a bug that where there's an exception in multiple computations,
         | 
| 6 | 
            +
              the fiber should not be resumed twice or more times. This bug is caught
         | 
| 7 | 
            +
              by JRuby.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * `SyncDefer.defer` should also return only one value if there's only one
         | 
| 10 | 
            +
              computation.
         | 
| 11 | 
            +
             | 
| 3 12 | 
             
            ## sync-defer 0.9.3 -- 2012-03-20
         | 
| 4 13 |  | 
| 5 14 | 
             
            * Also work without a reactor in the generic interface: `SyncDefer.defer`,
         | 
    
        data/Rakefile
    CHANGED
    
    
| @@ -45,11 +45,11 @@ module EventMachine::SyncDefer | |
| 45 45 | 
             
                    },
         | 
| 46 46 | 
             
                    lambda{ |result|
         | 
| 47 47 | 
             
                      if exception
         | 
| 48 | 
            -
                        fiber.resume(nil, exception)
         | 
| 48 | 
            +
                        fiber.resume(nil, exception) if fiber.alive?
         | 
| 49 49 | 
             
                      else
         | 
| 50 50 | 
             
                        results[index] = result
         | 
| 51 51 | 
             
                        fiber.resume(results.sort.map(&:last), nil) if
         | 
| 52 | 
            -
                          results.size == funcs.size
         | 
| 52 | 
            +
                          results.size == funcs.size && fiber.alive?
         | 
| 53 53 | 
             
                      end
         | 
| 54 54 | 
             
                    })
         | 
| 55 55 | 
             
                end
         | 
    
        data/lib/sync-defer.rb
    CHANGED
    
    | @@ -22,7 +22,11 @@ module SyncDefer | |
| 22 22 | 
             
                               "Only cool.io and eventmachine are supported.")
         | 
| 23 23 | 
             
                  $stderr.puts("           Called from: #{caller.last(5).inspect}")
         | 
| 24 24 | 
             
                  args << block if block_given?
         | 
| 25 | 
            -
                  args. | 
| 25 | 
            +
                  if args.size == 1
         | 
| 26 | 
            +
                    args.first.call
         | 
| 27 | 
            +
                  else
         | 
| 28 | 
            +
                    args.map(&:call)
         | 
| 29 | 
            +
                  end
         | 
| 26 30 | 
             
                end
         | 
| 27 31 | 
             
              end
         | 
| 28 32 | 
             
            end
         | 
    
        data/sync-defer.gemspec
    CHANGED
    
    | @@ -2,11 +2,11 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |s|
         | 
| 4 4 | 
             
              s.name = "sync-defer"
         | 
| 5 | 
            -
              s.version = "0.9. | 
| 5 | 
            +
              s.version = "0.9.4"
         | 
| 6 6 |  | 
| 7 7 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 8 8 | 
             
              s.authors = ["Lin Jen-Shin (godfat)"]
         | 
| 9 | 
            -
              s.date = "2012-03- | 
| 9 | 
            +
              s.date = "2012-03-21"
         | 
| 10 10 | 
             
              s.description = "Synchronous deferred operations with fibers (coroutines)"
         | 
| 11 11 | 
             
              s.email = ["godfat (XD) godfat.org"]
         | 
| 12 12 | 
             
              s.files = [
         | 
    
        data/test/test_sync-defer.rb
    CHANGED
    
    | @@ -94,7 +94,7 @@ begin | |
| 94 94 | 
             
                        EM.stop
         | 
| 95 95 | 
             
                      }.resume
         | 
| 96 96 | 
             
                    }
         | 
| 97 | 
            -
                    result.inspect.should  | 
| 97 | 
            +
                    result.inspect.should.eql [0, 1, 2, 3].inspect
         | 
| 98 98 | 
             
                  end
         | 
| 99 99 |  | 
| 100 100 | 
             
                  should 'defer_multi' do
         | 
| @@ -107,7 +107,7 @@ begin | |
| 107 107 | 
             
                        EM.stop
         | 
| 108 108 | 
             
                      }.resume
         | 
| 109 109 | 
             
                    }
         | 
| 110 | 
            -
                    result.inspect.should  | 
| 110 | 
            +
                    result.inspect.should.eql [0, 1, 2, 3].inspect
         | 
| 111 111 | 
             
                  end
         | 
| 112 112 |  | 
| 113 113 | 
             
                  should 'raise the exception' do
         | 
| @@ -141,3 +141,20 @@ begin | |
| 141 141 | 
             
            rescue LoadError => e
         | 
| 142 142 | 
             
              puts "eventmachine is not installed, skipping: #{e}"
         | 
| 143 143 | 
             
            end
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            describe SyncDefer do
         | 
| 146 | 
            +
              after do
         | 
| 147 | 
            +
                RR.verify
         | 
| 148 | 
            +
              end
         | 
| 149 | 
            +
             | 
| 150 | 
            +
              should 'also work without a reactor, but print a warning' do
         | 
| 151 | 
            +
                mock($stderr).puts(is_a(String)).times(2)
         | 
| 152 | 
            +
                SyncDefer.defer{ 123 }.should.eql 123
         | 
| 153 | 
            +
              end
         | 
| 154 | 
            +
             | 
| 155 | 
            +
              should 'multiple computations' do
         | 
| 156 | 
            +
                mock($stderr).puts(is_a(String)).times(2)
         | 
| 157 | 
            +
                SyncDefer.defer(lambda{1}, lambda{2}){ 3 }.
         | 
| 158 | 
            +
                  inspect.should.eql [1, 2, 3].inspect
         | 
| 159 | 
            +
              end
         | 
| 160 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sync-defer
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.4
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-03- | 
| 12 | 
            +
            date: 2012-03-21 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies: []
         | 
| 14 14 | 
             
            description: Synchronous deferred operations with fibers (coroutines)
         | 
| 15 15 | 
             
            email:
         |