2017-04-10 5 views
0

私はRubyに読み込む必要のある資格情報を持っていますが、問題は#$が複数回繰り返されていることです。文字列のRubyグローバル変数が評価/切り捨てされる

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

何らかの理由で、Rubyは(何の正規表現は前に起こっていないのでnilである)$1を評価:のふるまいは、以下のような文字列があると述べました。これを避ける方法はありますか?ありがとう。

+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文字列補間はRubyの機能であり、YAMLはRubyとは関係がないため、Rubyの文字列補間は単にYAMLには存在しません。 –

関連する問題