0

我将环境变量存储在/etc/environment

FACEBOOK_API_KEY=XXXXXXXXXXX
FACEBOOK_API_SECRET=XXXXXXXXXX

但是当我通过 Rails 访问 ENV 变量时,我得到了这个:

ENV['FACEBOOK_API_KEY']
=> XXXXXXXXX\r

注意\r,如何在不清理对 ENV vars 的每次调用的情况下摆脱它?

4

2 回答 2

2

我的猜测是你得到了一个\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在输出中查找任何内容。

于 2013-03-14T21:57:57.993 回答
1

你可以使用figaro来管理你的 ENV 变量。

它会config/application.yml为您创建一个不应签入版本控制的文件。

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

变量将ENV['FACEBOOK_API_KEY']按照您的习惯使用。

另一种选择是configatron

于 2013-03-14T21:51:06.593 回答