diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_mnesia.erl | 4 | ||||
| -rw-r--r-- | src/rabbit_plugins.erl | 41 |
2 files changed, 34 insertions, 11 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index eea9349dbc..74296783f4 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -862,12 +862,12 @@ with_running_or_clean_mnesia(Fun) -> case IsMnesiaRunning of true -> Fun(); false -> - {ok, MnesiaDir} = application:get_env(mnesia, dir), + SavedMnesiaDir = dir(), application:unset_env(mnesia, dir), mnesia:start(), Result = Fun(), application:stop(mnesia), - application:set_env(mnesia, dir, MnesiaDir), + application:set_env(mnesia, dir, SavedMnesiaDir), Result end. diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl index 5165602dd9..14b1c8bcc6 100644 --- a/src/rabbit_plugins.erl +++ b/src/rabbit_plugins.erl @@ -71,10 +71,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(), "plugins_dir_stub"]) + 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; @@ -82,8 +108,7 @@ setup() -> [ExpandDir, E1]}}) end, - {ok, EnabledFile} = application:get_env(rabbit, enabled_plugins_file), - Enabled = read_enabled(EnabledFile), + Enabled = enabled_plugins(), prepare_plugins(Enabled). extract_schemas(SchemaDir) -> @@ -132,8 +157,7 @@ extract_schema(#plugin{type = dir, location = Location}, SchemaDir) -> %% @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)]. @@ -244,10 +268,9 @@ running_plugins() -> %%---------------------------------------------------------------------------- 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), {ValidPlugins, Problems} = validate_plugins(WantedPlugins), |
