2011-08-17 13 views
3

http://couchapp.org/page/couchapp-config的手册说明您可以将密码存储在~/.couchapp.conf中。但是,db url是acutally到特定数据库的网址。如果有不同的数据库中的两个应用,说/db1/db2,那么我们就必须有这样的:重新使用来自〜/ .couchapp.conf的密码以用于不同的应用程序'.couchapprc

{ 
    "env" : { 
    "default" : { 
     "db" : "http://admin:[email protected]:5984/db1" 
    } 
    } 
} 

和:

{ 
    "env" : { 
    "default" : { 
     "db" : "http://admin:[email protected]:5984/db2" 
    } 
    } 
} 

,但我看不出这可怎么合并合成为一个(除非代替default,黑客用于为每个数据库添加一个“环境”,例如default-db1default-db2等)。

我该如何将它合并为一个,例如我在.couchapprc文件中分别指定了db1db2或其他类似的文件?

回答

1

展望dist-packages/couchapp/config.py,方法Config.load这是否在中间:

new_conf = util.read_json(p, use_environment=True, 
    raise_on_error=True) 

use_environment=True。这不是一个完美的东西,因为它没有考虑全局〜/ .couchapp.conf文件中的变量,但它至少提供了一种解决方法 - 只需定义必要的环境变量,如和COUCHAPP_PASS,并将它们用于该.couchapprc文件:

"db" : "http://$COUCHAPP_USER:[email protected]:5984/db1" 

现在你可以运行couchapp push

$ export COUCHAPP_USER=testadmin 
$ export COUCHAPP_PASS=pass 
$ couchapp push 

,它会正常工作。

2

我现在不能测试,但我认为你应该简单地合并这两个环境给他们不同的名称(例如“ENV1”和“ENV2”):

{ 
    "env" : { 
    "env1" : { 
     "db" : "http://admin:[email protected]:5984/db1" 
    }, 
    "env2" : { 
     "db" : "http://admin:[email protected]:5984/db2" 
    } 
    } 
} 

然后通过环境作为最后的命令行参数:couchapp push env1

然而,我认为最简单的解决方案是将信息放在.couchapprc的项目根目录中,然后将其添加到.gitignore,.htignore或任何您用于版本控制的东西。

+0

问题是我想分开。我不想在全局文件中定义所有的环境,我不想在所有地方传播密码(例如,如果我更改密码,我必须到处改变密码),并且在共享时,重要的是要有其他人使用他们的设置而不是我的。 –

相关问题