LoginSignup
24
25

More than 5 years have passed since last update.

PsychとSyckについて

Last updated at Posted at 2012-11-23

Syck とは

Ruby 1.8 から標準で付いてきたYamlライブラリ。Cでできている。

当時は世界一使われていた模様。あと、当時のRubyは文字列が文字コード情報を持たなかったので、日本語文字などを扱う場合色々苦労することもあったようだ。

Psych とは

libyamlのRubyラッパー。tenderlove氏が中心となって作っているもよう。

経緯

Ruby 1.9.2 から添付されるようになった(libyaml が利用できる場合一緒にビルドしてくれる)

Ruby 1.9.3 からPsychが標準になった。

Ruby 2.0.0 から、 Syckの方が削除される 予定。

最大の違い

マルチバイト文字列の扱いが異なる。

$ ruby -rsyck -ryaml -e "puts YAML.dump [1, {hoge: 'foo', fuga: 'つらぽよ'}]"
--- 
- 1
- :hoge: foo
  :fuga: "\xE3\x81\xA4\xE3\x82\x89\xE3\x81\xBD\xE3\x82\x88"
$ ruby -rpsych -ryaml -e "puts YAML.dump [1, {hoge: 'foo', fuga: 'つらぽよ'}]"
---
- 1
- :hoge: foo
  :fuga: つらぽよ

なので、Syckで作ったYamlファイルをPsychで読み込むと激しく化ける。つまりRuby1.8時代に作ってしまったYamlファイルは、変換しないとRuby1.9.3以降は扱いに困ることになり、そしてRuby2.0からは標準では扱えなくなる場合がある(多分gemは提供される)。

24
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
25