2012-07-26 16 views
17

Przepraszam za długość pytania, ale chcę wyjaśnić, że nie popełniam głupich błędów!Nie można debugować w RubyMine 4.5 za pomocą Ruby 1.9.3

Więc walczę aby uzyskać debugowanie działa w rubymine 4,5 użyciu Ruby 1.9.3, moje kroki są następujące:

świeże (czyli po usunięciu wszystkich poprzednich ruby ​​gem i katalogów) zainstalować Ruby 1.9.3 , Ruby Gems, DevKit i Rails (po this guide) - to działa dobrze.

Następnie próbuję rozpocząć pracę z rubinem mojego zespołu. Otwieram katalog w RubyMine (pamiętając najpierw o usunięciu katalogu .idea) i pojawia się monit o wykonanie bundle install, które wykonuję (z konsoli) zgodnie z żądaniem. To się udało. Uruchom ponownie RubyMine.

I wtedy zapewnić Ruby pracuje: Narzędzia> IRB Console>puts "test"#test => nil - Współpracuje Spróbuję teraz debuggera (SHIFT + F9) i pojawi się komunikat:

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

klikam anuluj i czek moja Gemfile, jedynymi związane debugowania obecne są:

# 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' 

Wygląda mamy debugger na korzyść ruby-debug. Czytanie here, jednak wydaje się, że debugger jest niewystarczające. Muszę zainstalować ruby-debug-base19x. Więc, po SO, I ustosunkowania się debuggera z Gemfile i uruchomić

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

które działają dobrze, więc dodam

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

do mojego Gemfile i uruchomić bundle install z konsoli.

Wreszcie, otwieram debugger wewnątrz RubyMine (SHIFT + F9). Ponownie działa puts "test" #test => nil. Więc staram podwójne kliknięcie w rynsztoku mojego skryptu, aby utworzyć punkt przerwania, rubymine zatrzymuje się na chwilę, a potem dostać:

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 

Próbowałem również przy użyciu kopii zapasowej kodu i wykonując te same czynności, ja również otrzymuję następujący błąd, gdy próbuje załadować debuggera:

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)>' 

Nie ma nic złego w skrypcie (Użyłem go w porządku przed) i wydaje ślad związane ruby-debug-ide - co się dzieje?

Dzięki za pomoc - doprowadza mnie to do szału!

+0

Proszę podać niewielki przykładowy projekt, aby odtworzyć ten problem. – CrazyCoder

+0

Dziękuję za odpowiedź, ale nie jestem pewien, co chcesz, abym dostarczył? Mogę dać ci moją pełną Gemfile, Gemfile.lock lub wydrukować moje Ruby ENV? – rwb

+0

Zapakuj i udostępnij katalog przykładowym skryptem, projektem RubyMine (katalog '.idea'), który pokaże, gdzie ustawiony jest punkt przerwania,' Gemfile', 'Gemfile.lock'. – CrazyCoder

Odpowiedz

17

UPDATE: RubyMine 6+ obsługuje klejnot debuggera.

Pamiętaj, aby usunąć gem 'debugger' ze swojego Gemfile, jest to znany konflikt, który przerwie debugowanie z RubyMine. Potrzebujesz tylko 2 klejnoty związane z debuggerem, dokładnie tak, jak podano w moim another answer powiązanym z twoim pytaniem.

Po usunięciu klejnotu należy upewnić się, że nie jest on nigdzie w projekcie wymieniony. W tym konkretnym przypadku r_spec_runner.rb miał require 'ruby-debug' błąd powodujący błąd cannot load such file -- ruby-debug podczas próby uruchomienia rails console.

+0

Zrobiłem. Skomentuję gem 'debugger', zainstaluję dwa klejnoty debugowania, a następnie dodaję je do mojego gemfile, a na końcu aktualizuję pakiet – rwb

+2

. Zauważ, że od RubyMine 4.5 możesz wyłączyć "gem" debuggera 'debugger' w następujący sposób: chyba że ENV [ "RM_INFO"] '. – CrazyCoder

+1

Dla osób, które wciąż mają problemy po wykonaniu tej odpowiedzi, jeśli używasz Mac OSX, upewnij się, że nazwa twojego komputera jest ustawiona w Preferencjach systemowych | Dzielenie się. Zajęło mi to na zawsze zrozumienie tego. Więcej szczegółów tutaj: http://youtrack.jetbrains.com/issue/RUBY-8990 –

