Ответ 1
Там нет путеводителя здесь для Netbeans.
Можно ли отлаживать приложение 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
Я не уверен, что я делаю что-то неправильно или это все, что я могу ожидать.
Там нет путеводителя здесь для Netbeans.
Отладчиком, который я использую больше всего, является ruby-debug gem, который является отладчиком командной строки gdb-esque. Как только вы узнаете несколько команд, это очень быстро и эффективно и предоставляет вам некоторые удобные функции, такие как возможность запуска irb
в контексте вашей программы и внесение изменений "на лету".
И на основе командной строки это пригодится, когда вам нужно отлаживать на удаленном сервере.
Вы можете ожидать большего. Я использовал 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
для отладки приложения.
Для пользователей vim я настоятельно рекомендую посмотреть vim-ruby-debugger, который отлично вписывается в скрипты rails.vim от Tim Pope.
Он дает вам удобную команду :Rdebugger
, позволяет устанавливать точки останова и открывать разделенное окно для отображения значений переменных.
Возможно, это не актуально, но я хотел где-то разместить: получил ошибку: "undefined метод` run_init_script" для отладчика: модуль "запуск отладчика в рельсах" 2.3.2. Создал ли sudo gem ruby-debug и проблема исчезла.
Собственно, у меня была такая же проблема с Аптаной. Run > Debug As > Ruby Application
просто не работает. Я, наконец, сделал работу отладчика, перейдя на вкладку Servers
, а затем запустил сервер в debug mode
. После этого установите некоторые точки останова и активируйте соответствующее действие. Надеюсь, это поможет.
Debugging? Это просто знание, где искать в случае Ruby (и, чаще всего, Rails) большую часть времени.
Проблема в этом случае состоит в том, что у вас, вероятно, все еще есть ваш ApplicationController
, называемый application.rb, где он должен быть переименован в application_controller.rb.
Отладка в рельсах проста, если вы знаете, как читать ошибку stacktrace!! Но если вам нужно явно следить за значениями во время выполнения, то вы можете использовать rails breakpointer.Below - это ссылка на How-on на breakpointer. Надеюсь, это поможет!!!
Я не могу говорить за Eclipse (никогда не работал хорошо для меня) или Aptana (не пробовал), но из опыта могу сказать, что NetBeans и RubyMine будет делать то, что вы хотите. В обоих случаях вы, вероятно, должны убедиться, что Ruby-debug-base и ruby-debug-ide gems обновлены: RubyMine, в частности, не работал у меня, пока это не было сделано.
Я бы рекомендовал просто настроить контрольные точки (на самом деле просто помещает в консоль) для 99% отладки с помощью RoR - этот метод прост и удобен в любой среде IDE, поэтому вам никогда не нужно учиться как работает новый отладчик.