fringd / zipline

A gem that lets you stream a zip file from rails
MIT License
288 stars 68 forks source link

rails 7.1.2 #91

Closed lowercase closed 7 months ago

lowercase commented 9 months ago

Hi/ In rails 7.1.2 from ActionDispatch::Response::Buffer#to_ary call method Zipline::ZipGenerator#each without block:

def to_ary                                                                                                                                                                                                       
   @buf.respond_to?(:to_ary) ?                                                                                                                                                                                    
       @buf.to_ary :                                                                                                                                                                                                
       @buf.each                                                                                                                                                                                                    
end

and all falls, because you are creating ZipTricks::BlockWrite.new(nil). Need fix

joker-777 commented 9 months ago

I'm having the same issue.

brentgreeff commented 8 months ago

I dont want to hijack but since upgrading to 7.1.2 I am seeing a similar issue (stacktrace below).

After changing my Gemfile

gem 'zipline', github: 'joker-777/zipline', branch: 'rails-7-1-2-not-working'

Its working well - thanks @joker-777

Puma caught this error: undefined method `call' for nil:NilClass

    @block.call(buf.b)
          ^^^^^ (NoMethodError)
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/block_write.rb:44:in `<<'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/write_buffer.rb:63:in `flush'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/write_buffer.rb:49:in `<<'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/write_and_tell.rb:13:in `<<'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/streamer/deflated_writer.rb:26:in `block in <<'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/streamer/deflated_writer.rb:26:in `deflate'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/streamer/deflated_writer.rb:26:in `<<'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/streamer/writable.rb:23:in `<<'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/streamer/writable.rb:32:in `write'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:94:in `copy_stream'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:94:in `block in write_file'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/streamer.rb:359:in `write_deflated_file'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:84:in `write_file'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:43:in `handle_file'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:35:in `block (2 levels) in each'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:34:in `each'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:34:in `block in each'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zip_tricks-5.6.0/lib/zip_tricks/streamer.rb:107:in `open'
/Users/brentgreeff/.rvm/gems/ruby-3.1.2@axs-new/gems/zipline-1.5.0/lib/zipline/zip_generator.rb:33:in `each'