升级Rails 7后whenever gem致控制台方法自动补全崩溃求解决
解决Rails7控制台因whenever 1.0.0崩溃的问题
这个问题是whenever 1.0.0的JobList#respond_to?方法存在bug:当控制台自动补全触发该方法时,@set_variables还未初始化,导致调用has_key?时抛出NilClass错误。以下是几种修复方案:
升级whenever到最新版本
后续版本已经修复了这个初始化问题,直接更新Gemfile中的whenever版本:gem 'whenever', '>= 1.0.1'然后执行
bundle update whenever,重启控制台即可。手动添加补丁(临时修复)
如果暂时无法升级,可以在项目的config/initializers目录下创建whenever_patch.rb文件,内容如下:require 'whenever/job_list' module Whenever class JobList def respond_to?(name, include_private = false) @set_variables ||= {} @set_variables.has_key?(name) || super end end end重启控制台后,
@set_variables会被初始化为空哈希,避免nil调用错误。临时禁用控制台自动补全
若只是临时应急,启动控制台时关闭自动补全:rails console --no-autocomplete但这会失去自动补全功能,仅作为临时方案。
内容的提问来源于stack exchange,提问作者Ken Ratanachai S.
相关产品推荐
相关产品推荐

