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
的优势在于它可能更安全。