我存储环境变量/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
。