2014-05-20 67 views
1

我有一個ruby腳本,它會擦掉Twitter帳戶,輸出到CSV,加載/清除CSV,並通過MarkyMarkov運行它以生成@ebooks樣式的推文。由cron運行時,Ruby腳本會引發錯誤,但當用戶運行時不會引發錯誤

腳本運行完全在我的服務器上,當我在命令行手動運行它,但是當我通過cron運行它,它會生成以下錯誤:

usr/share/ruby/csv.rb:2058:in `=~': invalid byte sequence in US-ASCII (ArgumentError) 
from /usr/share/ruby/csv.rb:2058:in `init_separators' 
from /usr/share/ruby/csv.rb:1590:in `initialize' 
from /usr/share/ruby/csv.rb:1376:in `new' 
from /usr/share/ruby/csv.rb:1376:in `parse' 
from script.rb:57:in `<main>' 

不知道爲什麼結果會有所不同我運行它和cron。關於什麼是錯誤或如何去調試的任何建議?紅寶石菜鳥在這裏。

+3

聽起來像在cron中運行的ruby版本較舊(2.0版之前),其中默認編碼爲US-ASCII,用戶ruby較新,默認編碼爲UTF-8 –

回答

1

您可能正在使用rbenv或RVM來管理您的rubies,它從配置文件腳本加載Ruby引用,而cron不加載這些配置文件(例如,~/.bashrc)。

你應該能夠做到:

0 * * * * /bin/bash -l -c '/path/to/your/script.rb' 

這應該載入您的用戶環境和正常運行你的腳本。

此外,我不知道你是否熟悉它,它可能是你的情況矯枉過正,但Whenever gem提供了一個很好的DSL與cron作業。

相關問題