- 直到 cron 的备忘录在任何时候都不能很好地工作 -

写作史

每当(github)

我介绍了上面的 gem 并尝试在本地的 macbook 上定期运行它,但它根本不起作用

・日志在哪里? ? ?
你遇到了什么错误? ? ?

结果,执行预期的操作花费了相当长的时间。
我写信是为了传播解决方案和原因,以便在短时间内解决相同的症状。

我的环境

PC:MacBook Air(M1,2020)
导轨(应用程序端):6.1.6.1
导轨(终端标准):5.2.8.1

不作为主题处理的事项

本文的主题是让cron在mac上使用whenever时正常工作
・如何在“schedule.rb”中描述
・记述的意思
我将解释主题。

它没有解释如何使用

结论

日程安排.rb
set :output, "#{Rails.root}/log/cron.log"
#railsアプリフォルダ内の./log/cron.logにログが出力されるようにする記述

require File.expand_path(File.dirname(__FILE__) + '/environment')
set :path_env, ENV['PATH']
rails_env = ENV['RAILS_ENV'] || :development
set :environment, rails_env
#railsアプリ内の実行環境を変数に代入している

job_type :runner, "cd :path && PATH=':path_env' bin/rails runner -e :environment ':task' :output"
#railsアプリ上の実行環境と同条件になるよう規定している
#:outputで事前にsetしたパスにログの出力先を設定

暂时在schedule.rb中加上上面的描述就可以了

补充

如果添加以上不起作用
至少,你应该可以得到日志,所以如果你看日志中的错误内容,你应该可以处理它!

原因

mac的cron日志在哪里?

最近的 mac_book cron 似乎设置为不输出日志,除非指定日志输出目标。 . .

和,

日程安排.rb
every '*/1 * * * *' do
  runner "Movie.publish_check"
end

如果你把它放在任何时候 ==> cron 而不是只写
表示没有指定日志输出目的地,日志不会输出到任何地方。 . .

终端(cron)和应用程序的执行环境不同

错误日志
From: motoya@murakamimotoyas-MacBook-Air.local (Cron Daemon)
To: motoya@murakamimotoyas-MacBook-Air.local
Subject: Cron <motoya@murakamimotoyas-MacBook-Air> /bin/zsh -l -c 'cd /Users/motoya/study/whenevertest && bundle exec bin/rails runner -e development '\''Movie.publish_check'\'''
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=motoya>
X-Cron-Env: <USER=motoya>
Message-Id: <20220806024702.83064923436@murakamimotoyas-MacBook-Air.local>
Date: Sat,  6 Aug 2022 11:47:01 +0900 (JST)

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': Could not find 'bundler' (2.2.33) required by your /Users/motoya/study/whenevertest/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.2.33`
	from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
	from /usr/bin/bundle:23:in `<main>'

就我而言,上面的日志留在 cron.log
正如我之前介绍的,在我的环境中

标准版导轨:5.2.8.1
App rails 版本在任何时候运行:6.1.6.1

之间有区别
如果你没有在 cron 端设置任何东西
因为它使用rails的终端标准版本运行
发生了错误。 . .

参考

https://qiita.com/uot/questions/a283becff015139ac760
参考上面的答案,我能够解决问题!

在最后

以此为契机,别忘了指定 cron 日志输出目的地!
如有错误请随时告诉我!!!


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308623565.html

相关文章: