2011-08-12 16 views
3

サーバをruby 1.9.2にアップグレードして以来、私はrakeタスクをcronから実行すると、初期化されていないYAML :: ENGINEを取得しています。私はアプリで同じエラーがあったが、入れて...cron - 初期化されていない定数からのレイクタスク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

Ruby 1.9.2で実行していますか? YAML :: ENGINEは1.9.2に存在しますが、1.8.7にはありません。 Rubyのバージョンを確認してください。

UPDATE

Rubyのバージョンのプログラムがプログラム内から使用している伝える方法:サーバーは、RVMを使用する場合、特定のRubyのバージョン(下で実行するようにcronタスクを強制する方法

puts `ruby -v` 

ラメの道を):

rvm use 1.8.7; ... 
+0

私はそれがcronから直接実行されているとは言えません。私はcronジョブを1.9.2に強制する方法を知っていますか? – creativetechnologist

+0

私は答えを更新しましたが、私はそれに多くの経験を持っていないので、提案された解決策が不自由な方、良い方法が必要です。 cronは異なるアカウントで動作する可能性もあるので、RVMについてはわからず、システムルビー(/ usr/bin/ruby​​など)を使用します。その場合は、サーバーにルビーを再インストールしてください。 –

+0

この[解決策]を試しています(http://stackoverflow.com/questions/2398722/script-executes-successfully-in-commandline-but-not-as-a-cronjob/2399118#2399118)前方に大きな感謝@LukasStejskal – creativetechnologist

関連する問題