为不同应用程序的 .couchapprc 重用来自 ~/.couchapp.conf 的密码
Posted
技术标签:
【中文标题】为不同应用程序的 .couchapprc 重用来自 ~/.couchapp.conf 的密码【英文标题】:Reusing passwords from ~/.couchapp.conf for different applications' .couchapprc 【发布时间】:2011-08-17 03:39:56 【问题描述】:http://couchapp.org/page/couchapp-config 的手册说您可以将密码存储在~/.couchapp.conf
中。但是,db
url 实际上是特定数据库的 url。如果在不同的数据库中有两个应用程序,比如/db1
和/db2
,那么我们必须有这个:
"env" :
"default" :
"db" : "http://admin:pass@localhost:5984/db1"
和:
"env" :
"default" :
"db" : "http://admin:pass@localhost:5984/db2"
但我不知道如何将其合并为一个(除非使用 hack 代替 default
为每个 DB 添加一个“环境”,例如 default-db1
和 default-db2
等)。
我怎样才能把它合二为一,例如我在各自应用程序的.couchapprc
文件中指定db1
和db2
或类似的东西?
【问题讨论】:
【参考方案1】:我现在无法对其进行测试,但我认为您应该简单地将两个环境合并为不同的名称(例如“env1”和“env2”):
"env" :
"env1" :
"db" : "http://admin:pass@localhost:5984/db1"
,
"env2" :
"db" : "http://admin:pass@localhost:5984/db2"
然后将环境作为最后一个命令行参数传递:couchapp push env1
。
但我认为最简单的解决方案是将信息放在项目根目录下的.couchapprc
中,然后将其添加到.gitignore
、.htignore
或您用于版本控制的任何内容中。
【讨论】:
问题是我想把它分开。我不想在全局文件中定义所有环境,我不想到处传播密码(例如,如果我更改通行证,我必须到处更改),并且在共享时,重要的是拥有其他人使用他们的设置而不是我的。【参考方案2】:查看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_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
它会按预期工作。
【讨论】:
以上是关于为不同应用程序的 .couchapprc 重用来自 ~/.couchapp.conf 的密码的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 上针对不同的屏幕尺寸和密度重用可绘制图像
如何移除 UITableView (MonoTouch) 中可重用的单元格