【问题标题】:Ruby script that fails as a cron job作为 cron 作业失败的 Ruby 脚本
【发布时间】:2018-04-18 02:44:47
【问题描述】:

我有一个 ruby​​ 脚本,我想将它作为 cron 作业运行。当我在 linux 机器上通过命令提示符运行时,它运行得非常好。但是当我使用 cron 作业运行相同的脚本时,它会失败。

字符串编码出现以下错误。不知道为什么它只在我作为 cron 作业运行时才会抱怨。我还在 crontab 中将我的 shell 设置为 /bin/bash,这与我的命令提示符相同。

我得到的错误如下。这发生在 split 命令上。

split.encode('utf-8).split(some_str)

以下是唯一的 ruby​​ 特定错误,其余是应用程序堆栈,所以我省略了它。(根据用户请求添加)

在分析日志中的encode': "\xE2" on US-ASCII (Encoding::InvalidByteSequenceError) from ruby_file.rb:172:inblock(2 级)' 来自 ruby​​_file.rb:170:in each' from ruby_file.rb:170:inblock in analyze_logs' 来自 ruby​​_file.rb:169:in open' from ruby_file.rb:169:inanalyze_logs' 来自 ruby​​_file.rb:416:in run' from ruby_file.rb:479:in'

【问题讨论】:

    标签: ruby linux bash shell cron


    【解决方案1】:

    使用whenever gem,它会处理所有与 cronjobs 相关的问题

    every 6.minutes do
      rake "your_app:rake_task_name"
    end
    

    【讨论】:

    • 在我回答之前,您需要提供有关您的错误的更多信息以及一些代码。
    • 我已经添加了错误堆栈,但它非常特定于应用程序。也没有任何代码。它是崩溃的拆分命令,我已经在问题中提到了:)。谢谢
    • 你能尝试将默认编码设置为 UTF-8 吗?Encoding.default_external = "utf-8"
    • 在哪里设置默认编码?在壳里?
    • 在你的 ruby​​ 脚本文件中。
    【解决方案2】:

    我认为在 cron 下运行时的语言环境不同,会导致字符编码问题。

    见:http://chrisneedham.com/posts/2014/06/21/ruby-cron-utf8.html

    【讨论】:

      猜你喜欢
      • 2018-01-13
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2019-06-04
      • 2021-11-16
      • 1970-01-01
      相关资源
      最近更新 更多