Rails4.2运行rake任务报Rack::LiveReload相关NameError错误如何解决
Rails 4.2 运行rake任务报Rack::LiveReload未初始化错误排查解决
错误原因
该错误是由于Rack::LiveReload是仅用于开发环境的前端自动刷新依赖,rake任务运行时无法加载到该gem对应的类导致。
排查步骤
- 检查Gemfile中
rack-livereload的声明位置,确认其是否仅放在:development分组中,未在rake任务运行环境对应的分组中声明 - 检查运行rake任务时指定的Rails环境,若手动指定了
RAILS_ENV=production、RAILS_ENV=test等非开发环境,会无法加载仅在开发环境安装的gem - 检查
config/environments/development.rb中的中间件配置,是否存在显式添加Rack::LiveReload中间件、但gem未正确安装的情况
解决方案
- 若仅在开发环境运行rake任务,直接执行
bundle install确保开发环境所有gem正确安装即可正常运行 - 若需要在非开发环境运行rake任务且不需要LiveReload功能,修改开发环境配置中的中间件声明,添加存在性判断:
if defined?(Rack::LiveReload) config.middleware.use Rack::LiveReload end
- 若需要在非开发环境也使用该功能,将Gemfile中
rack-livereload的声明从:development分组移到全局位置,执行bundle install重新安装即可 - 若已不需要LiveReload功能,直接删除Gemfile中的
rack-livereload声明,同时删除对应的中间件配置即可
内容的提问来源于stack exchange,提问作者Promise Preston
相关产品推荐
相关产品推荐

