Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails console is not outputting SQL Statements to my Development Log

When I access my Webrick server via the localhost, or when I run rails migrations, my development.log is correctly written to. However, when I bootup my rails console with "rails c" and then try and create a new database object and save it via a command like "user.save", I see SQL statements in the console, but nothing is written to in the development log.

Most people when answering a question similar to this say "check to make sure that the config is set to the correct environment". I've done this, and can say on my system this happens for a completely new rails app.

Any help would be appreciated. Thanks!

like image 317
Inc1982 Avatar asked Sep 23 '11 20:09

Inc1982


2 Answers

the rails console never writes to the log file, but you can achieve it quite easily, for example, if you execute following after starting the rails console

ActiveRecord::Base.logger = Logger.new STDOUT

rails will log all SQL statements to stdout, thus display them in your terminal. and since Logger.new accepts any stream as first argument, you could just let it write to the rails development.log:

ActiveRecord::Base.logger = Logger.new File.open('log/development.log', 'a')
like image 90
Marian Theisen Avatar answered Nov 18 '22 15:11

Marian Theisen


I am in Rails 2.3.8, the above answer doesn't really work for me.

ActiveRecord::Base.logger = Logger.new STDOUT

The following actually works:

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

Reference http://www.shanison.com/2012/03/05/show-sql-statements-in-rails-console/

like image 35
Shanison Avatar answered Nov 18 '22 14:11

Shanison