Консоль Rails не выводит операторы SQL в мой журнал разработки - PullRequest
29 голосов
/ 24 сентября 2011

Когда я получаю доступ к своему серверу Webrick через локальный хост или когда я запускаю рельсовые миграции, мой файл development.log правильно записывается в.Однако, когда я загружаю консоль rails с помощью «rails c», а затем пытаюсь создать новый объект базы данных и сохранить его с помощью команды, например «user.save», я вижу операторы SQL в консоли, но ничего не записывается вжурнал разработки.

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

Любая помощь будет оценена.Спасибо!

Ответы [ 2 ]

77 голосов
/ 24 сентября 2011

консоль rails никогда не записывает в файл журнала, но вы можете достичь этого довольно легко, например, если выполнить следующую команду после запуска консоли rails

ActiveRecord::Base.logger = Logger.new STDOUT

rails записывает все операторы SQL в стандартный вывод, таким образом, отобразить их в вашем терминале.и поскольку Logger.new принимает любой поток в качестве первого аргумента, вы можете просто позволить ему записать в rails development.log:

ActiveRecord::Base.logger = Logger.new File.open('log/development.log', 'a')
34 голосов
/ 09 марта 2012

Я нахожусь в Rails 2.3.8, приведенный выше ответ на самом деле не работает для меня.

ActiveRecord::Base.logger = Logger.new STDOUT

На самом деле работает следующее:

ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)

Ссылка http://www.shanison.com/2012/03/05/show-sql-statements-in-rails-console/

...