2017-04-10 86 views
0

我有一些凭据需要读入Ruby,但问题是他们有#$在其中重复了几次。上述字符序列的行为如下:正在评估/截断字符串中的Ruby全局变量

> "123#$123" 
=> "123" 

出于某种原因,红宝石评估$1(这是nil因为没有正则表达式发生过)。有什么办法可以避免这种情况发生?谢谢。

+0

如果你解释你正在试图做的结果是什么这很可能帮助在那些字符串中。目前,它看起来像是一个“[XY问题](https://meta.stackexchange.com/q/66377/153968)”,您尝试以错误的方式做一些事情后清理字符串。 –

+0

是的,我认为我提前问过这个问题。没有列出所有不同的变数。事实证明,实际问题出在一个不相关的插件中,这个插件正在做一些非常奇怪的'sed'替换。不用说,Ruby不是问题。我们可以关闭这个问题或其他什么。 – user701847

+0

如果问题对社区没有价值,您可以删除该问题。正如问到它将来无法帮助任何人,因为没有足够的信息将其与特定问题联系起来。 –

回答

1

使用单引号代替双引号:

irb(main):005:0> '123#$123'  
=> "123\#$123" 

或以其他方式逃避$字符:

irb(main):006:0> "123#\$123" 
=> "123\#$123" 
+0

我想我应该澄清......最终我想通过Rails的'secrets.yml'文件(它可以通过'ENV ['THE_STRING_I_WANT''''读取它)加载这个变量,然后通过'Rails访问它.application.secrets.the_string_i_want',所以我不认为我有这种控制(使用单引号)。 – user701847

+0

YAML不会像这样内插,所以你应该没问题。 – tadman

+2

@ user701847:YAML是一种完全不同的语言。它与Ruby没有任何关系。它的语法完全不同,它的语义完全不同。 Ruby字符串插值根本不存在于YAML中,因为Ruby字符串插值是Ruby的一个功能,而YAML与Ruby无关。 –