ruby-on-rails - Rails 在环境变量中包含返回字符

标签 ruby-on-rails linux environment-variables

我将环境变量存储在 /etc/environment 中,例如:

FACEBOOK_API_KEY=XXXXXXXXXXX
FACEBOOK_API_SECRET=XXXXXXXXXX

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

ENV['FACEBOOK_API_KEY']
=> XXXXXXXXX\r

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

最佳答案

我的猜测是你得到一个 \r 因为你正在使用 Windows 文本编辑器编辑 /etc/environment 并将它安装在 Unix 系统上 (或者可能在 Windows 中使用 Cygwin,但同样适用)。或者您从这样做的来源复制/粘贴它。无论如何,某些东西将 CRLF 引入了只需要 LF 行结尾的 Unix 文件中。

如果它是一个编辑器,您需要修复它以停止使用 Windows CRLF (\r\n) 行结尾,并使用 Unix LF (\n) 行结尾。 Notepad++ 有一个选项,许多其他编辑器和 IDE 也有。 Google 一下,找出如何使用 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

关于ruby-on-rails - Rails 在环境变量中包含返回字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420785/

相关文章:

java - 如何在tomcat配置中设置环境变量CA_DATA

javascript - Rails 和 jquery : script displayed instead of execution

ruby-on-rails - spree 1.3 : How to only show users products available in their size

ruby-on-rails - 在 Rails 3.1 中为 Mailer 和 View 提供自定义帮助器

linux - 为 Qt creator 安装 doxygen 插件

c - 查找缓冲区溢出的堆栈起点

ruby-on-rails - Ransack 将结果导出到 CSV

s 进程可以在两种不同类型的套接字上进行通信吗

linux - 程序从终端运行良好,但不能从 shell 脚本运行

java - 在命令提示符下运行js