如何将通过 cron 任务调用的 Rails Rake 任务输出移植到 Rails 生产服务器输出?

How to port Rails Rake task output called via cron task to Rails production server output?

我在 crontab 中有一系列的 cron 作业。 cron 作业通过以下格式调用 Rake 任务:

* * * * * /bin/sh -l -c 'cd /app && bundle exec rake foo:bar[baz] >> /var/log/foobar_sync.log 2>&1'

我以为我是通过 2>&1 将他们的输出(通过 puts)重定向到 STDOUT,但我想我处理问题的方式不正确。

如何将这些 Rake 任务的输出与 Rails 服务器日志本身一起重定向到 Rails 服务器日志输出,以便可以在 Rails 旁边看到它们的输出服务器输出?

我确定没有办法(除了黑客攻击 Linux,也许)将 Rake 任务的 STDOUT 集成到 Rails 服务器的 STDOUT 中,因为OS 架构。

我通过执行以下操作解决了我的问题:

  1. 在Rails控制器中调用Rake任务的目标方法。
  2. 通过Rails路由调用Rails控制器的方法。
  3. 通过 crontab 中的 curl 调用 Rails 路由。

现在方法的输出(在我的例子中,我为其创建了一个 ActiveJob 的同步任务)在 Rails 服务器的 STDOUT 中可见。