Uploaded image for project: 'CouchDB'
  1. CouchDB
  2. COUCHDB-1046

support load of external erlang modules in couchdb.

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • None
    • None
    • Database Core
    • None
    • Regular Contributors Level (Easy to Medium)

    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.

      Attachments

        1. couchdb-plugins-01.patch
          3 kB
          Benoit Chesneau
        2. couchdb-plugins-02.patch
          4 kB
          Benoit Chesneau
        3. couchdb-plugins-003.patch
          7 kB
          Benoit Chesneau
        4. couchdb-plugins-004.patch
          7 kB
          Benoit Chesneau
        5. couchdb-plugins-005.patch
          8 kB
          Benoit Chesneau

        Activity

          People

            Unassigned Unassigned
            benoitc Benoit Chesneau
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: