Updated timezone logic to prevent boot crash
This commit is contained in:
+2
-10
@@ -67,15 +67,6 @@ if config_env() == :prod do
|
|||||||
# For running PF in a subdirectory via a reverse proxy
|
# For running PF in a subdirectory via a reverse proxy
|
||||||
base_route_path = System.get_env("BASE_ROUTE_PATH", "/")
|
base_route_path = System.get_env("BASE_ROUTE_PATH", "/")
|
||||||
enable_ipv6 = String.length(System.get_env("ENABLE_IPV6", "")) > 0
|
enable_ipv6 = String.length(System.get_env("ENABLE_IPV6", "")) > 0
|
||||||
attempted_timezone = System.get_env("TIMEZONE") || System.get_env("TZ") || "UTC"
|
|
||||||
|
|
||||||
valid_timezone =
|
|
||||||
if Timex.Timezone.exists?(attempted_timezone) do
|
|
||||||
attempted_timezone
|
|
||||||
else
|
|
||||||
Logger.warning("Invalid timezone #{attempted_timezone}, defaulting to UTC")
|
|
||||||
"UTC"
|
|
||||||
end
|
|
||||||
|
|
||||||
config :logger, level: String.to_existing_atom(System.get_env("LOG_LEVEL", "debug"))
|
config :logger, level: String.to_existing_atom(System.get_env("LOG_LEVEL", "debug"))
|
||||||
|
|
||||||
@@ -88,7 +79,8 @@ if config_env() == :prod do
|
|||||||
tmpfile_directory: Path.join([System.tmp_dir!(), "pinchflat", "data"]),
|
tmpfile_directory: Path.join([System.tmp_dir!(), "pinchflat", "data"]),
|
||||||
dns_cluster_query: System.get_env("DNS_CLUSTER_QUERY"),
|
dns_cluster_query: System.get_env("DNS_CLUSTER_QUERY"),
|
||||||
expose_feed_endpoints: expose_feed_endpoints,
|
expose_feed_endpoints: expose_feed_endpoints,
|
||||||
timezone: valid_timezone,
|
# This is configured in application.ex
|
||||||
|
timezone: "UTC",
|
||||||
log_path: log_path,
|
log_path: log_path,
|
||||||
base_route_path: base_route_path
|
base_route_path: base_route_path
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ defmodule Pinchflat.Application do
|
|||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
use Application
|
use Application
|
||||||
|
require Logger
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def start(_type, _args) do
|
def start(_type, _args) do
|
||||||
|
check_and_update_timezone()
|
||||||
|
|
||||||
children = [
|
children = [
|
||||||
PinchflatWeb.Telemetry,
|
PinchflatWeb.Telemetry,
|
||||||
Pinchflat.Repo,
|
Pinchflat.Repo,
|
||||||
@@ -47,4 +50,20 @@ defmodule Pinchflat.Application do
|
|||||||
:ok = Oban.Telemetry.attach_default_logger()
|
:ok = Oban.Telemetry.attach_default_logger()
|
||||||
:telemetry.attach_many("job-telemetry-broadcast", events, &PinchflatWeb.Telemetry.job_state_change_broadcast/4, [])
|
:telemetry.attach_many("job-telemetry-broadcast", events, &PinchflatWeb.Telemetry.job_state_change_broadcast/4, [])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# This has to be here (rather than runtime.exs) since the `tzdata` application
|
||||||
|
# has to be started before we can check the timezone
|
||||||
|
defp check_and_update_timezone do
|
||||||
|
attempted_timezone = System.get_env("TIMEZONE") || System.get_env("TZ") || "UTC"
|
||||||
|
|
||||||
|
valid_timezone =
|
||||||
|
if Tzdata.zone_exists?(attempted_timezone) do
|
||||||
|
attempted_timezone
|
||||||
|
else
|
||||||
|
Logger.warning("Invalid timezone #{attempted_timezone}, defaulting to UTC")
|
||||||
|
"UTC"
|
||||||
|
end
|
||||||
|
|
||||||
|
Application.put_env(:pinchflat, :timezone, valid_timezone)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user