2012-01-16 3 views
7

Я хочу использовать отладчик IDE Rubyine для отладки рубинового процесса, запущенного в командной оболочке, так как он порожден, например. от "rails console".Как подключить отладчик Ruby IDE к процессу оболочки?

Я получил большой пробег из отладчика при запуске веб-сервера (изнутри Rubymine) или наборов тестов (также запускаемых из Rubyine).

Однако, если процесс не запущен Rubyine, я не понимаю, как подключить отладчик.

Я использую версию RubyMine 3.2.4 на Ubuntu с Sun Java 1.6.0_26, Рубин РЗЭ 1.8.7, и последние отладочные драгоценные камни:

ruby-debug-base (0.10.4) 
ruby-debug-ide (0.4.17.beta8) 

Мысли?

+1

Я думаю, что в заголовке вашего вопроса отсутствует глагол. –

+0

@DavidGrayson благодарит вас - вы правы. Исправлена. –

ответ

3

Использование Ruby Remote Debug Тип конфигурации в RubyMine. Для получения дополнительной информации обратитесь к официальному номеру RubyMine documentation.

принципе запустить сценарий как:

rdebug-ide --port <port number> -- script.rb 

, а затем подключиться к указанному порту из RubyMine отладчик.

+0

Спасибо @CrazyCoder, который сработал, после того как я немного прощупал свое замешательство: 1. Запустите из командной строки команду rdebug-ide, например. для отладки сеанса оболочки «rails console» он будет читать: «rdebug-ide --port 1234 - rails console». 2. В RubyMine используйте редактор конфигурации запуска и создайте новую конфигурацию Ruby Remote Debug, используя тот же порт (здесь 1234), и удаленный путь, установленный в рабочий каталог, затем нажмите кнопку отладки, и это вызовет оболочку для инициализации, в то время как источники могут быть обнаружены в RubyMine. Очень признателен! –

5

Это, как вы делаете это в Рельсы:

Прежде всего, убедитесь, что у вас есть rdebug-ide установлен:

gem install ruby-debug-ide --platform=ruby 

Далее запустите в консоли:

rdebug-ide --port 6778 -- /projects/your_rails_project/script/rails console 

или для рельсы 4.0+

rdebug-ide --port 6778 -- /projects/your_rails_project/bin/rails console 

Или, как @ChristopherВы упомянули below, вы можете передать параметр --host, если хотите отладить нелокальный сервер. (Прочтите его комментарий ниже для предостережений)

Это будет ждать подключения удаленных клиентов отладки.

  1. Нажмите на Run> Edit Configurations в RubyMine затем добавить «Рубин Remote Debug» экземпляр

  2. Используйте тот же порт, что и выше 6778 (если вы измените один выше, убедитесь, что порты совпадают)

  3. корневая папка и локальный корневой папки совпадают,/проекты/your_rails_project

  4. Нажмите на кнопку Применить и закрыть.

Затем выберите эту конфигурацию из списка прямо рядом с кнопками запуска и отладки, затем нажмите кнопку отладки. Дайте ему несколько секунд, и консоль запускает «рельсовую консоль», где когда-либо вы запускали «rdebug-ide»

+0

Спасибо, но это больше не работает в Rails 3.2, потому что 'rails console' теперь порождает отдельный процесс, а отладчик IDE RubyMine еще не может обрабатывать многопроцессорную отладку, хотя они предположительно включают это в следующую версию RubyMine , –

+0

Я отлаживаю приложение 3.2.2 рельсов (ruby 1.9.3p194) на RubyMine 4.0.3. Когда я попытался запустить «boot.rb» (с помощью rdebug-ide), процесс начался и сразу же прекратился. Это работало для меня, когда я использовал вышеприведенную команду. – Abdo

+0

Вы можете заставить процесс работать без проблем, но я не думаю, что вы можете заставить его остановиться на контрольных точках, потому что исполняемый файл 'rails' порождает фоновый процесс, который не контролируется. И вся моя причина запуска его в отладчике в первую очередь - установить контрольные точки. http://youtrack.jetbrains.com/issue/RUBY-10967 –

2

Я действительно хочу опубликовать что-то здесь, что очень сложно найти полный ответ там, и это потребовало меня очень много времени, чтобы разобраться.Есть люди, которые спрашивают, как подключить удаленный отладочный процесс для поиска работника, и вот правильный способ, который работает, наконец, для меня. Эта статья высоко в поиске Google и будет легко найти.

FROM SHELL на сервере (для меня его мой ноутбук) выполните это с вашего сайта root: rdebug-ide --port 1236 --dispatcher-port 26166 --host 0.0.0.0 bin/rake resque: work QUEUE = *

в RubyMine IDE настройки удаленного отладку с: Удаленный хост: 127.0.0.1 Удаленный порт: 1236 Удаленная папка Root: путь на сервере к корню сайта Локальный порт: 26166 местного корневому пути: путь на ваш рабочей станции в корневой файл, где вы бы установили точки останова (в моем случае все его локальные, так что все 1 путь и 1 копия файлов)

Запустите свой веб-сервер, как обычно, с помощью: rails s

Установите контрольную точку в своем рабочем работнике Resque и попытайтесь выполнить все, что вам нужно на вашем сайте, чтобы добраться до этой точки останова.

1 примечание - наличие «пружинного» драгоценного камня дало мне ошибки, и мне пришлось прокомментировать его/расслоение.

Смежные вопросы