RubyMine/IDEA ruby​​调试器无法在bundler模​​式下加载linecache gem

ted*_*ddy 4 ruby gem ruby-on-rails rubymine bundler

在捆绑器中启动调试器(在运行目标的捆绑器选项卡中选中"在捆绑包上下文中运行脚本"选项)在IDEA 13(以及早期版本,例如11)Ruby,我总是得到

/Users/me/.rvm/rubies/ree-1.8.7-2012.02/bin/ruby -e at_exit{sleep(1)};$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/me/.rvm/gems/ree-1.8.7-2012.02/gems/ruby-debug-ide-0.4.22/bin/rdebug-ide --disable-int-handler --port 58100 --dispatcher-port 58101 -- /Users/me/railproj/script/spec --format specdoc spec/**/any_ruby_spec.rb
/Users/me/.rvm/gems/ree-1.8.7-2012.02/gems/ruby-debug-base-0.10.5.rc9/lib/ruby-debug-base.rb:3:in `require': no such file to load -- linecache (LoadError)
    from /Users/me/.rvm/gems/ree-1.8.7-2012.02/gems/ruby-debug-base-0.10.5.rc9/lib/ruby-debug-base.rb:3
    from /Users/me/Library/Application Support/IntelliJIdea13/ruby/rb/gems/debug_preloader.rb:2:in `require'
    from /Users/me/Library/Application Support/IntelliJIdea13/ruby/rb/gems/debug_preloader.rb:2
Run Code Online (Sandbox Code Playgroud)

linecache gem正确安装

$ gem which linecache
/Users/me/.rvm/gems/ree-1.8.7-2012.02/gems/linecache-0.46/lib/linecache.rb
Run Code Online (Sandbox Code Playgroud)

将行缓存放在Gemfile中根本没有用.

但是为没有bundler的同一个运行目标启动调试器(取消选中"在bundle上下文中运行脚本")可以工作.当然,人们可以通过捆绑上下文轻松地获得宝石冲突.

怎么解决这个问题?

ted*_*ddy 6

我找到了解决方案/解决方法:只需添加

require 'rubygems'
Run Code Online (Sandbox Code Playgroud)

到ruby-debug-base.rb的第一行(确保添加到RM/Idea使用的右边,因为可以有多个版本.)

但我仍然不知道为什么没有捆绑选项它会工作.我觉得情况恰恰相反.

  • 这对我也有用,谢谢.请考虑将其标记为已接受的答案. (2认同)