Подтвердить что ты не робот

На Ruby on Rails, как мы печатаем информацию об отладке внутри контроллера?

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

4b9b3361

Ответ 1

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

render :text => @some_object.inspect

Но ваше представление не будет отображаться.

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

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

и запустите хвост в журнале /development.log, чтобы увидеть результат.

В обзоре рекомендуемый способ:

<%= debug(@some_object) %>

Ответ 2

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

Ответ 4

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

abort params[:whatevs].inspect

или

abort @my_variable.inspect

для формата JSON

render json: JSON.pretty_generate(JSON.parse(@my_variable.to_json))

Ответ 5

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

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