命令适用于bash但不适用于cron

时间:2016-03-29 21:18:35

标签: ruby-on-rails bash docker cron whenever

我正在使用rails运行docker镜像(已安装cron)。一切都运行正常,除了我试图添加一个作为命令的cron作业,但在添加到crontab时给我一个错误。

以下命令是:

0,2 * * * * /bin/bash -l -c 'cd /app && bin/rails runner -e production '\''Statistic.create_statistic'\'' >> log/cron_log.log 2>> log/cron_error_log.log'

我让它每2分钟运行一次,为了清楚起见,我在此片段中省略了它。

当我只跑:

/bin/bash -l -c 'cd /app && bin/rails runner -e production '\''Statistic.create_statistic'\'' >> log/cron_log.log 2>> log/cron_error_log.log'

它有效

我得到的错误是:

   /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- bundler/setup (LoadError)
    from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in     `require'
    from /app/config/boot.rb:3:in `<top (required)>'
    from bin/rails:7:in `require_relative'
    from bin/rails:7:in `<main>'

我正在使用随时随地的宝石,这似乎正确地完成了它的工作。我做错了什么?

1 个答案:

答案 0 :(得分:2)

我对ruby不够熟悉,无法给出正确的答案,但听起来你的bash shell登录中设置的某种环境变量在cron执行期间没有设置。

您可以在cronjob上方设置环境变量,例如

PATH="/path/to/gems;$PATH"
0,2 * * * * /bin/bash -l -c ' ..... '