diff options
Diffstat (limited to 'prelude.rb')
| -rw-r--r-- | prelude.rb | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/prelude.rb b/prelude.rb index 02d93efdd9..b6c610dd58 100644 --- a/prelude.rb +++ b/prelude.rb @@ -1,49 +1,41 @@ class Binding # :nodoc: - def irb - if defined?(Bundler) && !Gem.loaded_specs["irb"] - unless force_activate "irb" - warn "irb is not found. Install irb from RubyGems or add irb to Gemfile." - end + def irb(...) + suppress = Thread.current[:__bundled_gems_warning_suppression] + Thread.current[:__bundled_gems_warning_suppression] = ['reline', 'rdoc'] + + begin + require 'irb' + rescue LoadError, Gem::LoadError + Gem::BUNDLED_GEMS.force_activate 'irb' + require 'irb' end - require 'irb' - irb + irb(...) + ensure + Thread.current[:__bundled_gems_warning_suppression] = suppress end # suppress redefinition warning alias irb irb # :nodoc: - - private def force_activate(gem) - gemspecs = (Gem::Specification.dirs + [Gem.default_specifications_dir]).map{|d| - Dir.glob("#{d}/#{gem}*.gemspec").reverse - }.flatten - if gemspecs.empty? - false - else - gemspec = Gem::Specification.load(gemspecs[0]) - gemspec.dependencies.each{|dep| force_activate dep.name } - gemspec.activate - end - end end module Kernel + # :stopdoc: def pp(*objs) require 'pp' pp(*objs) end # suppress redefinition warning - alias pp pp # :nodoc: + alias pp pp private :pp + # :startdoc: end -autoload :Set, 'set' - module Enumerable # Makes a set from the enumerable object with given arguments. - def to_set(klass = Set, *args, &block) - klass.new(self, *args, &block) - end unless instance_methods.include?(:to_set) # RJIT could already load this from builtin prelude + def to_set(&block) + Set.new(self, &block) + end end |
