2013-03-14 70 views
0

我存儲環境變量/etc/environment,如:Rails包含在環境變量返回字符

FACEBOOK_API_KEY=XXXXXXXXXXX 
FACEBOOK_API_SECRET=XXXXXXXXXX 

但是當我通過Rails的訪問ENV變量i得到這樣的:

ENV['FACEBOOK_API_KEY'] 
=> XXXXXXXXX\r 

通知的\r ,如何擺脫這一點,而不清理每一個ENV變量的呼叫?

回答

1

您可以使用figaro來管理您的ENV變量。

它爲您創建一個config/application.yml文件,不應將其檢入版本控制。

# config/application.yml 
FACEBOOK_API_KEY: XXXXXXXXXXX 
FACEBOOK_API_SECRET: XXXXXXXXXX 

變量將在ENV['FACEBOOK_API_KEY']可用,因爲你已經習慣了。

另一種方法是configatron

2

我的猜測是你得到\r,因爲你使用Windows文本編輯器編輯/etc/environment並將它安裝在Unix系統上(或者可能在Windows中使用Cygwin,但同樣適用)。或者你從一個源代碼複製/粘貼它。無論如何,有些東西已經將CRLF引入到只需要LF行結束的Unix文件中。

如果是編輯器,您需要修復它以停止使用Windows CRLF(\r\n)行結尾,並使用Unix LF(\n)行尾。記事本++有一個選項,許多其他編輯器和IDE也是如此。谷歌周圍爲你的,並找出如何使用Unix行尾。否則你會遇到很多類似的問題。

您可以通過像dos2unix程序運行它修復現有的文件(在Unix系統上,你可能必須安裝包),或使用簡單的tr命令是這樣的:

編輯:固定下面的mv命令中的文件名順序。

tr -d '\r' </etc/environment >/tmp/environment 
# <verify new file looks good> 
mv /tmp/environment /etc/environment 

請注意,備份,檢查文件等

您可以確保有沒有在你的文件中的任何流氓\r字符通過看一個八進制轉儲:

od -c /tmp/environment 

在輸出中查找任何\r