couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benoit Chesneau (JIRA)" <j...@apache.org>
Subject [jira] Updated: (COUCHDB-1046) support load of external erlang modules in couchdb.
Date Thu, 27 Jan 2011 16:06:43 GMT

     [ https://issues.apache.org/jira/browse/COUCHDB-1046?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Benoit Chesneau updated COUCHDB-1046:
-------------------------------------

    Description: 
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.



  was:
    [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.




bad copy paste fixed

> support load of external erlang modules in couchdb. 
> ----------------------------------------------------
>
>                 Key: COUCHDB-1046
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1046
>             Project: CouchDB
>          Issue Type: New Feature
>          Components: Database Core
>            Reporter: Benoit Chesneau
>             Fix For: 1.2
>
>         Attachments: couchdb-plugins.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.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message