ruby/lib/rubygems/package/io_source.rb
nagachika 996b1bfa95 merge revision(s) 53707,53708,53709,53712,53777,53781: [Backport #12326]
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.5.2.
	  It supports to enable frozen string literal and add `--norc` option for
	  disable to `.gemrc` configuration.
	  See 2.5.2 release notes for other fixes and enhancements.
	  a8aa3bac72/History.txt (L3)

	* lib/rubygems/specification.rb: `coding` is affect only first line except
	  shebang.

	* lib/rubygems/package.rb, lib/rubygems/package/*: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@56003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-24 15:28:23 +00:00

46 lines
769 B
Ruby

# frozen_string_literal: true
##
# Supports reading and writing gems from/to a generic IO object. This is
# useful for other applications built on top of rubygems, such as
# rubygems.org.
#
# This is a private class, do not depend on it directly. Instead, pass an IO
# object to `Gem::Package.new`.
class Gem::Package::IOSource < Gem::Package::Source # :nodoc: all
attr_reader :io
def initialize io
@io = io
end
def start
@start ||= begin
if io.pos > 0
raise Gem::Package::Error, "Cannot read start unless IO is at start"
end
value = io.read 20
io.rewind
value
end
end
def present?
true
end
def with_read_io
yield io
end
def with_write_io
yield io
end
def path
end
end