fix(action_cable): ensure logger is set for upgraded Rails app
- ActionCable::TaggedLoggerProxy crashes with NoMethodError when logger is nil (common in apps upgraded from older Rails) - Add after_initialize hook to guarantee ActionCable.server.config.logger falls back to Rails.logger or
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Ensure ActionCable has a logger in all environments.
|
||||
# In apps upgraded from older Rails versions, the logger chain
|
||||
# may not propagate to ActionCable out of the box, causing:
|
||||
# NoMethodError (undefined method 'info' for nil)
|
||||
# in ActionCable::Connection::TaggedLoggerProxy#log
|
||||
#
|
||||
Rails.application.config.after_initialize do
|
||||
ActionCable.server.config.logger ||= Rails.logger || ActiveSupport::Logger.new($stdout)
|
||||
ActionCable.server.config.logger.level = Rails.logger&.level || Logger::INFO
|
||||
end
|
||||
Reference in New Issue
Block a user