You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7+Whenever执行cron时提示找不到bundler 2.4.3求助

Rails 7中使用whenever gem执行cron任务的bundler版本问题

我是Rails新手,首次尝试用whenever gem在Rails 7中运行cron任务,但cron.log中出现bundler版本找不到的错误:

/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.4.3) required by your /Users/myname/mysite/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.4.3`
    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>'

我的sample.rake文件内容:

namespace :sample do
  desc "saying hi to cron"
  task test: :developement do
    puts 'hi cron'
  end
end

schedule.rb文件内容:

set :output, "log/cron.log"

every 1.minute do
  rake 'sample:test'
end

本地已确认安装bundler 2.4.3:

gem list | grep bundle
# 输出:bundler (2.4.3)
bundler -v
# 输出:Bundler version 2.4.3

已执行bundle update --bundler,也更新了Homebrew,但问题未解决。


解决步骤

1. 修正rake任务的拼写错误

sample.rake中的:developement是拼写错误,正确应为:development,修改后:

namespace :sample do
  desc "saying hi to cron"
  task test: :development do
    puts 'hi cron'
  end
end

2. 让cron使用正确的Ruby环境

cron默认调用系统Ruby(这里是2.6版本),但你本地可能用rbenv/rvm管理其他Ruby版本,导致系统Ruby找不到你安装的bundler。在schedule.rb开头添加环境配置:

  • 如果用rbenv:
env :PATH, ENV['PATH']
set :rbenv_root, '/Users/myname/.rbenv' # 替换成你的rbenv根目录
set :rbenv_ruby, '3.2.2' # 替换成你实际使用的Ruby版本
  • 如果用rvm:
env :PATH, ENV['PATH']
set :rvm_ruby_string, '3.2.2' # 替换成你的Ruby版本

3. 直接指定bundler绝对路径执行任务

先通过which bundle获取bundler的绝对路径:

which bundle
# 示例输出:/Users/myname/.rbenv/shims/bundle

修改schedule.rb中的任务调用方式:

every 1.minute do
  command "/Users/myname/.rbenv/shims/bundle exec rake sample:test"
end

4. 重新生成cron配置

修改完成后,更新crontab:

bundle exec whenever --update-crontab

内容的提问来源于stack exchange,提问作者Russ11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:16:22