我将环境变量存储在/etc/environment
:
FACEBOOK_API_KEY=XXXXXXXXXXX
FACEBOOK_API_SECRET=XXXXXXXXXX
但是当我通过 Rails 访问 ENV 变量时,我得到了这个:
ENV['FACEBOOK_API_KEY']
=> XXXXXXXXX\r
注意\r
,如何在不清理对 ENV vars 的每次调用的情况下摆脱它?
我将环境变量存储在/etc/environment
:
FACEBOOK_API_KEY=XXXXXXXXXXX
FACEBOOK_API_SECRET=XXXXXXXXXX
但是当我通过 Rails 访问 ENV 变量时,我得到了这个:
ENV['FACEBOOK_API_KEY']
=> XXXXXXXXX\r
注意\r
,如何在不清理对 ENV vars 的每次调用的情况下摆脱它?
我的猜测是你得到了一个\r
,因为你正在/etc/environment
使用 Windows 文本编辑器进行编辑并将其安装在 Unix 系统上(或者可能在 Windows 中使用 Cygwin,但同样适用)。或者您从这样做的来源复制/粘贴它。无论如何,某些东西已经将 CRLF 引入了只需要 LF 行尾的 Unix 文件中。
如果它是一个编辑器,您需要修复它以停止使用 Windows CRLF ( \r\n
) 行尾,并使用 Unix LF ( \n
) 行尾。Notepad++ 有一个选项,就像许多其他编辑器和 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
在输出中查找任何内容。
你可以使用figaro来管理你的 ENV 变量。
它会config/application.yml
为您创建一个不应签入版本控制的文件。
# config/application.yml
FACEBOOK_API_KEY: XXXXXXXXXXX
FACEBOOK_API_SECRET: XXXXXXXXXX
变量将ENV['FACEBOOK_API_KEY']
按照您的习惯使用。
另一种选择是configatron。