I want to start writing down what I know about building plugins for Redmine and ChiliProject but I’ve been doing it for so long that I don’t remember what stupid mistakes I made while learning. So I want to “ask the audience”.
What questions do you have or have you had when building plugins for Redmine or ChiliProject?
Post your question in the comments below or reply to me on Twitter (@edavis10) and I’ll try to answer them in some future blog posts.
These are the questions I’ve encountered myself while doing redmine plugins. I’ve been able to answer most of them, but it took me a lot of time and effort; I had to hunt for information in many places, and often had to rely on reading the redmine source code.
1- What is the correct way to handle plugin settings? Some plugins need “settings” in order to work. It could be a path on the filesystem, or a flag, or a bit of text that must be shown in all pages.
2- Can you explain what “Dispatcher”, “require_dependency” and “Principal” are?
3- What is the correct way to calculate an instance variable into an existing controller? For example, say I want to have a drop-down showing projects on my “plugin settings”. How do I monkeypatch the new @projects variable into SettingsController?
4- Is there a recommended way to handle i18n in plugins? If I only include an en.yml locale, will I get errors when my users set their i18n settings to french?
5- Say I need additional CSS or images for displaying information in my plugin. Where should I put those?
6- I’d like to use a gem from inside my plugin. The gem isn’t installed on the standard redmine. Is there a way to satisfy this?
7- Is there a standard for versioning redmine/chilliproject plugins?
8- Are there any licensing facts I need to take into account? Is there a particular licensing provision regarding plugins?
Sorry for the long post. I hope it helps.
Awesome post Enrique, this helps me a lot. Please let me know if you think of any other questions.
Hi Eric,
I’m glad I could help, if only a tiny bit.
I’ve just thought of two more questions while helping a coworker develop a very simple plugin for the first time. The plugin literally just redefines a helper function. ( It allows locking users without having to activate them first ; shows two buttons instead of one in user#index)
The two new question are:
9- What is “unloadable”?
10- Why can’t I just monkeypatch (redefine) a method into an existing Model/Controller/Helper but have to rely on alias_method_chain instead?
Regards!
( BTW, if anyone is interested, the plugin he developed is https://github.com/splendeo/fast_user_lock )
Hi Eric,
Redmine_Burndown: can it be created or filtered for each team member?
Thanks a million?
Sorry, I didn’t mean questions about specific plugins. You should contact the plugin author so see what features the plugin has.