X7ROOT File Manager
Current Path:
/opt/alt/ruby20/lib64/ruby/gems/2.0.0/gems/rack-1.6.4/lib/rack
opt
/
alt
/
ruby20
/
lib64
/
ruby
/
gems
/
2.0.0
/
gems
/
rack-1.6.4
/
lib
/
rack
/
ðŸ“
..
ðŸ“
auth
ðŸ“
backports
📄
body_proxy.rb
(958 B)
📄
builder.rb
(4.27 KB)
📄
cascade.rb
(1.34 KB)
📄
chunked.rb
(1.58 KB)
📄
commonlogger.rb
(2.28 KB)
📄
conditionalget.rb
(2.5 KB)
📄
config.rb
(379 B)
📄
content_length.rb
(840 B)
📄
content_type.rb
(670 B)
📄
deflater.rb
(4.57 KB)
📄
directory.rb
(4.2 KB)
📄
etag.rb
(2.11 KB)
📄
file.rb
(4.09 KB)
ðŸ“
handler
📄
handler.rb
(3.25 KB)
📄
head.rb
(484 B)
📄
lint.rb
(29.26 KB)
📄
lobster.rb
(1.97 KB)
📄
lock.rb
(601 B)
📄
logger.rb
(357 B)
📄
methodoverride.rb
(1.01 KB)
📄
mime.rb
(30.94 KB)
📄
mock.rb
(5.68 KB)
ðŸ“
multipart
📄
multipart.rb
(1.14 KB)
📄
nulllogger.rb
(951 B)
📄
recursive.rb
(1.73 KB)
📄
reloader.rb
(2.97 KB)
📄
request.rb
(12.59 KB)
📄
response.rb
(4.33 KB)
📄
rewindable_input.rb
(3.19 KB)
📄
runtime.rb
(961 B)
📄
sendfile.rb
(5.18 KB)
📄
server.rb
(10.8 KB)
ðŸ“
session
📄
showexceptions.rb
(11.7 KB)
📄
showstatus.rb
(3.46 KB)
📄
static.rb
(4.88 KB)
📄
tempfile_reaper.rb
(670 B)
📄
urlmap.rb
(2.46 KB)
ðŸ“
utils
📄
utils.rb
(20.86 KB)
Editing: rewindable_input.rb
# -*- encoding: binary -*- require 'tempfile' require 'rack/utils' module Rack # Class which can make any IO object rewindable, including non-rewindable ones. It does # this by buffering the data into a tempfile, which is rewindable. # # rack.input is required to be rewindable, so if your input stream IO is non-rewindable # by nature (e.g. a pipe or a socket) then you can wrap it in an object of this class # to easily make it rewindable. # # Don't forget to call #close when you're done. This frees up temporary resources that # RewindableInput uses, though it does *not* close the original IO object. class RewindableInput def initialize(io) @io = io @rewindable_io = nil @unlinked = false end def gets make_rewindable unless @rewindable_io @rewindable_io.gets end def read(*args) make_rewindable unless @rewindable_io @rewindable_io.read(*args) end def each(&block) make_rewindable unless @rewindable_io @rewindable_io.each(&block) end def rewind make_rewindable unless @rewindable_io @rewindable_io.rewind end # Closes this RewindableInput object without closing the originally # wrapped IO oject. Cleans up any temporary resources that this RewindableInput # has created. # # This method may be called multiple times. It does nothing on subsequent calls. def close if @rewindable_io if @unlinked @rewindable_io.close else @rewindable_io.close! end @rewindable_io = nil end end private # Ruby's Tempfile class has a bug. Subclass it and fix it. class Tempfile < ::Tempfile def _close @tmpfile.close if @tmpfile @data[1] = nil if @data @tmpfile = nil end end def make_rewindable # Buffer all data into a tempfile. Since this tempfile is private to this # RewindableInput object, we chmod it so that nobody else can read or write # it. On POSIX filesystems we also unlink the file so that it doesn't # even have a file entry on the filesystem anymore, though we can still # access it because we have the file handle open. @rewindable_io = Tempfile.new('RackRewindableInput') @rewindable_io.chmod(0000) @rewindable_io.set_encoding(Encoding::BINARY) if @rewindable_io.respond_to?(:set_encoding) @rewindable_io.binmode if filesystem_has_posix_semantics? # Use ::File.unlink as 1.9.1 Tempfile has a bug where unlink closes the file! ::File.unlink @rewindable_io.path raise 'Unlink failed. IO closed.' if @rewindable_io.closed? @unlinked = true end buffer = "" while @io.read(1024 * 4, buffer) entire_buffer_written_out = false while !entire_buffer_written_out written = @rewindable_io.write(buffer) entire_buffer_written_out = written == Rack::Utils.bytesize(buffer) if !entire_buffer_written_out buffer.slice!(0 .. written - 1) end end end @rewindable_io.rewind end def filesystem_has_posix_semantics? RUBY_PLATFORM !~ /(mswin|mingw|cygwin|java)/ end end end
Upload File
Create Folder