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

排查Ruby-on-Rails RuntimeError:Discourse数据库迁移模块缺失问题

问题:执行Discourse数据库迁移时出现MiniRacer::RuntimeError

我是Ruby-on-Rails新手,执行数据库迁移时遇到了RuntimeError。在/var/www/discourse目录下执行以下命令:

sudo -u www-data RAILS_ENV=production $ruby_path/bundle exec rake db:migrate --trace

出现如下错误:

MiniRacer::RuntimeError: Error: Could not find module `discourse/lib/utilities` imported from `(require)`
JavaScript at missingModule (<anonymous>:247:11)
JavaScript at findModule (<anonymous>:258:7)
JavaScript at requireModule (<anonymous>:24:15)
JavaScript at <anonymous>:26:11
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/mini_racer-0.6.3/lib/mini_racer.rb:228:in `eval_unsafe'
...

Mini_racer已安装,但discourse/lib/utilities不存在于源码中。注:我知道Discourse官方推荐Docker部署,目前正在研究Ruby-on-Rails组件,以Discourse为调试对象。

以下是rvm info输出:

admin@rortest:/var/www/discourse$ rvm info

ruby-3.1.3:

  system:
    uname:        "Linux rortest 5.10.0-20-amd64 #1 SMP Debian 5.10.158-2 (2022-12-13) x86_64 GNU/Linux"
    name:         "Debian"
    version:      "11"
    architecture: "x86_64"
    bash:         "/usr/bin/bash => GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)"
    zsh:          " => not installed"
    remote_path:  "debian/11/x86_64"

  rvm:
    version:      "1.29.12 (latest)"
    updated:      "1 hour 11 minutes 18 seconds ago"
    path:         "/usr/local/rvm"
    autolibs:     "[4] Allow RVM to use package manager if found, install missing dependencies, install package manager (only OS X)."

  ruby:
    interpreter:  "ruby"
    version:      "3.1.3p185"
    date:         "2022-11-24"
    platform:     "x86_64-linux"
    patchlevel:   "2022-11-24 revision 1a6b16756e"
    full_version: "ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]"

  homes:
    gem:          "/usr/local/rvm/gems/ruby-3.1.3"
    ruby:         "/usr/local/rvm/rubies/ruby-3.1.3"

  binaries:
    ruby:         "/usr/local/rvm/rubies/ruby-3.1.3/bin/ruby"
    irb:          "/usr/local/rvm/rubies/ruby-3.1.3/bin/irb"
    gem:          "/usr/local/rvm/rubies/ruby-3.1.3/bin/gem"
    rake:         "/usr/local/rvm/rubies/ruby-3.1.3/bin/rake"

  environment:
    PATH:         "/usr/local/rvm/gems/ruby-3.1.3/bin:/usr/local/rvm/gems/ruby-3.1.3@global/bin:/usr/local/rvm/rubies/ruby-3.1.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/rvm/bin"
    GEM_HOME:     "/usr/local/rvm/gems/ruby-3.1.3"
    GEM_PATH:     "/usr/local/rvm/gems/ruby-3.1.3:/usr/local/rvm/gems/ruby-3.1.3@global"
    MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-3.1.3"
    IRBRC:        "/usr/local/rvm/rubies/ruby-3.1.3/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

解决建议
  • 同步依赖版本
    本地Discourse源码与mini_racer版本可能不匹配,执行命令更新依赖:

    bundle install --deployment --without test development
    
  • 预编译前端资源
    Discourse的JavaScript模块需预编译才能被MiniRacer识别,执行:

    RAILS_ENV=production bundle exec rake assets:precompile
    
  • 确认源码完整性
    检查本地仓库是否有文件缺失或未拉取的更新:

    git fetch origin
    git reset --hard origin/main
    
  • 验证Ruby路径
    确保$ruby_path指向正确的Ruby版本路径,避免版本冲突:

    echo $ruby_path
    # 需与rvm info输出的ruby路径一致
    
  • 清理缓存
    清除旧缓存解决模块引用异常:

    bundle clean --force
    RAILS_ENV=production bundle exec rake tmp:clear
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:01:30