自从我将服务器升级到ruby 1.9.2以来,我在从cron运行rake任务时获得未初始化的常量YAML::ENGINE。我有同样的错误与应用程序,但把…
require 'yaml'
YAML::ENGINE.yamler= 'syck'
在启动。Rb文件修复了它。如果我在我的Ubuntu服务器上直接从命令行运行任务,它工作得很好,服务器使用RVM。
然而,从cron运行任务似乎没有拾取这个修复,我试过这个…
task :twitter, :needs => :environment do
require 'yaml'
YAML::ENGINE.yamler= 'syck'
@tweets = Property.updatetwitter
end
你确定你在Ruby 1.9.2下运行它吗?因为虽然YAML::ENGINE在1.9.2中存在,但在1.8.7中没有。检查你的Ruby版本
如何从程序内部判断程序使用的是哪个Ruby版本:
puts `ruby -v`
如何强制cron任务在特定的Ruby版本下运行(如果服务器使用RVM):
rvm use 1.8.7; ...