Rails cron whenever, bundle: command not found

后端 未结 13 1494
星月不相逢
星月不相逢 2020-12-04 17:57

I am trying to use whenever to execute a rake task onces a day. Im getting this error

/bin/bash: bundle: command not found
/home/app/.rvm/rubies/ruby-1.9.2-p         


        
相关标签:
13条回答
  • 2020-12-04 18:05

    For those using rbenv you can use the included shim /home/username/.rbenv/shims/bundle

    0 0 * * * /bin/bash -l -c 'cd /home/af/www/app/releases/20120216172204 && RAILS_ENV=production /home/af/.rbenv/shims/bundle exec rake daily:stats --silent >> /home/af/www/app/releases/20120216172204/log/cron.log 2>&1'
    
    0 讨论(0)
  • 2020-12-04 18:06

    In my case I just ran :

    rvm env --path -- ruby-version[@gemset-name]
    

    Referring to cron job setup doc

    Added new source line to the command for ruby path before bundle command in the crontab -e

    source /usr/local/rvm/environments/ruby-1.9.3-p392;
    

    Now the commands like as below:

    Before:

    0 4 * * * cd /home/current && bundle exec rake my_rake RAILS_ENV=production
    

    After:

    0 4 * * * cd /home/current && source /usr/local/rvm/environments/ruby-1.9.3-p392; bundle exec rake my_rake RAILS_ENV=production
    

    Cheers!!!

    0 讨论(0)
  • 2020-12-04 18:08

    After so many try outs the following seems to work

    Type the following from terminal

    1. Type crontab -e This opens the crontab for editing. You will see two lines as below:

      # cron clears out environment variables, but Rubber.root/script/rubber uses
      # "rvm do default" to run, so no longer any need to setup ruby env vars here,
      # all we need is PATH
      PATH=/<path to bundle>/bundle/ruby/1.9.1/bin:/usr/local/rvm/gems
      

      AND

      # Begin Whenever generated tasks for: /mnt/wamjoke-production/releases/20120912$
      PATH=/<path to bundle>/shared/bundle/ruby/1.9.1/bin:/usr/local/rvm/gems
      
    2. Comment out both lines beginning with PATH.

    Do the above step whenever you run "bundle exec whenever" command. And it works.

    No idea why PATH is misleading the environment.

    0 讨论(0)
  • 2020-12-04 18:12

    Forget about PATH settings in cron files. Setting the PATH does not work.

    Set the path to bundle explicitly in your config/schedule.rb

    set :bundle_command, "/usr/local/bin/bundle"

    0 讨论(0)
  • 2020-12-04 18:14

    You can also ensure your PATH ends up in the crontab, by putting the following at the top of the schedule.rb file:

    env :PATH, ENV['PATH']
    

    https://groups.google.com/forum/#!msg/whenever-gem/yRLt3f2jrfU/Exu3xfCo8DAJ

    If above solution don't work for you, try:

    env :GEM_PATH, ENV['GEM_PATH']
    
    0 讨论(0)
  • 2020-12-04 18:16

    [root@smbserver current]# crontab -e

    02 22 * * 1-5 /bin/bash -l -c  /shell/day.sh 
    30 14 * * 0 /bin/bash -l -c  /shell/week.sh 
    
    0 讨论(0)
提交回复
热议问题