From 69d0e690bb632c0f67d8bb55988e91f61aff68f8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 6 Sep 2024 13:06:56 +0900 Subject: [PATCH] Added force_require for binding.irb When we make irb to bundled gems, binding.irb with bundle exec is not working without irb declaration of Gemfile. This force_require makes to load irb without Gemfile. --- prelude.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/prelude.rb b/prelude.rb index ee78b44cc5..e64c242db6 100644 --- a/prelude.rb +++ b/prelude.rb @@ -1,12 +1,30 @@ class Binding # :nodoc: def irb - require 'irb' + begin + require 'irb' + rescue LoadError + force_require "irb" if defined?(Bundler) + end irb end # suppress redefinition warning alias irb irb # :nodoc: + + private def force_require(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_require dep.name } + gemspec.activate + require gem.gsub("-", "/") + end + end end module Kernel