Redmine plugins should be gems
Redmine has a pretty good plugin mechanism. This has resulted in a ton of plugins, most of which are still distributed like in the good old days:
- Get the source from somewhere
- Copy it to the plugins directory
Distributing your plugins as gems is a vastly better solution.
Simple installation
Two steps, which should be fairly familiar to anybody installing Redmine:
- Add to
Gemfile.local
:gem "gem-name"
bundle
That’s it.
Better versioning
With gems your plugins version becomes a first-class citizen. While versioning can be handled using branches/tags or specific downloaded packages in the old way of doing things, tracking master directly from the repository is the most common way.
Dependency tracking
If your gem has dependencies on other libraries/gems, the gem spec is the perfect way to specify these. Properly configured, this will allow Bundler/RubyGems to fetch the necessary dependencies when installing, making the installation even easier.
Installation from source is still possible
Thanks to Bundler, you can still grab the plugin from the git source repository:
gem "gem-name", :git => "git@github.com:koppen/redmine_github_hook.git"
… or a tag or a branch or any of the other git options from Bundler.
Just do it
So what are you waiting for? Go forth and distribute your Redmine plugins as gems.