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

升级已发布Ruby Gem时遭遇C扩展加载失败问题求助

解决Ruby Gem xorcist升级时C扩展加载失败的问题

我在升级自己发布的Ruby Gem xorcist时,执行以下命令后遇到C扩展加载失败的错误:

git clone https://github.com/fny/xorcist && cd xorcist
rbenv install 3.1.2
rbenv shell 3.1.2
rake test

报错信息:

~/.rbenv/versions/2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require': cannot load such file -- xorcist/xorcist (LoadError)

主gem可以正常加载,但require 'xorcist/xorcist'指向的C扩展无法加载,且报错路径意外指向rbenv中的2.7.6版本(明明已经切换到3.1.2)。

排查与解决步骤

  • 确认rbenv环境是否正确生效
    先检查当前shell的Ruby及工具路径是否匹配3.1.2:

    ruby -v
    which ruby
    which rake
    

    如果which rake输出2.7.6路径下的rake,说明rake未随Ruby版本切换。此时需在3.1.2环境下重新安装rake:

    gem install rake
    
  • 重新编译C扩展
    切换Ruby版本后,旧版本编译的C扩展无法兼容,必须重新编译:

    rake clean
    rake compile
    

    编译完成后,检查lib/xorcist/目录是否生成对应平台的扩展文件(如.so或.bundle)。

  • 确保测试任务加载本地扩展
    检查Rakefile的测试任务配置,确保优先加载本地编译的扩展:

    task :test do
      $LOAD_PATH.unshift(File.expand_path('../lib', __FILE__))
      require 'xorcist/xorcist'
      # 后续测试逻辑...
    end
    

    或者用bundler锁定本地gem版本,避免调用全局依赖:

    bundle install
    bundle exec rake test
    
  • 修复rbenv版本切换问题
    如果rbenv shell 3.1.2未生效,可尝试在项目目录设置本地版本:

    rbenv local 3.1.2
    

    之后重启终端或执行source ~/.bashrc(对应你的shell配置文件)使设置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:27:30