2013-08-22 2 views
0

i18n 로켈 YAML 파일에 구문 오류가있는 경우 Psych::SyntaxError이 발생합니다. Rails가 부팅되는 동안 (예 : 프로덕션이 다시 시작될 때)이 예외가 발생하면 Rails가 충돌합니다.Psych :: SyntaxError에서 복구 할 수있는 방법이 있습니까?

  1. 이 예외를 포착 할 수있는 방법이 있습니까? 레일즈 충돌을 전혀 일으키지 않고 어떻게 든 복구 할 수 있습니까?
  2. 자동으로 커밋 또는 배포하기 전에 로캘 파일의 구문 오류를 검사 할 수있는 방법이 있습니까?

답변

0

이 오류로부터 복구 할 수있는 방법이 있는지 모르겠지만 주어진 YAML 파일이 구문 상 유효하다는 것을 확인하는 레이크 작업을 만들었습니다. 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 
관련 문제