加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – ruby??on rails,rake,crontab和encoding

发布时间:2020-12-17 02:58:48 所属栏目:百科 来源:网络整理
导读:我有一个rails rake任务,运行得很好.我希望crontab定期运行此任务,因此我将其添加到crontab,如下所示: 0,30,0 * * * * cd /var/www/html/metajorn RAILS_ENV=production /usr/local/bin/rake myraketask --trace /var/www/html/metajorn/log/cron_log.log 2
我有一个rails rake任务,运行得很好.我希望crontab定期运行此任务,因此我将其添加到crontab,如下所示:

0,30,0 * * * * cd /var/www/html/metajorn && RAILS_ENV=production /usr/local/bin/rake myraketask --trace   >> /var/www/html/metajorn/log/cron_log.log 2>&1

在cron_log.log中我看到以下错误:

rake aborted!
invalid byte sequence in US-ASCII
/var/www/html/metajorn/config/boot.rb:98:in `parse_gem_version'
/var/www/html/metajorn/config/boot.rb:80:in `gem_version'
/var/www/html/metajorn/config/boot.rb:59:in `load_rails_gem'
/var/www/html/metajorn/config/boot.rb:54:in `load_initializer'
/var/www/html/metajorn/config/boot.rb:38:in `run'
/var/www/html/metajorn/config/boot.rb:11:in `boot!'
/var/www/html/metajorn/config/boot.rb:110:in `<top (required)>'
/var/www/html/metajorn/Rakefile:4:in `require'
/var/www/html/metajorn/Rakefile:4:in `<top (required)>'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:in `load'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:in        `raw_load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2017:in `block in load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2016:in `load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2000:in `block in run'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/usr/local/bin/rake:31:in `<main>'

值得注意的是,如果我手动运行它,任务工作正常.

谢谢,

中号

解决方法

感谢Carl Smotricz的暗示!

我终于解决了这个问题:
cron使用可能与用户环境变量不同的环境变量…我的crond服务使用us-ascii编码,而我的rake任务使用utf-8.

要解决这个问题,我只需要通过在我的crond文件中添加以下行来更改crond的编码(在我的centos5中,它位于:/ var / spool / cron / root)

SHELL=/bin/bash
LANG=en_US.UTF-8
LANGUAGE=en
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"

比,重启crond:service crond restart

M.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读