#ruby #ruby_on_rails
Привет всем! Я тут пытаюсь освоить Ruby on Rails и я не знаю как правильно искать ошибки. Если в PHP все было просто (или ошибку выводит компилятор, или смотришь что содержат переменные, что возвращает та или иная функция и тд.), но на RoR все не так уж и ясно. Подскажите, пожалуйста, как вы дебажите свой код. Я установил Nginx и Thin, на которых и крутится мой RoR проект
Ответы
Ответ 1
В первую очередь смотрю консоль (если в процессе разработки) или логи (если в работе). Выводить переменные можно как в консоль (удобнее) так и в браузер (для отладки вьюх). Выводить удобно вот этим гемом: https://github.com/michaeldv/awesome_print Собственно : http://www.rusrails.ru/debugging-rails-applications Ещё здесь где-то было : http://railstutorial.ru/chapters/4_0/beginning Добавлю примеров: В Gemfile: group :development, :test do gem 'awesome_print' end В контроллере (результат в консоль): def show @item = Model.find(id) ap @item #awesome_print puts @item #ruby standart end Вьюха (результат в браузер): <%= ap(@item).html_safe %> или <%= debug @item %> И Nginx с thin при разработке не нужны (иногда даже мешают). Достаточно rails s (webrick).Ответ 2
Помимо уже данных ответов иногда полезно установить gem 'pry' в группу :development в Gemfile и ставить в коде, где необходима остановка binding.pry, так можно посмотреть не только то, что вы указали для печати из ответа @mayar, но и что угодно. В этой точке кода в окне терминала появится привычный по виду irb, а выход из него с продолжением работы сервера - Ctrl-D.Ответ 3
Так же полезен гем byebug. Он очень прост в использовании. Вот пример кода: def show byebug #место остановки дебага @comments = @link.comments.order(id: :DESC) end В момент вызова метода rails приостановит роботу и можно проверить значение переменной в консоли. Пример использования: 9: def show 10: byebug => 11: @comments = @link.comments.order(id: :DESC) 12: end 13: 14: def new 15: @link = current_user.links.new (byebug) @link # (byebug) Что бы выйти из режима дебага можно использовать команду continue или сокращенно с, или команда перехода на новою строку в коде next или n. Более подробная информация на странице в github от разработчиков gem-а.
Комментариев нет:
Отправить комментарий