Rake tasks from cron - неинициализированная константа YAML::ENGINE

Я получаю неинициализированную константу YAML::ENGINE при запуске задачи rake из cron, так как я обновил свой сервер до ruby ​​1.9.2. У меня была такая же ошибка с приложением, но я поставил ...

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

но безрезультатно.


person creativetechnologist    schedule 12.08.2011    source источник


Ответы (1)


Вы уверены, что используете 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; ...
person Lukas Stejskal    schedule 15.08.2011
comment
Я не могу сказать, так как он запускается непосредственно из cron, вы знаете, как я могу принудительно запустить задание cron в 1.9.2? - person creativetechnologist; 15.08.2011
comment
Я обновил ответ, но у меня нет большого опыта в этом, поэтому предлагаемое решение хромает, должен быть лучший способ. Также вполне возможно, что cron работает под другой учетной записью, поэтому он не знает о RVM и использует системный ruby ​​(/usr/bin/ruby или что-то в этом роде) - в этом случае переустановите ruby ​​на вашем сервере. - person Lukas Stejskal; 15.08.2011
comment
Пробую это решение что могло бы стать шагом вперед, большое спасибо @LukasStejskal - person creativetechnologist; 15.08.2011