В php можно печатать_r() в любом месте в представлении, контроллере или модели. Есть ли что-то подобное в рельсах? Я попытался проверить и проверить. Кажется, они не печатают вещи из модели. Разрешено ли это использовать? Если не какой-либо пример модели или контроллера?функции печати и отладки в рельсах?
ответ
Короткий ответ, вы не можете. По крайней мере, не в одной строке. И не только потому, что это нарушение MVC, но и практические причины, которые мешают этому.
Не существует надежного способа вывода кучи данных в произвольном формате и сохранения его достоверности. Вывод его в виде JSON может легко привести к недействительным данным. Поэтому, если ваши данные отладки могут обрабатываться только браузером, этот вывод должен указываться только в представлениях для браузеров. Даже если никто другой не существует, separate concerns.
Существует, конечно же, замена. Rails 4.2.0 отправляет шаблон приложения с web_console
. Все, что вам нужно для начала использования, это добавить вызов в console
в ваши представления где-нибудь, например, в общий файл макета приложения. Если это на самом деле Еврорадио, добавьте эту строку ниже:
<%= console %>
И везде, где он появляется, у вас есть REPL в контексте текущего оказанного зрения, где вы можете легко осмотреть объекты и даже выполнять действия, которые изменяют свои данные.
Существует также множество способов вывода данных в консоль сервера или файл журнала. Они перечислены в других ответах. Я немного добавлю к решению, связанному с регистратором.
Rails Panel. Это расширение Chrome, которое добавляет еще одну вкладку в инструменты Chrome Dev (которые отображаются позади F12) с именем «Rails».Чтобы он работал, вам нужно добавить жкем meta_request
в ваше приложение (убедитесь, что оно находится в группе development
!). После того, как работает, он будет показывать нагрузки данных о том, как была обработана страница:
- Время, затраченное на выборку данных, что делает его
- параметров для данного запроса
- Выполненная DB запросы, продолжительность и линии у них был вызван
- Просмотр файлов участвует
- записей журнала, испускаемые на эту просьбу и что вызвало, что
- Ошибки встречаются
Эта одна и некоторые другие отладочные вещи обсуждаются в this Railscast.
Это действительно не существует, потому что это не эффективный способ отладки.
Возможность вывода вывода в браузер зависит от того, где вы находитесь. Это тривиально легко выглядит, немного громоздко в контроллерах, и слишком сложно быть достойным от моделей.
К счастью, есть много лучшие инструменты, чем просто сброс вещей в браузер.
Вы можете использовать pry, чтобы остановить средний запрос, открыть среду REPL и интерактивно запросить или изменить состояние запущенного приложения.
Если вы просто хотите, чтобы отслеживать поток выполнения через выход, использовать регистратор:
Rails.logger.info(my_object.inspect)
Чтобы добавить стек с 'pry', я рекомендую' pry-rails' (заменяет IRB в 'rails console'), [' pry-byebug'] (https://github.com/deivid-rodriguez/pry-byebug) ([byebug'] (https://github.com/deivid-rodriguez/byebug) для отладки, Ruby 2.0+) и 'pry-coolline' (подсветка основного синтаксиса в REPL). –
Обычно вы будете идентифицировать проблемы в вашей модели, контроллера или интеграционных тестов задолго до того, становится проблемой. В этом контексте можно использовать puts
для вывода, что вы хотите, когда инструментирование бит кода, и он будет отображаться в тестовом выходе:
puts object.inspect
в пределах Rails операционной среды можно использовать Rails.logger
:
Rails.logger.debug(object.inspect)
Это будет отображаться в log/development.org
, где вы можете увидеть, что происходит. Лучше оставить это на уровне debug
, чтобы он не загромождал ваши журналы производства, если оставить их случайно.
- 1. Попытка отладки печати печати
- 2. отладки в рельсах
- 3. печати/отладки GeoPoint Массив
- 4. Python - использовать инструкцию печати/отладки в Lambda
- 5. Вызов функции и функции функции печати
- 6. Python отладки печати этой команде
- 7. значение состояния печати для отладки
- 8. правильный способ отладки результата SQL в рельсах
- 9. Функции отладки в matlab
- 10. вызов функции в рельсах
- 11. Неинвазивный способ отладки печати в файл ram
- 12. Функция печати в функции печати в Python
- 13. отладки способность Cancancan проваливается в рельсах консоли и Rspec
- 14. Области функции в рельсах
- 15. Ошибка в функции печати
- 16. * знак в функции печати
- 17. Выбор функции отладки в OpenLayers
- 18. отладки называемые функции в MATLAB
- 19. Предложения для отладки таблиц стилей печати?
- 20. отладки функции отключения в IDEA
- 21. функции отладки в replo clojurescript
- 22. Выделить функции отладки
- 23. Ошибка отладки функции - C++
- 24. Когда использовать протокол fmt для отладки и ошибки печати?
- 25. ошибка печати сериализованного рубина массива на рельсах
- 26. Включение и выключение функции отладки ShowIt
- 27. XQuery: отладки рекурсивной функции
- 28. Переопределение функции печати, не работающей в функции
- 29. Вызов функции печати в Haskell
- 30. 0xC0000005 Ошибка в функции печати
'to_yaml' и' inspect' фактически просто возвращают строку, представляющую данный объект. Вопрос заключается в том, что вы отправляете эту строку в любом месте, что вызывает ее вывод (на консоль или веб-страницу) в качестве побочного эффекта (в последнее время было слишком много функциональных программ, извините за возможную путаницу). –
Лучший вопрос, который я должен был задать, - это функция, позволяющая мне распечатать содержимое объекта в модели и отобразить его в представлении, а не в консоли. – Brian
И ответы на этот вопрос даны ниже, и в двух словах они говорят * вы не можете * или * не делать этого *. Предположим, вы писали новый уровень просмотров, например, в JSON, в качестве API вашего приложения. Нет никакого идиоматического способа бросить кучу произвольных данных в объект JSON. Поскольку нет общего способа сделать это безопасно, это не было реализовано. –