[ 
https://issues.apache.org/jira/browse/COUCHDB-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13742980#comment-13742980
 ] 

Jason Smith commented on COUCHDB-1867:
--------------------------------------

Yes, I have a common install of CouchDB with all its plugins, and I choose 
which to enable when spinning up an instance. (Multiple instances can run on a 
machine, on different ports, and from different config files.) Part of the 
config is generated dynamically when a couch starts. So long story short, I am 
fine with anything, just providing some background about the odd-looking 
blacklist feature.

Okay, that is good advice about going too far with OTP. Thanks. Yes, CouchDB 
follows the "NoTP" architecture.

I think I have found a good middle ground, using Rebar to create and build a 
full-featured but no-op CouchDB plugin. I have a rebar template working which 
generates the kind of plugin that CouchDB currently supports. I am now 
investigating perhaps a simple rebar plugin which will automate zipping the 
CouchDB plugin. I am unsure if that will pay out though. I will email the list 
when I am done.

Considering its near-zero real-world exercise, the .ini system is decent for 
adding modular functionality. However I see three problems:

1. If you want to change functionality of an existing path (e.g. /_utils) then 
you must completely override the normal handler, and then manually call it from 
your code. For example, futon_couchdb serves Mobile Futon to mobile browsers. 
It is a simple user-agent check. For desktop browsers, I have to manually call 
the original Futon handler. That is hard coded in the plugin. So if you 
reconfigured to some other Futon, and also installed my plugin, then bizarrely, 
you would get standard Futon.

2. In general, the order plugins are loaded is very significant. The last http 
handler to register for a particular URL wins.

3. Standard stuff. It is early days so there are not many interesting or 
convenient hooks into interesting situations within Couch. I am currently 
working on a custom logger and I think it will require a minor change to 
CouchDB core. I just want standard NCSA common log format for chrissakes! :)
                
> Plugins
> -------
>
>                 Key: COUCHDB-1867
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1867
>             Project: CouchDB
>          Issue Type: New Feature
>            Reporter: Jan Lehnardt
>            Assignee: Jan Lehnardt
>            Priority: Minor
>
> It should be easy to install CouchDB plugins.

--
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: http://www.atlassian.com/software/jira

Reply via email to