Estou tentando escrever um dicionário YAML para internacionalização de um projeto Rails. Estou um pouco confuso, como em alguns arquivos, vejo seqüências de caracteres entre aspas duplas e outras sem. Alguns pontos a considerar:
- exemplo 1 - todas as strings usam aspas duplas;
- exemplo 2 - nenhuma string (exceto as duas últimas) usa aspas;
- o livro de receitas do YAML diz: Colocar seqüências de caracteres entre aspas duplas permite usar escapes para representar caracteres ASCII e Unicode. Isso significa que eu preciso usar aspas duplas apenas quando quiser escapar de alguns caracteres? Se sim - por que eles usam aspas duplas em todos os lugares no primeiro exemplo - apenas por razões de unidade / estilo?
- as duas últimas linhas do exemplo 2 usam
!
- a tag não específica, enquanto as duas últimas linhas do primeiro exemplo não - e as duas funcionam.
Minha pergunta é: quais são as regras para o uso dos diferentes tipos de cotação no YAML?
Pode-se dizer que:
- em geral, você não precisa de aspas;
- se você quiser escapar de caracteres, use aspas duplas;
- use
!
com aspas simples, quando ...?!?
Respostas:
Após uma breve revisão do livro de receitas da YAML citada na pergunta e em alguns testes, aqui está minha interpretação:
10
mas você deseja que ela retorne uma String e não um Fixnum, escreva'10'
ou"10"
.:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
).'\n'
seria retornado como a string\n
."\n"
seria retornado como um caractere de avanço de linha.!ruby/sym
para retornar um símbolo Ruby.Parece-me que a melhor abordagem seria não usar aspas, a menos que você precise, e depois usar aspas simples, a menos que você queira especificamente processar códigos de escape.
Atualizar
"Sim" e "Não" devem ser colocados entre aspas (simples ou duplas) ou serão interpretados como valores TrueClass e FalseClass:
fonte
@
e `pode ser usado em qualquer lugar em uma sequência simples, exceto no início, porque são indicadores reservados .Eu tive essa preocupação ao trabalhar em um aplicativo Rails com o Docker .
Minha abordagem mais preferida é geralmente não usar aspas. Isso inclui não usar aspas para:
${RAILS_ENV}
postgres-log:/var/log/postgresql
No entanto, uso aspas duplas para
integer
valores que precisam ser convertidos em strings como:version: "3.8"
"8080:8080"
No entanto, para casos especiais como
booleans
,floats
,integers
, e outros casos, sempre usando aspas para os valores de entrada poderia ser interpretado comostrings
, por favor, não use aspas.Aqui está um
docker-compose.yml
arquivo de amostra para explicar esse conceito:Isso é tudo.
Eu espero que isso ajude
fonte