web-dev-qa-db-ja.com

RailsコンソールがSQLステートメントを開発ログに出力しない

Localhost経由でWebrickサーバーにアクセスするとき、またはRails migrationsを実行すると、私のdevelopment.logは正しく書き込まれます。ただし、起動時にRails = "Rails c"のコンソールで、新しいデータベースオブジェクトを作成して、 "user.save"のようなコマンドで保存します。コンソールにSQLステートメントが表示されますが、開発ログには何も書き込まれません。

このような質問に答えるほとんどの人は、「設定が正しい環境に設定されていることを確認してください」と言います。私はこれを実行しました。私のシステムでは、これはまったく新しいRailsアプリで発生します。

任意の助けいただければ幸いです。ありがとう!

30
Inc1982

Railsコンソールがログファイルに書き込むことはありませんが、たとえばRails consoleを起動した後に次のコマンドを実行すると、

ActiveRecord::Base.logger = Logger.new STDOUT

RailsはすべてのSQLステートメントをstdoutに記録し、端末に表示します。それ以来 Logger.newは、最初の引数として任意のストリームを受け入れます。Rails development.logに書き込むだけです。

ActiveRecord::Base.logger = Logger.new File.open('log/development.log', 'a')
77
Marian Theisen

私は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/

34
Shanison