Невозможно выполнить отладку в RubyMine 4.5 с использованием Ruby 1.9.3

Прошу прощения за длину вопроса, но я хочу прояснить, что не делаю глупых ошибок!

Итак, я изо всех сил пытаюсь заставить работать отладку в RubyMine 4.5, используя Ruby 1.9.3, мои шаги следующие:

Свежая (т.е. с удалением всех предыдущих каталогов ruby ​​и gem) установка Ruby 1.9.3, Ruby Gems, DevKit и Rails (после on-rails-on-win7/" rel="nofollow noreferrer">этого руководства) - отлично работает.

Затем я пытаюсь начать работать с рубиновым кодом моей команды. Я открываю каталог в RubyMine (не забывая сначала удалить каталог .idea), и мне предлагается запустить bundle install, что я и делаю (из консоли) в соответствии с запросом. Это завершается успешно. Перезапустите RubyMine.

Затем я проверяю, работает ли Ruby: Инструменты > Консоль 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. Однако прочтения здесь кажется 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 — что происходит?

Спасибо за любую помощь - это сводит меня с ума!


person rwb    schedule 26.07.2012    source источник
comment
Предоставьте небольшой пример проекта, чтобы воспроизвести эту проблему.   -  person CrazyCoder    schedule 26.07.2012
comment
Спасибо за ответ, но я не уверен, что вы хотите, чтобы я предоставил? Я могу дать вам мой полный Gemfile, Gemfile.lock или распечатать мой Ruby ENV?   -  person rwb    schedule 26.07.2012
comment
Заархивируйте и поделитесь каталогом с образцом сценария, проектом RubyMine (каталог .idea), который покажет, где установлена ​​точка останова, Gemfile, Gemfile.lock.   -  person CrazyCoder    schedule 26.07.2012
comment
Я не хочу загружать свой скрипт, так как это IP моей компании (и это не проблема). Я обновил и расширил свой вопрос с новыми симптомами, поскольку я каким-то образом преодолел предыдущую ошибку и теперь вернулся к ошибке, которая у меня была раньше (сегодня я переустанавливал много раз!) Это помогает?   -  person rwb    schedule 26.07.2012
comment
Вы имеете в виду, что ошибка специфична для этого конкретного скрипта, которым вы можете поделиться, и что вы не можете воспроизвести эту проблему с любым другим скриптом?   -  person CrazyCoder    schedule 26.07.2012
comment
Нет. Это никоим образом не относится к сценарию. Это происходит с любым файлом .rb в моей установке RubyMine. Я считаю, что проблема заключается в несовместимости отладочных драгоценных камней. Я сделаю еще одну новую установку и попытаюсь перефразировать вопрос (я видел так много ошибок, я не уверен, что включить - отсюда и путаница выше).   -  person rwb    schedule 26.07.2012
comment
Вы можете подготовить и опубликовать фиктивный проект с аналогичной конфигурацией и любым скриптом, не защищенным вашим IP.   -  person CrazyCoder    schedule 26.07.2012
comment
давайте продолжим это обсуждение в чате   -  person rwb    schedule 26.07.2012


Ответы (6)


ОБНОВЛЕНИЕ: RubyMine 6+ поддерживает гем отладчика.

Обязательно удалите gem 'debugger' из Gemfile, это известный конфликт, который нарушит отладку RubyMine. Вам нужно только 2 драгоценных камня, связанных с отладчиком, точно так, как указано в моем другом ответе, связанном с вашим вопросом.

После удаления драгоценного камня вам необходимо убедиться, что он нигде не упоминается в проекте. В этом конкретном случае r_spec_runner.rb имел оператор require 'ruby-debug', вызывающий ошибку cannot load such file -- ruby-debug при попытке запустить rails console.

person CrazyCoder    schedule 26.07.2012
comment
Я сделал. Я комментирую gem 'debugger', устанавливаю два отладочных гема, затем добавляю их в свой gemfile и, наконец, связываю обновление. - person rwb; 26.07.2012
comment
Обратите внимание, что, начиная с RubyMine 4.5, вы можете отключить debugger код, связанный с драгоценными камнями, следующим образом: gem "debugger" unless ENV["RM_INFO"]. - person CrazyCoder; 27.07.2012
comment
Для тех, у кого все еще возникают проблемы после выполнения этого ответа, если вы используете Mac OSX, убедитесь, что имя вашего компьютера установлено в Системных настройках | Обмен. Мне понадобилась целая вечность, чтобы понять это. Подробнее здесь: youtrack.jetbrains.com/issue/RUBY-8990 - person Jeff Cutler-Stamm; 20.02.2013
comment
Как только я закомментировал «отладчик» gem в своем Gemfile, он начал работать. - person Donato; 24.05.2015

Чтобы избежать этой проблемы, у меня есть эта строка в моем Gemfile:
gem 'debugger' unless ENV["RM_INFO"]

person code1n    schedule 11.10.2012
comment
Насколько я знаю, это не повлияет на Gemfile.lock, поэтому люди, использующие RubyMine, все равно будут скучать. - person orbiteleven; 20.12.2012
comment
Это должно работать. - person CrazyCoder; 09.02.2013

Просто для документирования решения от jetbrains: используйте либо:

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

Or:

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

Это гарантирует, что Gemfile.lock останется неизменным, поэтому группа со смешанным RubyMine и vi/sublime/что угодно может успешно работать, не требуя драгоценного камня в среде RubyMine.

person JAR.JAR.beans    schedule 18.03.2013

У меня была такая же проблема, и мне потребовалось несколько часов, чтобы заставить ее работать. Вот что, наконец, заставило отладчик работать (используется RVM):

  • Выйти из RubyMine
  • Если установлен Ruby 1.9.3, удалите его: rvm remove 1.9.3
  • Установите Ruby 1.9.3 под RVM: rvm install 1.9.3 --with-gcc=clang - это выдает ошибку "unsupported option '--with-libyaml'", но я еще не видел никаких побочных эффектов от этого
  • Переключиться на новый рубин: rvm use 1.9.3
  • Список и удаление всех гемов ruby-debug*: gem list | grep debug - gem uninstall <found gems>
  • Загрузите linecache19 с http://rubyforge.org/frs/?group_id=8883 и установите драгоценный камень, то есть: gem install linecache19-0.5.13.gem
  • Запустите RubyMine и запустите отладчик; он сообщит об отсутствующих драгоценных камнях отладки (например, ruby-debug-ide); пусть RubyMine установит их.

Вот когда отладчик начал работать. См. также это обсуждение поддержки RubyMine: http://devnet.jetbrains.com/message/5443846#5443846< /а>

person shadowbrush    schedule 02.09.2012
comment
Больше не могу скачать 0.5.13. Время загрузки страницы истекло. Я не понимаю, как RM поставляется без работающего отладчика. - person Jason; 09.11.2012
comment
Я запустил gem build gem build linecache19-0.5.13.gemspec после git clone [email protected]:robmathews/linecache19-0.5.13 Вот файл, если вы мне доверяете :) dl. dropbox.com/u/9632169/linecache19-0.5.13.gem - person crizCraig; 03.02.2013
comment
У меня не было никаких проблем с RubyMine 5. Кажется, он работает из коробки после того, как он установил необходимые драгоценные камни. - person shadowbrush; 16.02.2013

