diff options
| -rw-r--r-- | src/rabbit_mnesia.erl | 3 | ||||
| -rw-r--r-- | src/rabbit_plugins.erl | 41 |
2 files changed, 33 insertions, 11 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index c420838312..08e4e2e2d5 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -840,12 +840,11 @@ with_running_or_clean_mnesia(Fun) -> case IsMnesiaRunning of true -> Fun(); false -> - {ok, MnesiaDir} = application:get_env(mnesia, dir), application:unset_env(mnesia, dir), mnesia:start(), Result = Fun(), application:stop(mnesia), - application:set_env(mnesia, dir, MnesiaDir), + application:set_env(mnesia, dir, dir()), Result end. diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl index b408b7e613..f176d3abe0 100644 --- a/src/rabbit_plugins.erl +++ b/src/rabbit_plugins.erl @@ -61,10 +61,36 @@ ensure(FileJustChanged0) -> {error, {enabled_plugins_mismatch, FileJustChanged, OurFile}} end. +-spec plugins_expand_dir() -> file:filename(). +plugins_expand_dir() -> + case application:get_env(rabbit, plugins_expand_dir) of + {ok, ExpandDir} -> + ExpandDir; + _ -> + filename:join([rabbit_mnesia:dir(), "plugins_expand_dir"]) + end. + +-spec plugins_dist_dir() -> file:filename(). +plugins_dist_dir() -> + case application:get_env(rabbit, plugins_dir) of + {ok, PluginsDistDir} -> + PluginsDistDir; + _ -> + filename:join([rabbit_mnesia:dir(), "fake_plugins_dir"]) + end. + +-spec enabled_plugins() -> [atom()]. +enabled_plugins() -> + case application:get_env(rabbit, enabled_plugins_file) of + {ok, EnabledFile} -> + read_enabled(EnabledFile); + _ -> + [] + end. + %% @doc Prepares the file system and installs all enabled plugins. setup() -> - {ok, ExpandDir} = application:get_env(rabbit, plugins_expand_dir), - + ExpandDir = plugins_expand_dir(), %% Eliminate the contents of the destination directory case delete_recursively(ExpandDir) of ok -> ok; @@ -72,14 +98,12 @@ setup() -> [ExpandDir, E1]}}) end, - {ok, EnabledFile} = application:get_env(rabbit, enabled_plugins_file), - Enabled = read_enabled(EnabledFile), + Enabled = enabled_plugins(), prepare_plugins(Enabled). %% @doc Lists the plugins which are currently running. active() -> - {ok, ExpandDir} = application:get_env(rabbit, plugins_expand_dir), - InstalledPlugins = plugin_names(list(ExpandDir)), + InstalledPlugins = plugin_names(list(plugins_expand_dir())), [App || {App, _, _} <- rabbit_misc:which_applications(), lists:member(App, InstalledPlugins)]. @@ -163,10 +187,9 @@ is_loadable(App) -> %%---------------------------------------------------------------------------- prepare_plugins(Enabled) -> - {ok, PluginsDistDir} = application:get_env(rabbit, plugins_dir), - {ok, ExpandDir} = application:get_env(rabbit, plugins_expand_dir), + ExpandDir = plugins_expand_dir(), - AllPlugins = list(PluginsDistDir), + AllPlugins = list(plugins_dist_dir()), Wanted = dependencies(false, Enabled, AllPlugins), WantedPlugins = lookup_plugins(Wanted, AllPlugins), |
