В PHP, CGI или в RoR View мы можем легко распечатать отладочную информацию. Как насчет в контроллере, как мы можем просто сказать, print "hello world"
(на выходе веб-страницы) и вернуться, чтобы продолжить просмотр или остановить контроллер прямо там?
На Ruby on Rails, как мы печатаем информацию об отладке внутри контроллера?
Ответ 1
В контроллере вы можете:
render :text => @some_object.inspect
Но ваше представление не будет отображаться.
Вы также можете:
Rails.logger.debug("My object: #{@some_object.inspect}")
и запустите хвост в журнале /development.log, чтобы увидеть результат.
В обзоре рекомендуемый способ:
<%= debug(@some_object) %>
Ответ 2
Не знаю о print
, но puts
никогда не подводил меня. Ваш hello world
будет в консоли, а журналы и нормальный поток будут продолжены.
Правильно ли я вас понял?
Ответ 3
Вы можете отлаживать представление: <%= debug @post %>
. Дополнительная информация: http://guides.rubyonrails.org/debugging_rails_applications.html
Ответ 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 используется, чтобы сначала очистить весь экранный буфер, тогда распечатка должна всегда вставляться в экранный буфер.