Rails Cron ジョブが構成されたグローバル Ruby バージョン MacOS で実行されない
概要
私は rbenv を使用して複数の Ruby バージョンを管理しています。グローバルおよびシェル Ruby のバージョンは 2.7.6 に設定しています。 Rails7.0.4を使用しています。私のMacOSのバージョンはMonterey 12.5.1です。 rbenv global も 2.7.6 を出力します。
私は、everywhere gem を使用して、単純な cron ジョブを作成しています。私のschedule.rbは以下のようになります
set :output, "./log/cron_log.log"
every 1.minute do
runner "puts 'Hello, world'"
end
しかし、私のcrontabログファイルではこれを取得しています
/Library/Ruby/Site/2.6.0/rubygems/bundler_version_finder.rb:54:in `pwd': Operation not permitted - getcwd (Errno::EPERM)
from /Library/Ruby/Site/2.6.0/rubygems/bundler_version_finder.rb:54:in `lockfile_contents'
from /Library/Ruby/Site/2.6.0/rubygems/bundler_version_finder.rb:41:in `lockfile_version'
from /Library/Ruby/Site/2.6.0/rubygems/bundler_version_finder.rb:10:in `bundler_version'
from /Library/Ruby/Site/2.6.0/rubygems/bundler_version_finder.rb:17:in `block in prioritize!'
from /Library/Ruby/Site/2.6.0/rubygems/bundler_version_finder.rb:17:in `find_index'
from /Library/Ruby/Site/2.6.0/rubygems/bundler_version_finder.rb:17:in `prioritize!'
from /Library/Ruby/Site/2.6.0/rubygems/dependency.rb:282:in `matching_specs'
from /Library/Ruby/Site/2.6.0/rubygems.rb:257:in `find_spec_for_exe'
from /Library/Ruby/Site/2.6.0/rubygems.rb:284:in `activate_bin_path'
from /usr/bin/bundle:23:in `<main>'
私の MacOS バージョンのデフォルトのシェルは zsh です。しかし、どうやら cron は bash -l -c を使用して実行されているようです。そこで、rbenvのgithubページの指示に従い、以下のように.bash_profileをセットアップしました
#.bash_profile
eval "$(rbenv init - bash)"
#.bashrc
source .bash_profile
しかし、私はまだ同じ出力を取得しています。誰かがこれについて私を助けてくれますか?
解決策
MacOS で同様の問題に直面している人は、github.com/rvm/rvm RVM を試してみてください。 Ruby のバージョン マネージャーを RVM に切り替えると、この問題は解決しました。