0
當i18n語言環境YAML文件中存在語法錯誤時,引發Psych::SyntaxError
。在Rails啓動過程中遇到此異常(例如,重新啓動生產時)時,Rails會崩潰。有沒有什麼辦法可以從Psych :: SyntaxError中恢復?
- 有什麼辦法可以捕獲這個異常,並以某種方式從它恢復,而不會導致Rails崩潰?
- 有沒有什麼辦法在自動化方式提交或部署之前檢查語言環境文件的語法錯誤?
當i18n語言環境YAML文件中存在語法錯誤時,引發Psych::SyntaxError
。在Rails啓動過程中遇到此異常(例如,重新啓動生產時)時,Rails會崩潰。有沒有什麼辦法可以從Psych :: SyntaxError中恢復?
我不確定是否有辦法從這個錯誤中恢復,但我創建了一個rake任務,確保給定的YAML文件在語法上是有效的(通過預先提交的git鉤子運行改變YAML文件):
namespace :yaml do
desc "Check YAML syntax for errors."
task :check_syntax do
require 'YAML'
require 'colorize'
puts "Checking YAML files..."
filenames = (ENV['FILENAMES'].split(',') || []).push(ENV['FILENAME']).uniq.compact
fails = 0
filenames.each do |file|
print "#{file}... "
begin
YAML.load_file(file)
rescue Psych::SyntaxError => e
fails += 1
print "Failed! ".red
print "[#{e.message.sub(/\A.*: /, '')}]"
puts
next
end
print "Success!".green
puts
end
puts
exit fails > 0 ? 1 : 0
end
end