Ruby脚本在由cron运行时抛出错误,但在用户运行时则不会抛出错误

时间:2014-05-20 17:55:23

标签: ruby csv twitter cron

我有一个ruby脚本,可以抓取Twitter帐户,输出到CSV,加载/清理CSV,然后通过MarkyMarkov运行它来生成@ebooks风格的推文。

当我从命令行手动运行脚本时,脚本在我的服务器上运行完美,但是当我通过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之间的结果会有所不同。有关错误或如何进行调试的任何建议?红宝石新秀在这里。

1 个答案:

答案 0 :(得分:1)

您可能正在使用rbenv或RVM来管理您的rubies,它从配置文件脚本加载Ruby引用,而cron不会加载此类配置文件(例如,~/.bashrc)。

你应该可以这样做:

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

这应该加载您的用户环境并正确运行您的脚本。

另外,我不知道你是否熟悉它,对你的情况可能有点过分,但是Whenever gem提供了一个很好的DSL来处理cron作业。

相关问题