couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jan Lehnardt (JIRA)" <>
Subject [jira] [Updated] (COUCHDB-1046) support load of external erlang modules in couchdb.
Date Sat, 26 Jan 2013 18:23:13 GMT


Jan Lehnardt updated COUCHDB-1046:

    Fix Version/s:     (was: 1.3)
> support load of external erlang modules in couchdb. 
> ----------------------------------------------------
>                 Key: COUCHDB-1046
>                 URL:
>             Project: CouchDB
>          Issue Type: New Feature
>          Components: Database Core
>            Reporter: Benoit Chesneau
>         Attachments: couchdb-plugins-003.patch, couchdb-plugins-004.patch, couchdb-plugins-005.patch,
couchdb-plugins-01.patch, couchdb-plugins-02.patch
> If you want to add external modules in CouchDB and load them , you need to set the ERL_FLAGS
environnement variable to the path of a module. 
> The attached patch allows couchdb to load plugins from plugin key in couchdb section.
It add needed path to the code path, so the vm can find modules.
> ex:
>    [couchdb]
>    plugins = plugin1, plugin2
>  Each plugin can have its own section where it set the binaries patch, eventually if
a service need to be added to the supervision you can set the module and function to load
like in daemon section and tel if it's a supervisor or simple service.
> It also allows couchdb to load a plugin service (gen_server or such) to the supervision.
You can choose if the service is a simple daemon or a supervisor.
>  ex:
>    [plugin1]
>    code_path = /path/to/plugin1/ebin
>    daemon = {module, function, [Args]}
>    supervisor = false
> Let me know what you think about it. This patch is really useful here and allows me to
dynamically load modules I want. Also it eases the integration of external module. For ex
I can load my couchapp_ng modules with this lines in local.ini : 
>     [couchdb]
>     plugins = couchapp-ng
>     [couchapp-ng]
>     code_path=/Users/benoitc/work/couchapp_ng/ebin
>     daemon = {couchapp_ng_routes, start_link, []}
>     [httpd_design_handlers]
>     _app = {couchapp_ng_httpd, handle_app_req}
>     [couchapp_ng_handlers]
>     rewrite = {couchapp_ng_handlers, rewrite_handler}
>     proxy = {couchapp_ng_handlers, proxy_handler}
> and can do the same with geocouch etc. Tested here with these modules.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message