From 949e4587d5eb1356b863f2474c589f9683f49e7a Mon Sep 17 00:00:00 2001 From: Jonathan Hefner Date: Fri, 6 Nov 2020 11:29:08 -0600 Subject: [PATCH] Allow missing Action Cable config Since #37850, `config_for` returns `nil` instead of an empty Hash when a config file does not contain configuration for the specified environment. Thus, the return value should be converted to a Hash before calling `with_indifferent_access`. Fixes #40548. --- actioncable/lib/action_cable/engine.rb | 2 +- railties/test/application/configuration_test.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/actioncable/lib/action_cable/engine.rb b/actioncable/lib/action_cable/engine.rb index 53cbb597cd..3c37040293 100644 --- a/actioncable/lib/action_cable/engine.rb +++ b/actioncable/lib/action_cable/engine.rb @@ -30,7 +30,7 @@ module ActionCable ActiveSupport.on_load(:action_cable) do if (config_path = Pathname.new(app.config.paths["config/cable"].first)).exist? - self.cable = Rails.application.config_for(config_path).with_indifferent_access + self.cable = Rails.application.config_for(config_path).to_h.with_indifferent_access end previous_connection_class = connection_class diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index cf51d752ef..d9e3412781 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -2453,6 +2453,14 @@ module ApplicationTests assert_nil ActiveStorage.queues[:purge] end + test "ActionCable.server.config.cable is set when missing configuration for the current environment" do + quietly do + app "missing" + end + + assert_kind_of ActiveSupport::HashWithIndifferentAccess, ActionCable.server.config.cable + end + test "ActionMailbox.logger is Rails.logger by default" do app "development"