2011-09-15 9 views
10

estoy siguiendo de Michael Hartl rieles tutorial aquí:archivo de registro development.log no está registrando los carriles consultas SQL

http://ruby.railstutorial.org/chapters/modeling-and-viewing-users-one#top

utilizo este comando para realizar un seguimiento de las consultas SQL en una ventana separada:

tail -f log/development.log 

Sin embargo, mientras estoy en la consola de los rieles de seguridad, el registro no se actualiza con las sentencias de SQL, sino que se muestran dentro de la consola de rieles. ¿Cómo puedo corregir este comportamiento?

Debo añadir que las migraciones de mi base de datos y los cambios en el modelo de datos (nuevas tablas, etc.) se reflejan en el registro. Solo las sentencias de SQL propagadas por métodos dentro de la consola de rieles se omiten (y se muestran en la consola de rieles en su lugar).

Aquí es mi Gemfile:

source 'http://rubygems.org' 

gem 'rails', '3.1.0' 

# Bundle edge Rails instead: 
# gem 'rails',  :git => 'git://github.com/rails/rails.git' 

gem 'sqlite3' 

group :development do 
    gem 'rspec-rails', '2.6.1' 
    gem 'annotate', :git => 'git://github.com/ctran/annotate_models.git' 
end 

group :test do 
    gem 'rspec-rails', '2.6.1' 
    gem 'webrat', '0.7.3' 
    gem 'spork', '0.9.0.rc8' 
    gem 'guard-spork' 
    gem 'autotest', '4.4.6' 
    gem 'autotest-rails-pure', '4.1.2' 
    gem 'autotest-fsevent', '0.2.4' 
    gem 'autotest-growl', '0.2.9' 
end 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', " ~> 3.1.0" 
    gem 'coffee-rails', "~> 3.1.0" 
    gem 'uglifier' 
end 

gem 'jquery-rails' 

# Use unicorn as the web server 
# gem 'unicorn' 

# Deploy with Capistrano 
# gem 'capistrano' 

# To use debugger 
# gem 'ruby-debug19', :require => 'ruby-debug' 

Aquí está la salida de la consola de rieles:

Larson-2:sample larson$ rails console --sandbox 
Loading development environment in sandbox (Rails 3.1.0) 
Any modifications you make will be rolled back on exit 
ruby-1.9.2-p290 :001 > user = User.create(:name => "A Nother", :email => "[email protected]") 
    (0.1ms) SAVEPOINT active_record_1 
    SQL (13.4ms) INSERT INTO "users" ("created_at", "email", "name", "updated_at") VALUES (?, ?, ?, ?) [["created_at", Thu, 15 Sep 2011 20:34:09 UTC +00:00], ["email", "[email protected]"], ["name", "A Nother"], ["updated_at", Thu, 15 Sep 2011 20:34:09 UTC +00:00]] 
    (0.1ms) RELEASE SAVEPOINT active_record_1 
=> #<User id: 1, name: "A Nother", email: "[email protected]", created_at: "2011-09-15 20:34:09", updated_at: "2011-09-15 20:34:09"> 
ruby-1.9.2-p290 :002 > user.destroy 
    (0.1ms) SAVEPOINT active_record_1 
    SQL (0.3ms) DELETE FROM "users" WHERE "users"."id" = ? [["id", 1]] 
    (0.1ms) RELEASE SAVEPOINT active_record_1 
=> #<User id: 1, name: "A Nother", email: "[email protected]", created_at: "2011-09-15 20:34:09", updated_at: "2011-09-15 20:34:09"> 
ruby-1.9.2-p290 :003 > 

Y aquí están los ajustes en mi archivo config/environments/development.rb

Sample::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the web server when you make code changes. 
    config.cache_classes = false 

    # Log error messages when you accidentally call methods on nil. 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    # Don't care if the mailer can't send 
    config.action_mailer.raise_delivery_errors = false 

    # Print deprecation notices to the Rails logger 
    config.active_support.deprecation = :log 

    # Only use best-standards-support built into browsers 
    config.action_dispatch.best_standards_support = :builtin 

    # Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = true 

    #Ensure that log level is set to capture ALL messages (from Stack Overflow) 
    config.log_level = :debug 

end 

Finalmente aquí es la salida development.log hasta ahora:

Larson-2:sample larson$ tail -f log/development.log  
    (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" 
    (0.0ms) PRAGMA index_list("users") 
    (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" 
    (0.2ms) select sqlite_version(*) 
    (1.8ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varchar(255), "created_at" datetime, "updated_at" datetime) 
    (1.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
    (0.0ms) PRAGMA index_list("schema_migrations") 
    (1.6ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version") 
    (0.1ms) SELECT version FROM "schema_migrations" 
    (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20110915130358') 
+0

Estoy experimentando las mismas cosas con la misma configuración. También me gustaría saber la solución. –

+0

La misma situación aquí, me encantaría una solución ... – KenB

+0

Y la misma situación aquí ... – JonatasTeixeira

Respuesta

3

Aparentemente mostrar el SQL en la consola en lugar de development.log es el comportamiento predeterminado de Rails 3.1. No he encontrado una opción de configuración para cambiar ese comportamiento, pero me he dado cuenta que, una vez que la consola está en funcionamiento, sólo se puede hacer:

irb(main):001:0> ActiveRecord::Base.logger = Rails.logger 

y que se llevará a cabo el sql de la consola y guarde de vuelta en development.log. O bien, si no desea hacer eso cada vez que inicia la consola, puede editar gems/railties- (version) /lib/rails/console.rb, y realizar la asignación anterior después de la línea en el método de inicio que dice:

@app.load_console 

No diciendo que es una buena solución, pero va a la marea sobre mí hasta que encuentre algo mejor ...

13

asegurarse de que su log level se establece en :debug en config/environments/development.rb, así:

config.log_level = :debug 
+2

Seguí su sugerencia, pero sigo teniendo el mismo problema. Vea la salida de mi consola (para la consola de cola y rieles) más arriba, así como mi archivo config/environments/development.rb. –

0

Retire config.active_record.logger = nil de application.rb ... si está configurado.

1

También hay algo de información sobre el viejo wiki rieles sobre el uso de registradores personalizados y la configuración de los niveles de registro para ello: http://oldwiki.rubyonrails.org/rails/pages/HowtoConfigureLogging

Para los rieles estándar registrador puede utilizar la línea siguiente en config/environments/development.rb:

config.log_level = :debug 

para madereros personalizados (como log4j), tendrá que utilizar:

config.logger.level = Logger::DEBUG 

o lo que sea que acepte el registrador.

Cuestiones relacionadas