我正在使用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>'
我正在使用随时随地的宝石,这似乎正确地完成了它的工作。我做错了什么?
答案 0 :(得分:2)
我对ruby不够熟悉,无法给出正确的答案,但听起来你的bash shell登录中设置的某种环境变量在cron执行期间没有设置。
您可以在cronjob上方设置环境变量,例如
PATH="/path/to/gems;$PATH"
0,2 * * * * /bin/bash -l -c ' ..... '