Patch #31110
closed
Raise an exception if the plugin directory name differs from the plugin id
Added by Mizuki ISHIKAWA over 5 years ago.
Updated over 2 years ago.
Description
If the plugin directory name and the plugin id are not the same, the plugin will not work because the required files will not be read.
Example:
If you change the directory name of redmine_vividtone_my_page_blocks plugin to redmine-vividtone-my-page-blocks, the following log will be output and it will not work well.
Partial "my/blocks/new_issues" missing for block "new_issues" found in admin (id=1) preferences
Partial "my/blocks/neglected_issues" missing for block "neglected_issues" found in admin (id=1) preferences
Partial "my/blocks/doing_issues" missing for block "doing_issues" found in admin (id=1) preferences
The problem is hard to solve because you can not notice that the wrong directory name is the cause of the problem.
I think I should raise an exception if there is no directory with the same name as the plugin id.
I attached a patch for that.
Files
I forgot to attach a patch:)
- Target version set to Candidate for next major release
Thank you for posting the patch. I think it would be even better if the exception has a more informative message like the following. With this message, an admin easily understands that he should rename the directory.
Plugin not found. The plugin #{p.id} should be installed in #{p.directory}.
- Target version changed from Candidate for next major release to 4.1.0
I corrected the error message to include the directory name.
+1 Nice work, quite helpful!
- Status changed from New to Closed
- Assignee set to Go MAEDA
Committed the patches. Thank you for your contribution.
- Related to Feature #31538: Allow a plugin to be installed in the directory different from the plugin id added
Since the following piece of code was added:
unless File.directory?(p.directory)
raise PluginNotFound, "Plugin not found. The directory for plugin #{p.id} should be #{p.directory}."
end
This prevent Redmine plugins packed into Gem (example https://rubygems.org/gems/redmine_apijs for Redmine < 5) to work with Redmine 4.1+. It was working with Redmine 3.x and 4.0.
By removing it, this work with Redmine 4.1 / 4.2 / 5.0.
luigifab ! wrote:
Since the following piece of code was added:
[...]
This prevent Redmine plugins packed into Gem (example https://rubygems.org/gems/redmine_apijs for Redmine < 5) to work with Redmine 4.1+. It was working with Redmine 3.x and 4.0.
By removing it, this work with Redmine 4.1 / 4.2 / 5.0.
Thanks for sharing the issue.
The exception occurred because the plugin directory is located in /usr/local/bundle/gems/redmine_apijs-6.9.0
when using the redmine_apijs plugin as you mentioned.
luigifab ! wrote:
Since the following piece of code was added:
[...]
This prevent Redmine plugins packed into Gem (example https://rubygems.org/gems/redmine_apijs for Redmine < 5) to work with Redmine 4.1+. It was working with Redmine 3.x and 4.0.
By removing it, this work with Redmine 4.1 / 4.2 / 5.0.
Since this issue is closed and the change has already been delivered, please open a new issue.
Also available in: Atom
PDF