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

Ubuntu20.04运行Rails6 rake db:create报无法加载celluloid/current错误

报错根因定位

出现LoadError: cannot load such file -- celluloid/current的核心原因是依赖版本错配:项目中引入的private_pub、faye这类依赖Celluloid并发库的gem,拉取了重构过目录结构的Celluloid 0.18+版本,而这个版本已经移除了celluloid/current这个旧的加载入口,和你当前Ubuntu 20.04下的Ruby 2.5.8、Rails 6.0.3.6运行环境不兼容。

可落地解决步骤

按优先级从高到低操作,多数场景第一步即可解决问题:

  • 锁定兼容的Celluloid版本
    在项目根目录的Gemfile中添加版本锁定配置:
    gem 'celluloid', '0.17.4'
    该版本是最后一个保留celluloid/current加载入口的稳定版本,完全适配Ruby 2.5.x。配置完成后执行bundle install完成安装。
  • 修正private_pub的版本依赖
    低于1.1.0版本的private_pub会硬拉取不兼容的Celluloid版本,哪怕你单独锁定了Celluloid版本,也会被依赖解析流程覆盖。把Gemfile中的private_pub依赖替换为:
    gem 'private_pub', '~> 1.1.1'
    这个版本已经适配Rails 6,不再依赖Celluloid的废弃接口。
  • 清理本地残留缓存
    很多时候改完Gemfile还报错,是因为bootsnap、spring的进程缓存还在加载旧的gem文件,依次执行以下命令清理:
    • rm -rf tmp/cache/bootsnap
    • gem cleanup celluloid
    • bundle exec spring stop
  • 排查硬编码的错误引入语句
    打开项目的config/application.rb,定位第4行的代码,如果存在硬写的require 'celluloid/current'语句,直接删掉这行即可。Celluloid 0.17+版本加载时不需要手动引入这个入口文件,多余的require语句反而会触发加载错误。
  • 验证最终依赖版本
    执行gem list celluloid确认实际安装的Celluloid版本为0.17.4,而非0.18及以上的版本。如果版本不匹配,删掉Gemfile.lock中Celluloid对应的旧记录,重新执行bundle install即可。
环境兼容注意事项

调整Ruby版本时要匹配Rails 6.0.3.6的官方支持范围:兼容的Ruby版本为2.5.0 ~ 2.7.x,不要切换到3.0及以上版本。Celluloid这类已停止维护的库在Ruby 3.0+环境下完全无法运行,会反复触发类加载错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 23:45:08