Plugins provide a means to cleanly add new functionality to Praxis. This extra functionality can be enhanced in different areas of the framework: by dynamically extending core classes, or registering runtime hooks to be executed during request handling.
Here are a few different examples of what plugins can do:
- Add DSL directives available when defining resources and actions. For example, an authentication plugin can add a
requires_authenticationdirective available to all
ActionDefinitionsto specify that the action requires an authenticated user.
- Enhance the
Requestobject to carry contextual information. For example, expose a similar authentication plugin could add information about the currently logged-in user through the
Request#current_usermethod, which when invoked might even return a fully loaded
- Enforce application-wide logic. For example, the same authentication plugin could inject a before :action filter into every existing
Controllerto enforce the authentication checks, or install global middleware or around filters for specific common Controllers.
- Decorate resulting Praxis docs with attributes defined by the plugin. For example, we might want to include which actions require authentication to the generated documentation.
Please see Plugins Framework, to learn more details about how to use and develop new Plugins.
There are some plugins that will be always bundled with the Praxis framework. Primarily because they are used by the Praxis framework itself, therefore it is not necessary to enable them to use them. This is the list of bundled plugins:
- Stats: A metrics collector plugin that is Statsd-compatible
- Notifications A Praxis wrapper to ActiveSupport Notifications
You can find other plugins on our wiki page.