我正在使用 rbenv 来管理多个 ruby 版本。我将全局和 shell ruby 版本设置为 2.7.6。我正在使用rails 7.0.4。我的 Macos 版本是 Monterey 12.5.1。 rbenv global 也输出 2.7.6.
我正在使用 whenever 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 版本的默认 shell 是 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 为我解决了这个问题。
您能详细说明一下 RVM 是如何为您服务的吗?我面临着完全相同的问题,但切换到 RVM 不起作用