2012-07-26 103 views
17

我对问题的长度表示歉意,但我想说清楚我没有犯任何愚蠢的错误!无法在RubyMine 4.5中使用Ruby 1.9.3进行调试

所以,我挣扎着爬调试中的RubyMine 4.5使用Ruby 1.9.3的工作,我的步骤如下:

新鲜(即在去除所有先前的红宝石和宝石目录)安装Ruby 1.9.3的,Ruby Gems,DevKit和Rails(以下是this guide) - 工作正常。

然后我尝试着开始使用我团队的ruby代码。我打开RubyMine中的目录(记得首先删除.idea目录),并提示我按照要求运行bundle install(从控制台)。这成功完成。重新启动RubyMine。

我则确保红宝石工作:工具> IRB控制台>puts "test"#test => nil - 工程 我现在尝试调试器(SHIFT + F9),并看到消息:

The gem ruby-debug-base19x required by the debugger is currently not installed. Would you like to install it?"

我点击取消和检查我的Gemfile,唯一与调试相关的是:

# Debugging 
gem 'debugger' 
#gem 'ruby-debug-base19', :require => false 
#gem 'ruby-debug19', :require => false 
gem 'ruby-prof', :require => false #, :git => 'git://github.com/wycats/ruby-prof.git' 

看起来我们有调试器支持ruby-debug。读here,但是,似乎debugger是不够的。我需要安装ruby-debug-base19x。所以,以下SO,我从Gemfile中注释掉调试和运行

gem install ruby-debug-base19x --pre 
gem install ruby-debug-ide --pre 

其中运行良好,所以我加

gem 'ruby-debug-base19x', '0.11.30.pre10' 
gem 'ruby-debug-ide', '0.4.17.beta14' 

我Gemfile中,并运行控制台bundle install

最后,我打开RubyMine(SHIFT + F9)里面的调试器。并且puts "test" #test => nil再次工作。所以我尽量双击在我的脚本的排水沟,以建立一个断点,RubyMine的停顿了一秒钟,然后我得到:

D:\Ruby\Ruby193\bin\ruby.exe -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-debug-ide-0.4.17.beta14/bin/rdebug-ide --dispatcher-port 55451 --port 55452 -- S:/code/account_groups/script/rails console 
Fast Debugger (ruby-debug-ide 0.4.17.beta14, ruby-debug-base 0.11.30.pre10) listens on 127.0.0.1:55452 
D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/debugger-1.1.4/lib/ruby_debug.so: warning: already initialized constant VERSION 
5992: Exception in DebugThread loop: undefined method `errmsg' for #<Debugger::ControlState:0x2a2f3e8> 
Backtrace: 
D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/debugger-1.1.4/lib/ruby-debug/command.rb:160:in `errmsg' 
    from: D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/debugger-1.1.4/lib/ruby-debug/commands/breakpoints.rb:81:in `execute' 
    from: D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-debug-ide-0.4.17.beta14/lib/ruby-debug-ide/ide_processor.rb:89:in `block in process_commands' 
    from: D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-debug-ide-0.4.17.beta14/lib/ruby-debug-ide/ide_processor.rb:86:in `catch' 
    from: D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-debug-ide-0.4.17.beta14/lib/ruby-debug-ide/ide_processor.rb:86:in `process_commands' 
    from: D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/ruby-debug-ide-0.4.17.beta14/lib/ruby-debug-ide.rb:160:in `block in start_control' 

Process finished with exit code 0 

我已经使用的代码的备份副本,并按照相同的步骤也试过,我也得到试图加载调试器时出现以下错误:

Uncaught exception: cannot load such file -- ruby-debug 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `block in require' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:236:in `load_dependency' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
    S:/code/account_groups_so/lib/systematic-online/r_spec_runner.rb:5:in `<top (required)>' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `block in require' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:236:in `load_dependency' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
    S:/code/account_groups_so/config/environment.rb:12:in `block in <top (required)>' 
    S:/code/account_groups_so/config/environment.rb:12:in `each' 
    S:/code/account_groups_so/config/environment.rb:12:in `<top (required)>' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `block in require' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:236:in `load_dependency' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/application.rb:103:in `require_environment!' 
    D:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/commands.rb:40:in `<top (required)>' 
    S:/code/account_groups_so/script/rails:6:in `require' 
    S:/code/account_groups_so/script/rails:6:in `<top (required)>' 

没有什么错的脚本(我以前也蛮好用的),也跟踪似乎与ruby-debug-ide - 这是怎么回事?

感谢您的任何帮助 - 这让我生气!

+0

请提供一个小样本项目来重现此问题。 – CrazyCoder 2012-07-26 16:15:52

+0

感谢您的回应,但我不确定您希望我提供什么?我可以给你我完整的Gemfile,Gemfile.lock或者打印出我的Ruby ENV? – rwb 2012-07-26 16:33:11

+0

使用示例脚本,RubyMine项目('.idea'目录)来压缩和共享目录,该目录将显示设置断点的位置,'Gemfile','Gemfile.lock'。 – CrazyCoder 2012-07-26 16:35:43

