3

自从我将服务器升级到 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

无济于事。

4

1 回答 1

4

你确定你在 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; ...
于 2011-08-15T09:09:39.627 回答