Techioz Blog

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 に切り替えると、この問題は解決しました。