2013-03-14 54 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