0

当 i18n 语言环境 YAML 文件中存在语法错误时,Psych::SyntaxError将引发。如果在 Rails 启动期间遇到此异常(例如,重新启动生产时),Rails 会崩溃。

  1. 有什么方法可以捕获这个异常并以某种方式从它中恢复,而不会让 Rails 完全崩溃?
  2. 有没有办法在自动提交或部署之前检查语言环境文件的语法错误?
4

1 回答 1

0

我不确定是否有办法从这个错误中恢复,但我创建了一个 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
于 2013-08-22T21:20:50.280 回答