自从我将服务器升级到ruby 1.9.2后,从cron运行rake任务时,我得到了未初始化的常量YAML :: ENGINE。我在应用程序中遇到了同样的错误但放了......
require 'yaml'
YAML::ENGINE.yamler= 'syck'
boot.rb文件中的修复了它。如果我直接从我的Ubuntu服务器上的命令行运行任务它工作正常,服务器使用RVM。
然而,从cron运行任务似乎没有解决这个问题,我试过这个......
task :twitter, :needs => :environment do
require 'yaml'
YAML::ENGINE.yamler= 'syck'
@tweets = Property.updatetwitter
end
无济于事。
答案 0 :(得分:4)
你确定你在Ruby 1.9.2下运行吗?因为虽然YAML :: ENGINE存在于1.9.2中,但它不在1.8.7中。检查您的Ruby版本。
<强>更新强>
如何判断程序中正在使用哪个Ruby版程序:
puts `ruby -v`
Lame方式如何强制cron任务在某些Ruby版本下运行(如果服务器使用RVM):
rvm use 1.8.7; ...