2013-08-11 2 views
8

Я обновил Rails 3.2 до Rails 4, следуя руководству Ruby Screencast. Мои тесты работают и начинается сервер, но я получаю сообщение об ошибке, когда я посылаю запрос:Неопределенный метод «помечен» для ошибки Formatter после обновления Rails 4

ERROR NoMethodError: undefined method `tagged' for #<Formatter:0x000000057f5dc8> 

/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:67:in `tagged' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/rack/logger.rb:21:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/quiet_assets-1.0.2/lib/quiet_assets.rb:18:in `call_with_quiet_assets' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-4.0.0/lib/action_dispatch/middleware/request_id.rb:21:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/runtime.rb:17:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/activesupport-4.0.0/lib/active_support/cache/strategy/local_cache.rb:83:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-4.0.0/lib/action_dispatch/middleware/static.rb:64:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/engine.rb:511:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/application.rb:97:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/lock.rb:17:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/content_length.rb:14:in `call' 
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60:in `service' 
/home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' 
/home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' 
/home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread' 

У меня есть я посмотрел на код, и это не имеет смысла для меня. Он называет logger.tagged. Объект за переменной logger не является регистратором, а объектом Formatter. Это странно.

Любая идея, что может вызвать это? До сих пор я:

  • удалил свои Gemfile.lock
  • gem update rails
  • bundle install
  • bundle update

В этом и различные заказы. Как я могу подойти к этому?

ответ

11

Вы используете регистратор клиентов?

Заезд config/environments/development.rb. Здесь обычно назначается регистратор.

Кроме того, посмотрите на config/initializers для связанных с регистрацией патчей обезьян.

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

Если вы используете этот патч, есть обновленный один для Rails 4: http://cbpowell.wordpress.com/2013/08/09/beautiful-logging-for-ruby-on-rails-4/

+0

Великий ответ. У нас была аналогичная проблема с пользовательским регистратором в config/initializers. – welbornio

+0

Спасибо! Рад, что это было полезно. –

0

Я также имел ту же ошибку, избавившись от него повторно инициализировать регистратор.

Добавлен новый файл в конфигурации/инициализаторах, назвал его log_formatting.rb

с этим кодом:

Rails.logger = ActiveSupport::Logger.new "log/mylog.log" 
Rails.logger.formatter = proc{|severity,datetime,progname,msg| 
    "[#{datetime.strftime("%Y-%m-%d %H:%M:%S")}] [#{severity}]: #{msg}\n" 
}