Rails中cron的gem不能在Mac中运行,也找不到日志

问题描述 投票:0回答:1

在我的config/schedule.rb中:

set :environment, "development"
set :output, "log/cron.log"

every 2.minutes do
  rake "reset_expired_pin:generate"
end

然后我运行whenever --update-crontab --set environment='development',然后运行crontab -l,我在该列表中看到了cron并且每隔2分钟刷新一次数据库后,它不会更新任何内容(我的rake命令未运行),我在此StackOverflow上对此问题进行了搜索,按照答案说的做了,但是没有用,所以我终于在这里寻求帮助,OSX不支持wheneever gem吗?并且不能在开发模式下运行?我也找不到该cron的日志文件,我以为它会保存在我的rails应用程序的根目录中,但是没有,我按照this intructions to get logfollow this instructions运行但是没有什么可以在我的Mac中找到此日志的]

crontab -l


# Begin Whenever generated tasks for: /Users/me/Documents/myapp/config/schedule.rb at: 2020-05-16 07:12:15 +0800
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c 
'export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd /Users/me/Documents/myapp && RAILS_ENV=development bundle exec rake reset_expired_pin:generate --silent >> log/cron.log 2>&1'

# End Whenever generated tasks for: /Users/me/Documents/myapp/config/schedule.rb at: 2020-05-16 07:12:15 +0800
ruby-on-rails ruby cron rubygems whenever
1个回答
0
投票

我是刚刚发现的,从昨天开始就发现了这个问题,现在才发现,要解决它,如果您使用的是RBENV,我们应该设置RBENV的环境并设置ruby的版本,它将在您的根文件应用程序栏中找到ruby-version我将它设置好

set :rbenv_root, '~/.rbenv'
set :rbenv_version, '2.7.1'
env 'RBENV_ROOT', rbenv_root
env 'RBENV_VERSION', rbenv_version
job_type :rake, 'export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd :path && :environment_variable=:environment bundle exec rake :task --silent :output'
set :environment, "development"

RBENV的环境必须在顶部然后在job_type:我们将其设置为获取rbenv的路径,因为它将由bash运行

更重要的是,Mac上的〜/ Libary必须是可执行的,因此我们可以按照以下步骤为cron进行设置:https://blog.bejarano.io/fixing-cron-jobs-in-mojave/

© www.soinside.com 2019 - 2024. All rights reserved.