From 358dd2d705478026bdac55f7ee0690364363f25e Mon Sep 17 00:00:00 2001 From: a_matsuda Date: Thu, 15 Jun 2017 10:43:17 +0000 Subject: Don't pollute toplevel by an IRB internal method There actually are some libraries that requires 'irb' such as byebug, and when 'irb' is required, it requires irb/src_encoding.rb, then it defines the toplevel default_src_encoding method that is visible from anywhere in the end users' apps. Here's a quick oneliner that shows what's happening. % ruby -rpry-byebug -e 'p private_methods(false)' [:include, :using, :define_method, :public, :private, :DelegateClass, :default_src_encoding] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/irb/magic-file.rb | 2 +- lib/irb/src_encoding.rb | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/irb/magic-file.rb b/lib/irb/magic-file.rb index 2dee684657..34e06d64b3 100644 --- a/lib/irb/magic-file.rb +++ b/lib/irb/magic-file.rb @@ -10,7 +10,7 @@ module IRB line = io.gets if line[0,2] == "#!" encoding = detect_encoding(line) internal_encoding = encoding - encoding ||= default_src_encoding + encoding ||= IRB.default_src_encoding io.rewind io.set_encoding(encoding, internal_encoding) diff --git a/lib/irb/src_encoding.rb b/lib/irb/src_encoding.rb index 32f997fc7c..99aea2b43e 100644 --- a/lib/irb/src_encoding.rb +++ b/lib/irb/src_encoding.rb @@ -1,5 +1,7 @@ # frozen_string_literal: false # DO NOT WRITE ANY MAGIC COMMENT HERE. -def default_src_encoding - return __ENCODING__ +module IRB + def self.default_src_encoding + return __ENCODING__ + end end -- cgit v1.2.3