whenever PATH in crontab file for rails 3 ubuntu

半腔热情 提交于 2019-12-07 14:10:24

问题


I am using whenever gem with rails 3. On my production server (ubuntu) , the runner task does not run. I tried setting the :set job_template to get -l -i as mentioned in this github ticket. However that does not solve the problem.

The problem on this particular production ubuntu is that the ruby path is not there in echo $PATH:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Whereas the ruby path is /var/rails/myapp/shared/bundle/ruby/1.8/bin

So if I manually edit the crontab file and add PATH=/var/rails/myapp/shared/bundle/ruby/1.8/bin: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games to the crontab file, the runner task is executed correctly.

However every time I do a deploy, I need to manually edit the crontab file to add the PATH statement to it.

Is there any way in whenever to add this PATH line in crontab file, so that there would not be any need to do this manually after every deploy?

Thanks


回答1:


I am not using RVM and adding the below code in the file config/schedule.rb(place where u write whenever gem related code) worked for me.

env :PATH, ENV['PATH']



回答2:


I think if you add /var/rails/myapp/shared/bundle/ruby/1.8/bin to the PATH of whatever user cron is running under on the server, it should be picked up. Or, you could add it in the whenever schedule.rb:

env :PATH, "$PATH:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

That should do the trick, but I haven't tested it.




回答3:


The answer from idlefingers looks mostly correct, but based on the comment from ami, I would change that line to the following:

env :PATH, "#{ENV["PATH"]}:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

Notice the string interpolation for the environment key for PATH. I have not tested this, but based on ami's comment, this should fully expand the path string in the crontab file as expected.




回答4:


Add the PATH statement to the top of the crontab file, before the line that starts

# BEGIN Whenever generated tasks for:

and you shouldn't have to manually edit your crontab file every time



来源:https://stackoverflow.com/questions/5698028/whenever-path-in-crontab-file-for-rails-3-ubuntu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!