Saya mencoba menulis kamus YAML untuk internasionalisasi proyek Rails. Saya agak bingung, karena dalam beberapa file saya melihat string dalam tanda kutip ganda dan beberapa tanpa. Beberapa hal yang perlu dipertimbangkan:
- contoh 1 - semua string menggunakan tanda kutip ganda;
- contoh 2 - tanpa string (kecuali dua yang terakhir) menggunakan tanda kutip;
- yang masak YAML mengatakan: Melampirkan string dalam tanda kutip ganda memungkinkan Anda untuk menggunakan escapings untuk mewakili ASCII dan Unicode karakter. Apakah ini berarti saya perlu menggunakan tanda kutip ganda hanya ketika saya ingin melarikan diri beberapa karakter? Jika ya - mengapa mereka menggunakan tanda kutip ganda di mana-mana dalam contoh pertama - hanya demi alasan persatuan / gaya?
- dua baris terakhir dari contoh 2 menggunakan
!
- tag non-spesifik, sedangkan dua baris terakhir dari contoh pertama tidak - dan keduanya bekerja.
Pertanyaan saya adalah: apa aturan untuk menggunakan berbagai jenis kutipan dalam YAML?
Mungkinkah dikatakan bahwa:
- secara umum, Anda tidak perlu penawaran;
- jika Anda ingin melarikan diri karakter menggunakan tanda kutip ganda;
- gunakan
!
dengan tanda kutip tunggal, kapan ...?!?
Jawaban:
Setelah ulasan singkat tentang buku masak YAML yang dikutip dalam pertanyaan dan beberapa pengujian, inilah interpretasi saya:
10
Anda tetapi Anda ingin itu mengembalikan String dan bukan Fixnum, tulis'10'
atau"10"
.:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
).'\n'
akan dikembalikan sebagai string\n
."\n"
akan dikembalikan sebagai karakter umpan baris.!ruby/sym
untuk mengembalikan simbol Ruby.Menurut saya, pendekatan terbaik adalah tidak menggunakan tanda kutip kecuali Anda harus, dan kemudian menggunakan tanda kutip tunggal kecuali jika Anda secara khusus ingin memproses kode pelarian.
Memperbarui
"Ya" dan "Tidak" harus dilampirkan dalam tanda kutip (tunggal atau ganda) atau kalau tidak mereka akan ditafsirkan sebagai nilai TrueClass dan FalseClass:
sumber
@
dan `dapat digunakan di mana saja dalam string biasa kecuali di awal, karena mereka adalah indikator yang dicadangkan .Saya memiliki masalah ini ketika bekerja pada aplikasi Rails dengan Docker .
Pendekatan saya yang paling disukai adalah umumnya tidak menggunakan tanda kutip. Ini termasuk tidak menggunakan kutipan untuk:
${RAILS_ENV}
postgres-log:/var/log/postgresql
Namun, saya menggunakan tanda kutip ganda untuk
integer
nilai yang perlu dikonversi ke string seperti:version: "3.8"
"8080:8080"
Namun, untuk kasus-kasus khusus seperti
booleans
,floats
,integers
, dan kasus-kasus lainnya, di mana menggunakan tanda kutip ganda untuk nilai masuk bisa diartikan sebagaistrings
, jangan tidak menggunakan tanda kutip ganda.Berikut ini contoh
docker-compose.yml
file untuk menjelaskan konsep ini:Itu saja.
saya harap ini membantu
sumber