Rails Cron 作业未针对配置的全局 ruby 版本 MacOS 运行

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

我正在使用 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

但是我仍然得到相同的输出。有人可以帮我吗?

ruby-on-rails ruby macos rbenv whenever
2个回答
0
投票

对于在 macos 上遇到类似问题的每个人,请尝试 github.com/rvm/rvm rvm。将 ruby 版本管理器切换到 rvm 为我解决了这个问题。


-1
投票

您能详细说明一下 RVM 是如何为您服务的吗?我面临着完全相同的问题,但切换到 RVM 不起作用

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