-
Notifications
You must be signed in to change notification settings - Fork 215
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
YAML(Psych)の動作互換性保持 #1775
YAML(Psych)の動作互換性保持 #1775
Conversation
@takahashim |
以下のような実装を想定しています。 module ReVIEW
class YAMLLoader
def self.safe_load_file(file)
if YAML.respond_to?(:safe_load_file)
YAML.safe_load_file(file, aliases: true, permitted_classes: [Date])
else
File.open(file, 'rt:bom|utf-8') do |f|
YAML.safe_load(f, filename: file, aliases: true, permitted_classes: [Date])
end
end
end
def initialize
end
# (略) |
ありがとうございます、Re:VIEWで独自クラス作ったほうがいいのかなと確かに思っていたところです。 Ruby 2.7未満向けだとsafe_loadでArgumentError例外(filename, permitted_classesがない)をさらに捕捉してやればいいのかな。(手元の業務TeX環境がDebian oldstable + Ruby 2.5ベースでした…) |
@takahashim |
む、要は文字列になってないと駄目だった、ということなんですかね>f.readだとダメでFile.readだとOK |
#1774 の対応です。
YAML.review_load_file
を定義し、safe_load_file
メソッドの存在有無で分岐して妥当なほうを使います。YAML.review_load_file
という名前が微妙そうだが、load_file
は使ってるのでどうしたものか。YAML.review_load_file
の定義場所がextensions/yaml.rb でいいかどうか。