Ruby: Запишите оставленную строку в YAML

TelemetryInitializer - это правильный способ добавления любого дополнительного пользовательского свойства в любой тип телеметрии - трассировки / зависимости / запросы и т. Д. https://docs.microsoft.com/en-us/azure / azure-monitor / app / api-filtering-sampling # add-properties-itelemetryinitializer

Также, если вы используете конфигурацию по умолчанию, зависимости / трассировки, сделанные в контексте запроса, будут автоматически коррелироваться вместе для вас с тем же «идентификатором_операции».

7
задан neezer 3 April 2009 в 21:34
поделиться

1 ответ

Если Вы хотите сохранить завершенную строку в YAML, выйдите из него использование #inspect перед преобразованием его в YAML:

irb> require 'yaml'
=> true
irb> str = %{This string's a little complicated, but it "does the job" (man, I hate scare quotes)}
=> "This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)"
irb> puts str
This string's a little complicated, but it "does the job" (man, I hate scare quotes)
=> nil
irb> puts str.inspect
"This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)"
=> nil
irb> puts str.to_yaml
--- This string's a little complicated, but it "does the job" (man, I hate scare quotes)
=> nil
irb> puts str.inspect.to_yaml
--- "\"This string's a little complicated, but it \\\"does the job\\\" (man, I hate scare quotes)\""
=> nil

YAML не заключает строки в кавычки, если он не имеет к. Это заключает строки в кавычки, если бы они включают вещи, которые это пропустило бы, если бы это сохранило его, закрыл кавычки - как окружение символов кавычки или запаздывание или продвижение пробелов:

irb> puts (str + " ").to_yaml
--- "This string's a little complicated, but it \"does the job\" (man, I hate scare quotes) "
=> nil
irb> puts %{"#{str}"}.to_yaml
--- "\"This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)\""
=> nil
irb> puts (" " + str).to_yaml
--- " This string's a little complicated, but it \"does the job\" (man, I hate scare quotes)"
=> nil

Однако как потребитель YAML, заключается ли строка в кавычки, не должен иметь значения для Вас. Вы никогда не должны анализировать текст YAML сами - отпуск это к библиотекам. Если Вам нужна строка, которая будет заключена в кавычки в файле YAML, который плохо пахнет мне.

Не имеет значения, имеют ли Ваши строки '& в них, YAML сохранит строку:

irb> test = "I'm a b&d string"
=> "I'm a b&d string"
irb> YAML::load(YAML::dump(test))
=> "I'm a b&d string"
irb> YAML::load(YAML::dump(test)) == test
=> true
18
ответ дан 6 December 2019 в 09:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: