2013-08-11 16 views
8

Tôi đã nâng cấp từ Rails 3.2 lên Rails 4 bằng cách làm theo hướng dẫn của Ruby Screencast. Các thử nghiệm của tôi đang chạy và máy chủ bắt đầu, nhưng tôi gặp lỗi khi gửi yêu cầu:Phương thức chưa xác định `được gắn thẻ 'cho Lỗi định dạng sau khi Rails 4 nâng cấp

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' 

Tôi đã xem mã và điều đó không có ý nghĩa đối với tôi. Nó gọi logger.tagged. Đối tượng đằng sau biến số logger không phải là trình ghi nhật ký, mà là đối tượng Formatter. Điều này thật kỳ lạ.

Bất kỳ ý tưởng nào có thể gây ra điều này? Cho đến nay tôi:

  • xóa Gemfile.lock
  • gem update rails
  • bundle install
  • bundle update

Trong này và khác nhau đơn đặt hàng của tôi. Làm thế nào tôi có thể tiếp cận điều này?

Trả lời

11

Bạn đang sử dụng trình ghi nhật ký khách hàng?

Đăng ký config/environments/development.rb. Đó là nơi mà logger thường được gán.

Ngoài ra, hãy xem config/initializers để biết các bản vá lỗi khỉ có liên quan đến đăng nhập.

Tôi đã sử dụng bản vá nhật ký của Chris Powell và nó gây ra lỗi rất giống nhau.

Nếu bạn đang sử dụng bản vá đó, có một cập nhật một cho Rails 4: http://cbpowell.wordpress.com/2013/08/09/beautiful-logging-for-ruby-on-rails-4/

+0

Great câu trả lời. Chúng tôi đã có một vấn đề tương tự với một logger tùy chỉnh trong config/initializers. – welbornio

+0

Cảm ơn! Vui vì nó rất hữu ích. –

0

Tôi cũng có lỗi tương tự, đã thoát khỏi nó bằng cách tái khởi tạo logger.

thêm một file mới vào config/initializers, gọi nó là log_formatting.rb

với mã này:

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" 
}