Skip to content

Commit e36472d

Browse files
committed
Use the application environment when app is not loaded, closes #6846
1 parent 5bfe21e commit e36472d

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

‎lib/phoenix/endpoint.ex‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,14 @@ defmodule Phoenix.Endpoint do
469469
end
470470

471471
defp pubsub_server! do
472-
config(:pubsub_server) ||
472+
server =
473+
try do
474+
config(:pubsub_server)
475+
rescue
476+
ArgumentError -> Application.get_env(@otp_app, __MODULE__)[:pubsub_server]
477+
end
478+
479+
server ||
473480
raise ArgumentError, "no :pubsub_server configured for #{inspect(__MODULE__)}"
474481
end
475482
end

‎test/phoenix/endpoint/endpoint_test.exs‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,21 @@ defmodule Phoenix.Endpoint.EndpointTest do
332332
refute_received %Phoenix.Socket.Broadcast{}
333333
end
334334

335+
test "pubsub uses the application environment when the endpoint is not started" do
336+
defmodule PubSubEnvEndpoint do
337+
use Phoenix.Endpoint, otp_app: :phoenix
338+
end
339+
340+
Application.put_env(:phoenix, PubSubEnvEndpoint, pubsub_server: :endpoint_pub)
341+
PubSubEnvEndpoint.subscribe("envtopic")
342+
PubSubEnvEndpoint.broadcast("envtopic", "event1", %{key: :val})
343+
assert_receive %Phoenix.Socket.Broadcast{event: "event1", topic: "envtopic"}
344+
after
345+
Application.delete_env(:phoenix, __MODULE__.PubSubEnvEndpoint)
346+
:code.purge(__MODULE__.PubSubEnvEndpoint)
347+
:code.delete(__MODULE__.PubSubEnvEndpoint)
348+
end
349+
335350
test "loads cache manifest from specified application" do
336351
config =
337352
put_in(

0 commit comments

Comments
 (0)