使用 cron 和 ruby

Using cron and ruby

OS: Mac OS X 10.10.3; Ruby 版本:2.2.0;

我在使用启动 ruby 脚本的 cron 时遇到问题。 问题:cron 启动 ruby 脚本,但没有任何反应。该 cron 在其日志中说(脚本需要 mongo gem):

/Users/username/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- mongo (LoadError)
from /Users/username/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/username/project_path/main.rb:5:in `<main>'

Cron 设置:

SHELL = /bin/bash
MAILTO = username
* * * * * /Users/username/.rvm/rubies/default/bin/ruby    /Users/username/project_path/main.rb

所以 ruby 无法加载 gem,而脚本是由 cron 启动的,但是当我从 IDE 或终端启动它时,它可以正常工作

这是一个常见问题。基本上,您的 cron 工作所在的环境 运行 与您的 IDE / 终端的环境不同。

您需要研究 these lines 的解决方案。了解正在发生的事情将涉及更多地了解 cron、用户和其他相关主题。

好的。几个小时后,我终于解决了这个问题。解决方案非常简单。我不知道,为什么它只能那样工作。 所以,解决方案:

1.Create bash 具有以下内容的脚本:

#!/usr/bin/env bash

/Users/username/.rvm/gems/ruby-2.2.0/wrappers/ruby    /path/to/your/ruby_script.rb

2。配置 cron 文件:

SHELL = /bin/bash
* * * * * /path/to/created/at/first/step/bash_script.sh

就是这样! 它对我有用!