Наконец-то это заработало сегодня с огромным взломом клуджа. Я думаю, что шаг, который сделал это, был

  1. sudo chmod -R 777 ~/.rvm

  2. Пусть RubyMine сделает свое дело

Я также удалил все имеющиеся у меня драгоценные камни, кроме rake. Я думаю, что reby-debug-ide, ruby-debug-base19x, linecache19, ruby_core_source, archive-tar-minitar и columnize являются важными. Я также удалил rvm и переустановил с помощью clang. Но я бы сначала попробовал просто сделать chmod. Я попытался перейти на 766, но RubyMine это не понравилось. Такой огромный клудж-хак. Теперь я получаю много предупреждений о Insecure world, но, по крайней мере, отладчик работает. Почти уверен, что следующая версия RubyMine не будет использовать старый ruby-debug-base19x. , но вместо этого недавно отредактированные драгоценные камни на https://github.com/ruby-debug. Надеюсь, кто-нибудь из замечательных JetBrains это исправит. Кстати, также пытался запустить RubyMine с sudo mine, но это тоже не помогло.

person Community    schedule 03.02.2013

У меня были некоторые проблемы с отладчиком. Я установил Rails и указал путь в параметрах конфигурации к ruby.exe в установке rails, и все работает отлично.

person Hans van der Waal    schedule 06.03.2016
comment
Больше комментарий, чем ответ. Пожалуйста, рассмотрите возможность сделать это комментарием. - person K.Nicholas; 07.03.2016