3

Miałem ten sam problem i kosztowało mnie to wiele godzin, aby działało. Oto co w końcu debuggera Going (to jest przy użyciu RVM):

  • Quit rubymine
  • Jeśli jest zainstalowany Ruby 1.9.3, odinstaluj go: rvm remove 1.9.3
  • zainstalować Ruby 1.9.3 pod RVM: rvm install 1.9.3 --with-gcc=clang - to daje błąd „nieobsługiwany opcji«--with-libyaml»”, ale ja nie widziałem żadnych objawów chorobowych z tego jeszcze
  • Przełącz się na nowy rubin: rvm use 1.9.3
  • listy i usunąć wszystkie ruby-debug * klejnoty: gem list | grep debug - gem uninstall <found gems>
  • Pobierz linecache19 z http://rubyforge.org/frs/?group_id=8883 i zainstaluj klejnot, tj .: gem install linecache19-0.5.13.gem
  • Lauch RubyMine i uruchom debuggera; poinformuje o brakujących kamieniach debugowania (np. ruby-debug-ide); niech RubyMine je zainstaluje.

To wtedy zaczął działać debugger. Zobacz także ten rubymine support dyskusję http://devnet.jetbrains.com/message/5443846#5443846

+1

Nie można już pobrać 0.5.13. Czas ładowania strony. Nie rozumiem, jak RM jest wysyłany bez działającego debuggera. – Jason

+0

Po uruchomieniu 'gem build gem build linecache19-0.5.13.gemspec' po' git clone [email protected]: robmathews/linecache19-0.5.13' Oto plik, jeśli mi zaufałeś :) https: //dl.dropbox .com/u/9632169/linecache19-0.5.13.gem – crizCraig

+0

Nie miałem żadnych problemów z RubyMine 5. Wydaje się pracować po wyjęciu z pudełka po zainstalowaniu potrzebnych klejnotów. – shadowbrush

9

Aby uniknąć tego problemu Mam ten wiersz w moim Gemfile:
gem 'debugger' unless ENV["RM_INFO"]

+0

AFAIK to nie wpłynie na Gemfile.lock, więc ludzie używający RubyMine nadal będą się borykać – orbiteleven

+2

[To powinno działać] (http://youtrack.jetbrains.com/issue/RUBY-11800 #comment=27-417333). – CrazyCoder

0

wreszcie to dzisiaj pracuje z ogromnym kludge hack. Myślę, że krok, który to zrobił był

  1. sudo chmod -R 777 ~/.rvm

  2. Niech rubymine do jego rzecz

Ja również zadbał, aby odinstalować każdy gem miałem oprócz rake. Myślę, że ważne są: reby-debug-ide, ruby-debug-base19x, linecache19, ruby_core_source, archive-tar-minitar i columnize. Odinstalowałem także rvm i ponownie zainstalowałem z klangiem. Ale najpierw spróbowałbym zrobić chmod. Próbowałem zmienić na 766, ale RubyMine tego nie lubił. Tak wielki jest ten kludge. Dostaję teraz dużo ostrzeżeń o Insecure world, ale przynajmniej działa debugger. Dość pewna, że ​​następna wersja RubyMine nie będzie używać starego ruby-debug-base19x, ale zamiast tego, ostatnio edytowane klejnoty o numerze https://github.com/ruby-debug. Miejmy nadzieję, że ktoś w niesamowitym JetBrains to naprawi. Btw również próbował uruchomić RubyMine z sudo mine, ale to też nie wystarczyło.

6

Wystarczy udokumentować rozwiązanie z JetBrains: skorzystać z:

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

czyli

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

Daje to pewność, że Gemfile.lock pozostaje niezmieniona, więc grupa o mieszanym rubymine i vi/sublime/cokolwiek może działać szczęśliwie, nie wymagając gem w środowisku RubyMine.

0

Miałem problemy z debuggerem. Zainstalowałem Railsy i ustaw ścieżkę w opcjach konfiguracyjnych na ruby.exe w instalacji rails i wszystko działa idealnie.

+0

Więcej komentarza niż odpowiedź. Pls uważają, że jest to komentarz. –

Powiązane problemy