diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-12-05 12:18:10 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-12-05 12:18:10 +0000 |
| commit | 9c809d9e2b7e661cba7beeb8fe3d397bf02354a2 (patch) | |
| tree | 9b9e62866776c17f592b6ffded7abc2f3ef43a62 /src | |
| parent | d316f64fa92a7b30b434b8cfbc0f09fe660038d6 (diff) | |
| parent | b865b398460c8f7f28d66172647126711c07d257 (diff) | |
| download | rabbitmq-server-git-9c809d9e2b7e661cba7beeb8fe3d397bf02354a2.tar.gz | |
Merge bug26446
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_plugins.erl | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl index dfde5289d1..55f7359b71 100644 --- a/src/rabbit_plugins.erl +++ b/src/rabbit_plugins.erl @@ -208,7 +208,27 @@ clean_plugin(Plugin, ExpandDir) -> delete_recursively(rabbit_misc:format("~s/~s", [ExpandDir, Plugin])). prepare_dir_plugin(PluginAppDescPath) -> - code:add_patha(filename:dirname(PluginAppDescPath)). + PluginEbinDir = filename:dirname(PluginAppDescPath), + Plugin = filename:basename(PluginAppDescPath, ".app"), + code:add_patha(PluginEbinDir), + case filelib:wildcard(PluginEbinDir++ "/*.beam") of + [] -> + ok; + [BeamPath | _] -> + Module = list_to_atom(filename:basename(BeamPath, ".beam")), + case code:ensure_loaded(Module) of + {module, _} -> + ok; + {error, badfile} -> + rabbit_log:error("Failed to enable plugin \"~s\": " + "it may have been built with an " + "incompatible (more recent?) " + "version of Erlang~n", [Plugin]), + throw({plugin_built_with_incompatible_erlang, Plugin}); + Error -> + throw({plugin_module_unloadable, Plugin, Error}) + end + end. %%---------------------------------------------------------------------------- |
