Skip to content

Commit 3fdb5d1

Browse files
committed
[GR-15191] Make StringIO available by default because RubyGems requires it.
PullRequest: truffleruby/859
2 parents 683e1b6 + 112ce9e commit 3fdb5d1

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Compatibility
2121
* `Hash#merge` now preserves the key order from the original hash for merged values (#1650).
2222
* Coerce values given to `FFI::Pointer` methods.
2323
* `FrozenError` is now defined and is used for `can't modify frozen` object exceptions.
24+
* `StringIO` is now available by default like in MRI, because it is required by RubyGems.
2425

2526
Changes:
2627

lib/truffle/truffle/lazy-rubygems.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ class Object
3838
autoload :RbConfig, 'rbconfig'
3939
# Defined by RbConfig
4040
autoload :CROSS_COMPILING, 'rbconfig'
41+
42+
# StringIO is required by RubyGems
43+
autoload :StringIO, 'stringio'
4144
end
4245
end
4346
end
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
slow:RubyGems is not loaded until needed
22
slow:RubyGems is loaded when accessing Gem
33
slow:RubyGems is loaded by a failing require
4+
slow:Lazy RubyGems defines StringIO like RubyGems which requires it eagerly

spec/truffle/lazy_rubygems_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,10 @@
2626
$?.success?.should == true
2727
end
2828
end
29+
30+
describe "Lazy RubyGems" do
31+
# See https://github.com/rubygems/rubygems/issues/2772
32+
it "defines StringIO like RubyGems which requires it eagerly" do
33+
ruby_exe('puts StringIO').should == "StringIO\n"
34+
end
35+
end

0 commit comments

Comments
 (0)