Как скрыть вывод базы данных в консоли Rails?

103

В более новой версии Rails, я предполагаю, что с 3-х и выше запросы к базе данных выводятся на консоль. Это полезно в большинстве случаев, но как вы можете скрыть это, если не хотите этого видеть?

Роджер Эртесваг
источник

Ответы:

178

Лучший способ сделать это - ввести это в консоль:

ActiveRecord::Base.logger.level = 1 

поскольку это предотвращает проблемы, пытаясь использовать указатель на регистратор, для которого установлено значение nil (источник: отключить ведение журнала Rails SQL в консоли )

Чтобы снова включить

ActiveRecord::Base.logger.level = 0
Аарон Б. Рассел
источник
31
Спасибо. И включить его обратно, ActiveRecord::Base.logger.level = 0.
thebenedict
Есть идеи, как это сделать с Mongoid?
Джесси Фармер
29
ActiveRecord::Base.logger = nil

от сюда

Самвермет
источник
6
Это может привести к тому, что NoMethodErrors с ActiveRecord ожидает ActiveRecord::Base.loggerбыть объектом, а не nil.
Аарон Б. Рассел
9

Короткий ответ ... В файле development.rb измените или добавьте значение config.log_levelтак, чтобы там была строка вроде

config.log_level = :info
madth3
источник
1
Нет, похоже, это не влияет на то, что происходит в консоли. Кроме того, я бы предпочел решение, которое не требует от меня изменения файлов проекта.
Роджер Эртесваг,
Хорошо, у меня решение работает с webrick, но вы можете использовать другой сервер или работать в режиме производства или тестирования?
madth3
3
Он работает для изменения содержимого файлов журнала. Но вопрос касается консоли rails, а не файлов журнала.
Роджер Эртесваг
5

От моего друга:

your_query; nil
ТатиКарвалью
источник
1
Чтобы улучшить качество вашего сообщения, укажите, как / почему ваше сообщение решит проблему.
Mick MacCallum
7
Это остановит вашу рубиновую консоль от выгрузки результатов выражений на консоль, но не остановит ActiveRecord от выгрузки информации sql в регистратор рельсов.
eremzeit 05
1
Предыдущим комментаторам: это отвечает на вопрос, и это единственный ответ, который сработал для меня, чего еще можно пожелать?
valk
3
Я не думаю, что это вообще ответ на вопрос. как сказал @eremzeit, это не остановит все запросы sql, которые были сброшены на вашу консоль, это только остановит печать возвращаемого значения из этой команды ...
opsidao
1
Это не отвечает на вопрос, но полезно для того, чтобы не повторять результаты
Рутгер
4

В Rails 3.2 установка

config.logger.level = Logger::INFO

отлично работал у меня для отключения вывода SQL.

сломанный битник
источник
Тем не менее, сохраняется ли запись вывода SQL в файл журнала?
Джошуа Пинтер
-2

Я вижу, что вы уже получили требуемый ответ, хотя я хотел бы посоветовать вам драгоценный камень «тихие активы», большая часть данных журнала будет компилироваться и включаться, этот драгоценный камень удалит это и по-прежнему будет выводить запросы и поведение данных.

Радоваться, веселиться

Деннис
источник
1
Речь идет о выводе на консоль, а не о файлах журнала,
Роджер Эртесваг,