【问题标题】:What's the simplest way to run a cron job on a standalone Ruby gem?在独立的 Ruby gem 上运行 cron 作业的最简单方法是什么?
【发布时间】:2012-09-07 21:22:15
【问题描述】:

我有一个 gem,它打包了一个 .rb 文件,其中包含我的类和相关方法以及相应的 .bin 文件。

在本地,我可以像这样运行一切正常:

command_to_bin input_file output_file

我不想每天手动运行它,所以我正在考虑在服务器上使用 cron,但我有点不确定如何继续。

我是否将所有内容都放入一个目录(.gem 文件、输入文件、输出文件),然后将上述 cron 命令指向该目录?

我查看了this 并有点了解发生了什么。我想最让我困惑的是,当我查看所有网络托管服务提供商时,他们都提到了域和应用程序,但我只想知道如何让独立脚本自行运行,而不会将其构建到网络应用程序中或关联有一个域。

【问题讨论】:

    标签: ruby cron gem


    【解决方案1】:

    查看whenever gem。抽象出 cron 的所有讨厌的东西是一个绝妙的宝石。只需包含您上面编写的命令就可以了。

    【讨论】:

    • 嗯...我无法让它工作。我已经创建了一个新的 schedule.rb 文件,并要求使用when gem 以及我的命令every 1.day, :at => '12am' do command "command_to_bin -f input_file -o #{Time.now}_output_file" end,然后尝试通过运行ruby schedule.rb 在本地运行该文件,但我收到一条错误消息,提示“every”未定义。如何在我的脚本中包含任何时间?
    • 你完成gem install whenever并在你的项目目录中运行wheneverize .了吗?
    • 我只是在我的脚本文件中包含require whenever
    • 您需要gem install whenever才能开始使用它
    • OK 所以只要 gem 显式查找 congfig/schedule.rb 文件层次结构,无论您在哪里调用它。在本地,一切似乎都正常,但提到我的实际问题,我不确定如何运行服务器端脚本,而不必将整个 Rails 应用程序部署到域中。
    【解决方案2】:

    您不需要安装 Rails。在wheneverize . 目录并在 schedule.rb 文件中设置计划后,您需要运行 whenever --update-crontab 以将所有内容设置到系统。否则,您的 cron 作业永远不会转换为 Unix Cron

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多