Как вы отлаживаете приложение Rails?

Можно ли отлаживать приложение 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

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

Ответ 1

Там нет путеводителя здесь для Netbeans.

Ответ 2

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

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

Ответ 3

Вы можете ожидать большего. Я использовал Aptana версию Radlails для Eclipse для отладки приложения 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 для отладки приложения.

Ответ 4

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

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

Ответ 5

Возможно, это не актуально, но я хотел где-то разместить: получил ошибку: "undefined метод` run_init_script" для отладчика: модуль "запуск отладчика в рельсах" 2.3.2. Создал ли sudo gem ruby-debug и проблема исчезла.

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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