From 794d03a5ee5cedc715e8aef46786784609bb38e5 Mon Sep 17 00:00:00 2001 From: Jesse Gumm Date: Tue, 9 Jan 2024 18:58:02 -0600 Subject: [PATCH] Produce a better error message if qdate hasn't been started --- Makefile | 30 ++++++++++++++---------------- rebar.config | 2 +- src/qdate.app.src | 4 ++-- src/qdate_srv.erl | 22 ++++++++++++++++++++-- 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 50e4f4c..aca1357 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,18 @@ -REBAR_PATH = $(shell which rebar3) - -ifeq ($(REBAR_PATH),) -REBAR = $(shell pwd)/rebar3 -else -REBAR = rebar3 -endif - - all: compile -compile: +# Check if rebar3.mk exists, and if not, download it +ifeq ("$(wildcard rebar3.mk)","") +$(shell curl -O https://raw.githubusercontent.com/choptastic/rebar3.mk/master/rebar3.mk) +endif + +# rebar3.mk adds a new rebar3 rule to your Makefile +# (see https://github.com/choptastic/rebar3.mk) for full info +include rebar3.mk + +compile: rebar3 $(REBAR) compile -update: +update: rebar3 $(REBAR) update test: compile @@ -28,11 +28,9 @@ dev: cd _checkouts; git clone https://github.com/choptastic/qdate_localtime -run: +run: rebar3 $(REBAR) shell -publish: - $(REBAR) as pkg upgrade - $(REBAR) as pkg hex publish - $(REBAR) upgrade +publish: rebar3 + $(REBAR) hex publish diff --git a/rebar.config b/rebar.config index de7ef3f..fd6368d 100644 --- a/rebar.config +++ b/rebar.config @@ -10,5 +10,5 @@ {deps, [ erlware_commons, - {qdate_localtime, "1.2.0"} + {qdate_localtime, "~> 1.2.0"} ]}. diff --git a/src/qdate.app.src b/src/qdate.app.src index 90bf670..fd6826e 100644 --- a/src/qdate.app.src +++ b/src/qdate.app.src @@ -5,9 +5,9 @@ {registered, []}, {applications, [ kernel, + stdlib, qdate_localtime, - erlware_commons, - stdlib + erlware_commons ]}, {modules, [qdate, qdate_srv, qdate_sup, qdate_app]}, {env, []}, diff --git a/src/qdate_srv.erl b/src/qdate_srv.erl index d09b782..731b8b1 100644 --- a/src/qdate_srv.erl +++ b/src/qdate_srv.erl @@ -152,8 +152,26 @@ unset_env(Key) -> gen_server:call(?SERVER, {unset, ?KEY(Key)}). get_all_env(FilterTag) -> - All = ets:tab2list(?TABLE), - [{Key, V} || {{?BASETAG, {Tag, Key}}, V} <- All, Tag==FilterTag]. + try ets:tab2list(?TABLE) of + All -> + [{Key, V} || {{?BASETAG, {Tag, Key}}, V} <- All, Tag==FilterTag] + catch + error:badarg:S -> + Msg = maybe_start_msg(), + logger:error(Msg), + + error({qdate_get_all_env_failed, #{ + original_error => {error, badarg, S} + }}) + end. + +maybe_start_msg() -> + "Attempting to read qdate environment failed (qdate_srv:get_all_env/1).\n" + "qdate may not have been started properly.\n" + "Please ensure qdate is started properly by either:\n" + "* Putting qdate in the 'applications' key in your .app.src or .app file, or\n" + "* Starting it manually with application:ensure_all_started(qdate) or qdate:start().". + %% ProcDic Vars