回答

17

UPDATE:RubyMine 6+支持调试宝石。

请确保从您的Gemfile中删除gem 'debugger',这是一个已知的冲突,它将破坏RubyMine的调试。您只需要2个与调试器相关的宝石,正如您的问题中链接到的another answer中所述。

删除宝石后,您需要确保它不在项目中的任何位置引用。在这种特殊情况下r_spec_runner.rbrequire 'ruby-debug'语句导致cannot load such file -- ruby-debug错误,当试图运行rails console时。

+0

我已经完成了。注释掉gem'debugger',安装两个调试宝石,然后将它们添加到我的gemfile中,最后绑定更新 – rwb 2012-07-26 17:59:49

+2

请注意,由于RubyMine 4.5可以禁用'debugger' gem相关代码,如下所示:'gem“debugger” “RM_INFO”]'。 – CrazyCoder 2012-07-26 20:42:05

+1

对于那些在遵循这个答案之后仍然有问题的人,如果您在Mac OSX上,请确保您的计算机名称已在系统偏好设置|共享。我花了很长时间才弄明白这一点。更多细节在这里:http://youtrack.jetbrains.com/issue/RUBY-8990 – 2013-02-20 18:54:05

3

我有同样的问题,并花费我几个小时才能使它工作。以下是终于得到了去调试器(这是使用RVM):

  • 退出的RubyMine
  • 如果安装了Ruby 1.9.3,卸载它:rvm remove 1.9.3
  • 下RVM安装Ruby 1.9.3:rvm install 1.9.3 --with-gcc=clang - 这将产生错误“‘--with-libyaml’不支持的选项”,但我还没有看到这个尚未
  • 切换到新的Ruby任何不良影响:rvm use 1.9.3
  • 列表,删除所有红宝石调试*宝石:gem list | grep debug - gem uninstall <found gems>
  • http://rubyforge.org/frs/?group_id=8883下载linecache19并安装该宝石,即:gem install linecache19-0.5.13.gem
  • Lauch RubyMine,并运行调试器;它会通知有关缺少的调试宝石(即ruby-debug-ide);让RubyMine安装这些。

这就是调试器开始工作的时候。另见本的RubyMine支持讨论:http://devnet.jetbrains.com/message/5443846#5443846

+1

似乎无法再下载0.5.13。页面加载超时。我不明白RM如何在没有调试器的情况下运行。 – Jason 2012-11-09 19:26:48

+0

我在'git clone [email protected]:robmathews/linecache19-0.5.13'后跑'gem build gem build linecache19-0.5.13.gemspec'这里的文件如果你信任我:) https://dl.dropbox .com/u/9632169/linecache19-0.5.13.gem – crizCraig 2013-02-03 08:12:04

+0

我对RubyMine 5没有任何问题。似乎在安装所需的gem之后就开箱即用。 – shadowbrush 2013-02-15 21:55:30

9

要我Gemfile逃避这个问题,我有这样一行:
gem 'debugger' unless ENV["RM_INFO"]

+0

AFAIK这不会影响Gemfile.lock,所以使用RubyMine的人仍然会得到borked – orbiteleven 2012-12-19 20:46:28

+2

[This should work](http://youtrack.jetbrains.com/issue/RUBY-11800#comment=27-417333)。 – CrazyCoder 2013-02-09 03:35:09

0

终于得到了这个工作小组今日与一个巨大的杂牌组装电脑黑客。我认为做的一步是

  1. sudo chmod -R 777 ~/.rvm

  2. 我们的RubyMine做它的事

我也确信卸载每一个宝石我除了rake。我认为reby-debug-ide,ruby-debug-base19x,linecache19,ruby_core_source,archive-tar-minitarcolumnize是重要的。我也卸载了rvm并重新安装了clang。但我会尝试先做chmod的事情。我尝试改为766,但RubyMine不喜欢它。如此巨大的kludge就是这样。我现在得到了很多有关Insecure world的警告,但至少调试器正在工作。很确定下一个版本的RubyMine不会使用旧的ruby-debug-base19x,而是最近编辑的宝石https://github.com/ruby-debug。所以希望JetBrains的人会修复它。顺便说一句,也尝试运行RubyMine sudo mine,但这也没有办法。

6

只是为了记录从JetBrains公司的解决方案:要么 用途:

gem 'debugger', {group: [:test, :development]}.merge(ENV['RM_INFO'] ? {require: false} : {}) 

或者:

gem 'pry-debug', {group: [:test, :development]}.merge(ENV['RM_INFO'] ? {require: false} : {}) 

这可确保Gemfile.lock的保持不变,所以混合RubyMine的一组vi/sublime /无论什么都可以愉快地工作,不需要RubyMine环境中的宝石。

0

我在调试器时遇到了一些问题。 我安装了Rails,并将配置选项中的路径设置为rails安装中的ruby.exe,并且所有工作都很完美。

+0

更多评论而非答案。请考虑将此作为评论。 – 2016-03-06 22:23:24