2017-04-10 83 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無關。 –