2016-03-29 88 views
1

我正在使用rails運行Docker鏡像(使用cron已安裝)。一切運行良好,除了我試圖添加一個cron作爲一個命令,但在添加到crontab時給我一個錯誤。命令在bash上工作,但不在cron上

下面的命令是:

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>' 

我使用的寶石時,這似乎是在做自己的工作正確。我究竟做錯了什麼?

回答

2

我對紅寶石不夠熟悉以給出正確的答案,但它聽起來像是在你的bash shell登錄中設置了某種環境變量,它在cron執行期間沒有被設置。

你可以設置你的cronjob像

PATH="/path/to/gems;$PATH" 
0,2 * * * * /bin/bash -l -c ' ..... ' 
上述環境變量
相關問題