我存儲環境變量/etc/environment
,如:Rails包含在環境變量返回字符
FACEBOOK_API_KEY=XXXXXXXXXXX
FACEBOOK_API_SECRET=XXXXXXXXXX
但是當我通過Rails的訪問ENV變量i得到這樣的:
ENV['FACEBOOK_API_KEY']
=> XXXXXXXXX\r
通知的\r
,如何擺脫這一點,而不清理每一個ENV變量的呼叫?
我存儲環境變量/etc/environment
,如:Rails包含在環境變量返回字符
FACEBOOK_API_KEY=XXXXXXXXXXX
FACEBOOK_API_SECRET=XXXXXXXXXX
但是當我通過Rails的訪問ENV變量i得到這樣的:
ENV['FACEBOOK_API_KEY']
=> XXXXXXXXX\r
通知的\r
,如何擺脫這一點,而不清理每一個ENV變量的呼叫?
您可以使用figaro來管理您的ENV變量。
它爲您創建一個config/application.yml
文件,不應將其檢入版本控制。
# config/application.yml
FACEBOOK_API_KEY: XXXXXXXXXXX
FACEBOOK_API_SECRET: XXXXXXXXXX
變量將在ENV['FACEBOOK_API_KEY']
可用,因爲你已經習慣了。
另一種方法是configatron。
我的猜測是你得到\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
。