我有一个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之间的结果会有所不同。有关错误或如何进行调试的任何建议?红宝石新秀在这里。
答案 0 :(得分:1)
您可能正在使用rbenv或RVM来管理您的rubies,它从配置文件脚本加载Ruby引用,而cron不会加载此类配置文件(例如,~/.bashrc
)。
你应该可以这样做:
0 * * * * /bin/bash -l -c '/path/to/your/script.rb'
这应该加载您的用户环境并正确运行您的脚本。
另外,我不知道你是否熟悉它,对你的情况可能有点过分,但是Whenever gem提供了一个很好的DSL来处理cron作业。