Content
You are here:
Plugin Tutorial
Added by Scott Sanders over 8 years ago
Is there a real plugin tutorial on doing real world applications of a plugin for OP. I’m familiar with Ruby on Rails but seems that OP uses a special method to generate plugins and I’m not able to figure out how to generate even a simple ‘log’ plugin to attach logs(as an example only, not much use I understand) to a project. Is there anyone that actively develops plugins for OP or is this more of a dead project except for the original developers that started the project?
Replies (8)
And the plugin tutorial on this website is a tutorial on how to install a plugin not how to actual do more then generate a very basic package and then to download via git some source, nothing about how to wrap things into the UI or any real tutorial information on how to build a plugin.
OpenProject uses a wrapper around Rails engines to register and pass information from and to plugins. It’s nontrivial to provide a complete guide to these integrations.
However, if you’re experienced with Ruby and Rails, you’ll find lots of starting points in the existing plugins and their core counterparts:
A more or less straightforward plugin to add a new module is, e.g., openproject-meeting: https://github.com/finnlabs/openproject-meeting (The meeting functionality).
Best,
Oliver
Oliver thanks for getting back so quickly. Am I understanding that a standard rails engine can be plugged into OP without any issues? my first attempt at that was not able to access any of the OP side of the application. Understand I’m new to creating engines as a whole.
One issue I seem to be running into is the lack of a basic engine structure with your command: bundle exec rails generate open_project:plugin todolist ../plugins/
There is no bin/rails to generate from or any other basic functions, is this normal or a configuration error on my part?
Oliver Günther wrote:
If it is non-trivial a small tutorial with a parent and child table with minor views and standalone modifications maybe based on project_id or work_package_id would be nice.
Hey Scott,
we do not have further documentation on engine development, since the majority of the plugin works just like a regular engine. You can regard an engine similar to a stripped-down Rails app.
You mentioned migrations: Migrations in a plugin are defined just as they would be in a regular Rails app in
db/migrate
and are executed together with the core when the plugin is registered with the core, as detailed in the plugin guide.There are methods you can use in the engine.rb, however there is no explicit documentation for that.
I suggest you study the code of the two plugin wrappers mentioned above and look at some of the free plugins available. What happens in the
engine.rb
is usually quite clear, such as registering new menu buttons,permissions or patching core functionality.
Best,
Oliver
This does not address the issue that your generator wrapper creates a very incomplete engine. Engines have a bin/rails for generating standard applications, your wrapper does not include this nor do you have any instructions on generating this.
You’re right that our own generator doesn’t generate binstubs in the engine itself. I think Rails offers that option in the plugin/engine generators with an option. I’ll try to look into subclassing that generator so we have that options available.
In the meantime, you’ll just have to write these files yourselves, it shouldn’t be that much more effort.
Best,
Oliver