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

Mac M2设备上Rails服务启动失败:Puma启动冻结求助

解决Mac M2上Rails应用启动冻结问题

针对Mac M2设备上Rails 7.0.7.2 + Ruby 3.1.2环境下,所有Rails进程(Puma、rails c等)启动后冻结的问题,结合Linux环境正常的情况,可尝试以下排查和修复步骤:

  • 重新编译适配ARM64架构的Ruby
    Mac M2为ARM64架构,若Ruby是通过Rosetta兼容模式安装的,可能引发兼容性阻塞。用rbenv或rvm重新编译Ruby:

    # 以rbenv为例,先确保brew安装的openssl是ARM版本
    RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)" rbenv install 3.1.2
    

    安装完成后切换到该版本,重新执行bundle install。

  • 排查PostgreSQL连接阻塞
    初始化器加载完成后,进程可能卡在数据库连接阶段:

    • 修改config/database.yml,将host从localhost改为127.0.0.1,强制使用TCP连接而非Unix Socket;
    • 检查本地PostgreSQL的pg_hba.conf,确保允许本地用户通过TCP或Socket连接;
    • 临时替换数据库为SQLite3,修改database.yml后启动应用,验证是否是PostgreSQL相关问题。
  • 禁用Spring预加载器
    Rails Spring预加载器在ARM架构下偶发兼容性问题,启动时禁用Spring:

    DISABLE_SPRING=1 bin/rails server
    # 或启动控制台
    DISABLE_SPRING=1 bin/rails console
    
  • 排查Webpacker相关阻塞
    若Webpacker自动编译阶段出现阻塞,可尝试:

    • 启动时禁用Webpacker开发服务器:
      WEBPACKER_DEV_SERVER=false bin/rails server
      
    • 确保Webpacker版本与Rails 7.0.7.2兼容,执行bundle update webpacker更新到适配版本。
  • 启用详细调试日志定位阻塞点
    启动时增加日志输出级别,明确进程挂起的具体阶段:

    # Rails debug级别日志
    RAILS_LOG_LEVEL=debug bin/rails server
    # Ruby层面调试日志
    ruby -v -d bin/rails server
    
  • 重新编译所有Native扩展gem
    部分gem(如pg、nokogiri)的Native扩展若为x86_64架构,会导致ARM设备上运行异常:

    # 强制重新安装所有gem
    bundle install --force
    # 单独重新安装pg gem(若有问题)
    gem install pg -- --with-pg-config=$(brew --prefix postgresql)/bin/pg_config
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:52:33