Ruby On Rails libyaml

我在Linux上运行rails版本3.2.8和ruby版本1.9.3-p286

user1@company.com [~/rails_apps/myapp]# rails -v Rails 3.2.8 user1@company.com [~/rails_apps/myapp]# ruby -v ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] user1@company.com [~/rails_apps/myapp]# 

我可以生成迁移,但我无法运行它。 我一直收到以下错误消息

 user1@company.com [~/rails_apps/myapp]# rake db:migrate /home3/user1/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `': It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. /home3/user1/ruby/gems/gems/json-1.7.5/lib/json/common.rb:67: [BUG] unknown type 0x22 (0xc given) ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]  

那么很多调试信息

 [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html Aborted user1@company.com [~/rails_apps/myapp]# 

我安装了libyaml

 rvm pkg install libyaml 

然后重新安装ruby

 rvm reinstall ruby-1.9.3-p286 

但这没有帮助。

任何其他想法,为什么我一直收到此错误消息?

谢谢。

您需要在系统上安装libtool软件包,否则libyaml将无法编译。 对于Ubuntu尝试:

sudo apt-get install libtool
rvm pkg install libyaml
rvm pkg install libyaml-dev
rvm reinstall 1.9.3

您也可以使用您的发行版软件包管理器来安装库而不是rvm。 对于Ubuntu:

sudo apt-get install libyaml libyaml-dev

这里有两个不同的问题,Yaml产生的警告,然后是JSON gem的错误。

警告是:

 /home3/user1/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `': It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. 

这不一定是个问题,您的Ruby安装将回退到使用旧的Syck Yaml库。 Syck已从Ruby 2中删除,因此您最终需要解决它,但目前这不是主要问题。

在Yaml警告之后,您立即得到:

 /home3/user1/ruby/gems/gems/json-1.7.5/lib/json/common.rb:67: [BUG] unknown type 0x22 (0xc given) ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] 

这是来自JSON gem的错误。 JSON gem使用本机扩展,我认为这个错误来自使用与早期版本的Ruby一起安装的gem以及更高版本。 尝试重新安装你的gem(特别是json )来解决这个问题。