На Ruby on Rails, как мы печатаем отладочную информацию внутри контроллера? - PullRequest
36 голосов
/ 28 июля 2010

В PHP, CGI или в представлении RoR мы можем легко распечатать отладочную информацию.Как насчет контроллера, как мы можем просто сказать, print "hello world" (к выводу веб-страницы) и вернуться, чтобы продолжить просмотр или остановить контроллер прямо там?

Ответы [ 5 ]

88 голосов
/ 28 июля 2010

В контроллере вы можете:

render :text => @some_object.inspect

Но ваше мнение не будет отображено.

Вы также можете:

Rails.logger.debug("My object: #{@some_object.inspect}")

и запустите tail в log / development.log, чтобы увидеть вывод.

По мнению рекомендуемый способ:

<%= debug(@some_object) %>
5 голосов
/ 28 июля 2010

Не знаю насчет print, но puts никогда не подводил меня.Ваш hello world будет находиться в консоли, и журналы будут продолжаться.
Правильно ли я вас понял?

4 голосов
/ 28 июля 2010

Вы можете отладить в представлении: <%= debug @post %>. Дополнительная информация: http://guides.rubyonrails.org/debugging_rails_applications.html

2 голосов
/ 17 ноября 2016

Вы можете использовать прерывание с проверкой

abort params[:whatevs].inspect

или

abort @my_variable.inspect

для JSON формат

render json: JSON.pretty_generate(JSON.parse(@my_variable.to_json))
1 голос
/ 25 августа 2012

На самом деле предложение Никиты неплохое.Но обычно трудно посмотреть на данные в терминале, потому что размер буфера экрана может быть ограничен, и он полон предыдущих данных от предыдущего рендеринга страниц.

Но, скажем, на Mac, просто убедитесь, чтоэкранный буфер достаточно велик, а также используйте в терминале rails server клавишу Command k , чтобы сначала очистить весь экранный буфер, и используйте браузер для загрузки веб-страницы, итеперь используйте Command f для поиска строки, которую вы распечатали, и она также работает довольно хорошо.На самом деле, если Command k используется, чтобы сначала очистить весь экранный буфер, то распечатка всегда должна помещаться в экранный буфер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...