2017-04-10 1 views
0

Ich habe einige Anmeldeinformationen, die ich in Ruby lesen muss, aber das Problem ist, dass sie #$ mehrmals in ihnen wiederholt haben. Das Verhalten der Zeichensequenz ist wie folgt:Ruby globale Variablen in Strings ausgewertet/abgeschnitten

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

Aus irgendeinem Grund Ruby den $1 auswertet (was nil ist, weil keine regex vorher geschehen). Gibt es eine Möglichkeit, dies zu vermeiden? Vielen Dank.

+0

Es würde wahrscheinlich helfen, wenn Sie erklären, was Sie versuchen, Ergebnisse zu tun, dass in diesen Saiten. Derzeit sieht es wie ein "[XY-Problem] (https://meta.stackexchange.com/q/66377/153968)" aus, wo Sie versuchen, den String zu bereinigen, nachdem Sie etwas falsch gemacht haben. –

+0

Ja, ich glaube, ich habe diese Frage vorzeitig gestellt. Hat nicht alle verschiedenen Variablen dargestellt. Stellt sich heraus, das eigentliche Problem war in einem nicht verwandten Plugin, die einige sehr seltsame 'sed 'Substitution gemacht wurde. Unnötig zu sagen, Ruby ist nicht das Problem. Wir können diese Frage oder was auch immer schließen. – user701847

+0

Sie können die Frage löschen, wenn sie für die Community nicht von Wert ist. Wie es gefragt wird, wird es niemandem in der Zukunft helfen, weil es nicht genug Informationen gibt, um es an ein bestimmtes Problem zu binden. –

Antwort

1

Verwenden Apostroph statt Doppel Zitat:

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

Oder sonst, die Flucht der $ char:

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

Ich denke, ich hätte klarstellen sollen ... Letztendlich möchte ich diese Variable über die 'secrets.yml'-Datei von Rails laden (die sie über 'ENV [' THE_STRING_I_WANT ']' 'einliest) und dann über' Rails darauf zugreifen .application.secrets.the_string_i_want', also glaube ich nicht, dass ich diese Art von Kontrolle habe (um einfache Anführungszeichen zu verwenden). – user701847

+0

YAML interpoliert nicht so, also sollten Sie in Ordnung sein. – tadman

+2

@ user701847: YAML ist eine völlig andere Sprache. Es hat überhaupt nichts mit Ruby zu tun. Seine Syntax ist völlig anders, ihre Semantik ist völlig verschieden. Die Ruby-String-Interpolation existiert in YAML einfach nicht, da die Ruby-String-Interpolation eine Funktion von Ruby ist und YAML nichts mit Ruby zu tun hat. –