Gem 关于 psych 报错的一个解决过程

hastings · September 08, 2015 · Last by douxiance replied at September 09, 2015 · 2081 hits
/home/wumo/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/psych.rb:370:in `parse': (<unknown>): could not find expected ':' while scanning a simple key at line 29 column 1 (Psych::SyntaxError)
    from /home/wumo/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/psych.rb:370:in `parse_stream'
    from /home/wumo/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/psych.rb:318:in `parse'
    from /home/wumo/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/psych.rb:245:in `load'

这是执行项目的一个任务时报的错

直接定位 psych.rb 的 370 行

def self.parse_stream yaml, filename = nil, &block
  if block_given?
    parser = Psych::Parser.new(Handlers::DocumentStream.new(&block))
    parser.parse yaml, filename
  else
    parser = self.parser
    parser.parse yaml, filename
    parser.handler.root
  end
end

在这个方法里添加了两行代码打印 yaml 和 filename 两个参数

  def self.parse_stream yaml, filename = nil, &block
p "yaml: #{yaml}"
p "filename:#{filename}"
    if block_given?

查看输出结果后发现是为 wumomq(我们自己写的一个 gem) 写的配置文件有问题。 最后发现出问题的配置代码是我从同事 qq 发送过来的记录中复制的代码有问题 (该问题无法通过 Sublime 看出),在 vim 中看到出问题的配置代码无法高亮让我们知道了问题的所在。重新手动重写一次配置后,问题解决。

估计是编码不同吧! 我时常碰到不同编辑器拷贝引发的各种奇奇怪怪的问题,最终结果都是因为编码差异。 很多靠肉眼是看不出来的。

You need to Sign in before reply, if you don't have an account, please Sign up first.