2011-08-17 10 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

問題是我想分開。我不想在全局文件中定義所有的環境,我不想在所有地方傳播密碼(例如,如果我更改密碼,我必須到處改變密碼),並且在共享時,重要的是要有其他人使用他們的設置而不是我的。 –

相關問題