Heroku上的Ruby on Rails 4,带有反斜杠转义的环境变量

我有一个环境变量:

MY_VALUE: "EFINbA\u003d\u003d\n" 

当我通过ruby阅读它时,它返回为:

 ENV['MY_VALUE'] => "EFINbA\\u003d\\u003d\\n" 

…但仅限于Heroku,而不是Mac(通过local_env.yml文件设置,无可否认)

首先,我只是不明白为什么会这样做。

其次,当我尝试删除\并用\替换它们时,我发现没有任何效果。

虽然:ENV [‘MY_VALUE’]。gsub(“\”,“x”)=>“EFINbAxu003dxu003dxn”

这:ENV [‘MY_VALUE’]。gsub(“\”,“\”)

…不起作用,因为最后一个双引号被转义,而:

 ENV['MY_VALUE'].gsub("\\","\\") 

…实际上什么都不做。

显然我在这里遗漏了一些基本的东西,而且我发现它的时间已经太晚了。

谢谢。

你可以尝试YAML的unescape

 require 'yaml' def unescape(s) YAML.load(%Q(---\n"#{s}"\n)) end unescape(ENV['MY_VALUE']) 

或者如果你没有引入yaml模块,你可以使用eval

 def unescape(s) eval %Q{"#{s}"} end 

YAML优于eval的优势在于它可能更安全。