Couchdb 将~/.couchapp.conf中的密码重新用于不同的应用程序'。中华人民共和国

Couchdb 将~/.couchapp.conf中的密码重新用于不同的应用程序'。中华人民共和国,couchdb,couchapp,Couchdb,Couchapp,位于的手册中说,您可以将密码存储在~/.couchapp.conf中。但是,dburl实际上是指向特定数据库的url。如果在不同的数据库中有两个应用程序,比如说/db1和/db2,那么我们必须有这样的应用程序: { "env" : { "default" : { "db" : "http://admin:pass@localhost:5984/db1" } } } 以及: 但我不知道如何将其合并为一个(除非使用hack而不是default为每个数据库添加一个

位于的手册中说,您可以将密码存储在
~/.couchapp.conf
中。但是,
db
url实际上是指向特定数据库的url。如果在不同的数据库中有两个应用程序,比如说
/db1
/db2
,那么我们必须有这样的应用程序:

{
  "env" : {
    "default" : {
      "db" : "http://admin:pass@localhost:5984/db1"
    }
  }
}
以及:

但我不知道如何将其合并为一个(除非使用hack而不是
default
为每个数据库添加一个“环境”,例如
default-db1
default-db2
等等)


如何将其组合为一个,例如,我在
中指定
db1
db2
。couchapprc
文件在各自的应用程序或类似的东西中?我现在无法测试它,但我认为您应该简单地将两个环境合并,赋予它们不同的名称(例如“env1”和“env2”):

然后将环境作为最后一个命令行参数传递:
couchapp push env1


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

查看
dist packages/couchapp/config.py
,方法
config.load在中间执行以下操作:

new_conf = util.read_json(p, use_environment=True,
    raise_on_error=True)
注意
使用\u environment=True
。这不是一件完美的事情,因为它没有考虑到global~/.couchapp.conf文件中的变量,但它至少提供了一个解决方法-只需定义必要的环境变量,例如
couchapp_USER
couchapp_PASS
,并在.couchapprc文件中使用它们:

"db" : "http://$COUCHAPP_USER:$COUCHAPP_PASS@localhost:5984/db1"
现在您可以运行
couchapp push

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

它将按预期工作

问题是我想把这个分开。我不想在全局文件中定义所有环境,我不想到处传播密码(例如,如果我更改通行证,我必须在任何地方更改),而且在共享时,让其他人使用他们的设置而不是我的设置很重要。
"db" : "http://$COUCHAPP_USER:$COUCHAPP_PASS@localhost:5984/db1"
$ export COUCHAPP_USER=testadmin 
$ export COUCHAPP_PASS=pass 
$ couchapp push