问题
使用 RubyMine 2016.2.4 使用 Run > Debug 时出现类似错误。
/Users/Mp/.rvm/rubies/ruby-2.3.0/bin/ruby -e at_exit{sleep(1)};$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/Mp/.rvm/gems/ruby-2.3.0@global/gems/ruby-debug-ide-0.6.0/bin/rdebug-ide --disable-int-handler --evaluation-timeout 10 --rubymine-protocol-extensions --port 54743 --host 0.0.0.0 --dispatcher-port 54744 -- /Users/Mp/code/apps/ruby_test/team_system/team.rb
Fast Debugger (ruby-debug-ide 0.6.0, debase 0.2.1, file filtering is supported) listens on 0.0.0.0:54743
Process finished with exit code 0
最初,当我在示例 ruby 文件 team.rb 中设置断点并运行 Run > Debug 它工作(控制台显示0>
而不是Process finished with exit code 0
)
class Team
attr_reader :size
def initialize(size)
@size = size
end
end
team = Team.new(100)
我花了几个小时试图解决它,但没有成功,跟随互联网上的帖子。我准备重新安装 RubyMine,我决定联系他们的支持电子邮件。我告诉我已经尝试了一切,例如:
- 重新启动我的电脑
- 重新启动 RubyMine 并运行
rm -rf .idea
- 跑步
gem pristine --all
- 尝试使用 ruby 2.1.2 而不是 2.3.0 (ie
rvm install 2.1.2
rvm list
rvm use 2.1.2
)
- 检查我的 RVM 版本
rvm -v
rvm 1.26.11
gem env
使用和检查宝石的位置which ruby
。这表明它们在 /usr/bin/ruby 和 /Users/Ls/.rvm/rubies/ruby-2.3.0/bin/ruby 中
gem uninstall ...
在全局 Ruby 位置和默认 RVM 中卸载(即)相关 gem
- 重新安装它们
$ gem install debug_inspector
$ gem install debugger-linecache
$ gem install ruby-debug-ide
$ gem install debase
$ gem install debase-ruby_core_source
$ gem install -i /Users/Ls/.rvm/gems/ruby-2.3.0@global debug_inspector
$ gem install -i /Users/Ls/.rvm/gems/ruby-2.3.0@global debug-linecache
$ gem install -i /Users/Ls/.rvm/gems/ruby-2.3.0@global ruby-debug-ide
$ gem install -i /Users/Ls/.rvm/gems/ruby-2.3.0@global debase
$ gem install -i /Users/Ls/.rvm/gems/ruby-2.3.0@global debase-ruby_core_source
$ gem install linecache19-0.5.13.gem
- 跑步
bundle update
- 更新到 RubyMine 2016.2.4
- 转到文件 > 默认设置 > 语言和框架 > Ruby SDK 和 Gems > 并选择使用 RVM:ruby-2.3.0
- 去运行 > 编辑当前 ruby 文件的配置,并在配置选项卡中单击“使用其他 SDK”并选择 RVM:ruby-2.3.0 [global](我也尝试选择 RVM:ruby-2.3.0)
解决方案
我从 RubyMine 支持获得反馈,建议我向他们展示输出gem list
并打开详细输出(设置 > 构建、执行、部署 > 调试器 > 详细调试器)。
他们的反馈没有立即回复,而是给了我一个强有力的线索,这一定是由 gem 冲突引起的,所以我尝试了以下方法,让它再次工作!
- 清除 RubyMine 缓存
File > Invalidate Caches & Restart > Invalidate Caches & Restart
- 显示了全局存储在 RVM 2.3.0(全局)和 RVM 2.3.0(默认)中的 Ruby gem。注意:我已经过滤了下面显示的列表以仅显示相关的列表
$ GEM_PATH=$GEM_HOME gem list
LOCAL GEMS
debase (0.2.1)
debase-ruby_core_source (0.9.2)
debug_inspector (0.0.2)
debugger-linecache (1.2.0)
linecache19 (0.5.13)
ruby-debug-ide (0.6.1.beta2, 0.6.0)
ruby_core_source (0.1.5)
$ rvm ruby-2.3.0 do gem list
LOCAL GEMS
debase (0.2.1)
debase-ruby_core_source (0.9.2)
debug_inspector (0.0.2)
debugger-linecache (1.2.0)
linecache19 (0.5.13)
ruby-debug-ide (0.6.1.beta2, 0.6.0)
ruby_core_source (0.1.5)
$ rvm ruby-2.3.0 @global do gem list
LOCAL GEMS
debase (0.2.1)
debase-ruby_core_source (0.9.2)
debug_inspector (0.0.2)
linecache19 (0.5.13)
ruby-debug-ide (0.6.0)
- 安装了最新版本的 Ruby
$ rvm install ruby-2.3.1
- 在 RVM 2.3.1(全局)和 RVM 2.3.1(默认)中显示 Ruby gem。两者结果相同
$ rvm ruby-2.3.1 do gem list
$ rvm ruby-2.3.1 @global do gem list
LOCAL GEMS
bigdecimal (1.2.8)
did_you_mean (1.0.0)
gem-wrappers (1.2.7)
io-console (0.4.5)
json (1.8.3)
minitest (5.8.3)
net-telnet (0.1.1)
power_assert (0.2.6)
psych (2.0.17)
rake (10.4.2)
rdoc (4.2.1)
rvm (1.11.3.9)
test-unit (3.1.5)
- 检查 RVM 的当前版本并从 1.26.11 升级到最新版本 1.27.0
$ rvm -v
$ rvm get stable
$ rvm reload
$ rvm list
- 使用 RubyMine https://rvm.io/gemsets/basics专门为容纳 gem 创建了一个 Gemset 以测试功能
rvm ruby-2.3.1 do rvm gemset create rubymine_2016_4_2
- 检查的 Ruby 版本已更改
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
- 打开 RubyMine 2016_2_4 并转到文件 > 默认设置 > 语言和框架 > Ruby SDK 和 Gems。我取消选择 RVM:ruby-2.3.0,然后选择 RVM:ruby-2.3.1 rubymine_2016_2_4。然后我单击“绿色勾号”图标将其用于项目,最后单击确定
- 打开我想要调试的 team.rb 文件后,我打开了 Run > Edit Configurations。然后我选择了Other SDK: RVM: ruby-2.3.1 [rubymine_2016_2_4],最后点击OK。这导致出现一个弹出窗口,说明:“当前未安装调试器所需的 gem debase。您要安装它吗?”。我点击是
- 检查 RubyMine 如何更改我的自定义 rubymine_2016_2_4 gemset
$ rvm ruby-2.3.1@rubymine_2016_2_4 do gem list
LOCAL GEMS
bigdecimal (1.2.8)
debase (0.2.2.beta8, 0.2.1)
debase-ruby_core_source (0.9.2)
did_you_mean (1.0.0)
gem-wrappers (1.2.7)
io-console (0.4.5)
json (1.8.3)
minitest (5.8.3)
net-telnet (0.1.1)
power_assert (0.2.6)
psych (2.0.17)
rake (10.4.2)
rdoc (4.2.1)
ruby-debug-ide (0.6.1.beta2)
rvm (1.11.3.9)
test-unit (3.1.5)
- 通过在示例 ruby 文件 team.rb 中设置断点再次尝试调试,然后运行 Run > Debug。它工作并控制台显示它
0>
而不是Process finished with exit code 0