Как вы отлаживаете Rails-приложение? - PullRequest
10 голосов
/ 08 июня 2009

Возможно ли отладить приложение Rails аналогично приложению Java - установить точки останова и войти в код?

Каковы лучшие инструменты для этого?

У меня есть гибридное приложение Java / Ruby on Rails, которое я могу запустить в Eclipse или Netbeans.

Я хотел бы перейти к некоторому коду в этом приложении и попытаться выяснить причину возникшей проблемы.

В Eclipse, если я установил точку останова в своем blog_controller и затем выбрал кнопку «Отладка», он, кажется, использует гем ruby-debug-ide для выполнения кода, но я получил это бесполезное вывод и нет возможности перейти в любой источник:

Fast Debugger (ruby-debug-ide 0.4.5) listens on localhost:56726
    ./war/WEB-INF/app/controllers/blog_controller.rb:1
    C:/Ruby18/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.5/lib/ruby-debug.rb:101:in `debug_load'
    C:/Ruby18/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.5/lib/ruby-debug.rb:101:in `debug_program'
    C:/Ruby18/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.5/bin/rdebug-ide:82
    C:/Ruby18/bin/rdebug-ide:19:in `load'
    C:/Ruby18/bin/rdebug-ide:19
Uncaught exception: uninitialized constant ApplicationController

Я не уверен, что делаю что-то не так или это все, чего я могу ожидать.

Ответы [ 10 ]

8 голосов
/ 08 июня 2009

Отладчик, который я использую чаще всего, это гем ruby-debug , который является отладчиком командной строки gdb-esque. Как только вы выучите несколько команд, это очень быстро и эффективно, и предоставляет вам некоторые удобные функции, такие как возможность запуска irb в контексте вашей программы и внесение изменений на лету.

А на основе командной строки это удобно, когда вам нужно отлаживать на удаленном сервере.

6 голосов
/ 08 июня 2009

Вы можете ожидать большего. Я использовал версию Eclipse от Aptana RadRails для отладки приложения Rails, как вы описываете - установка точек останова и пошаговое выполнение кода.

Возможно, вы делаете что-то не так. Похоже, что он пытается отладить отдельный файл контроллера, а не отлаживать приложение Rails. Когда я пытаюсь выполнить файл контроллера из командной строки, я получаю похожее сообщение:

C:\workspace\myapp\app\controllers>ruby users_controller.rb
users_controller.rb:1: uninitialized constant ApplicationController (NameError)

В Aptana RadRails я выбираю Run > Debug As > Ruby Application для отладки приложения.

3 голосов
/ 30 августа 2009

возможно не актуально, но я хотел где-нибудь опубликовать: получил ошибку: "неопределенный метод` run_init_script 'для Debugger: Module ", запускающий отладчик в rails 2.3.2. Установил ли sudo gem ruby-debug и проблема ушла.

3 голосов
/ 08 июня 2009

Для пользователей vim я настоятельно рекомендую заглянуть в vim-ruby-debugger , который отлично вписывается в сценарии Тима Поупа rails.vim.

Предоставляет удобную команду :Rdebugger, позволяет устанавливать точки останова и открывать разделенное окно для отображения значений переменных.

2 голосов
/ 12 ноября 2009

Вот руководство здесь для Netbeans.

1 голос
/ 12 ноября 2009

Отладка? Это просто знание того, где искать в случае с Ruby (и, соответственно, с Rails) большую часть времени.

Проблема в этом случае в том, что у вас, вероятно, все еще есть ApplicationController с именем application.rb , где он должен быть переименован в application_controller.rb .

1 голос
/ 18 августа 2009

На самом деле у меня была такая же проблема с Аптаной. Run > Debug As > Ruby Application просто не работает. Я наконец заставил отладчик работать, перейдя на вкладку Servers, а затем запустил сервер в debug mode. После этого установите несколько точек останова и запустите соответствующее действие. Надеюсь, это поможет.

0 голосов
/ 17 июня 2009

Я бы порекомендовал просто установить точки останова (на самом деле я просто помещает в консоль) для 99% отладки с помощью RoR - этот метод прост и может использоваться в любой IDE, поэтому вам никогда не придется изучать новый отладчик работает.

0 голосов
/ 08 июня 2009

Я не могу говорить за Eclipse (никогда не работал хорошо для меня) или Aptana (не пробовал), но по опыту могу сказать, что оба NetBeans и RubyMine будут делать то, что вы хочу. В обоих случаях вам, вероятно, следует убедиться в актуальности гемов ruby-debug-base и ruby-debug-ide: в частности, RubyMine не работал для меня, пока это не было сделано.

0 голосов
/ 08 июня 2009

Отладка в рельсах проста, если вы знаете, как прочитать трассировку стека ошибок !! Но если вам нужно явно следить за значениями во время выполнения, тогда вы можете использовать rails breakpointer. Ниже приведена ссылка на инструкции по breakpointer .. надеюсь, это поможет !!!

http://destiney.com/blog/rails-breakpointer

...