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

为何M1 MacBook上Rails5项目执行rails s仅支持localhost访问,127.0.0.1无法访问?

M1芯片MacBook Pro运行Rails 5项目127.0.0.1无法访问问题解决方案

该问题核心是M1芯片设备的macOS系统默认将Rails服务绑定到了IPv6的环回地址::1(对应localhost),未监听IPv4的环回地址127.0.0.1,因此会触发Capybara测试的请求失败报错:

Capybara::Poltergeist::StatusFailError: Request to 'http://127.0.0.1:65155/etc' failed to reach server, check DNS and/or server status

可按以下优先级选择解决方案:

  • 方案1:启动服务时指定绑定IP
    临时生效直接在启动命令后加绑定参数,绑定所有IPv4地址的命令为:
    bundle exec rails s -b 0.0.0.0
    
    需要同时兼容IPv4和IPv6可以使用bundle exec rails s -b ::
  • 方案2:修改Capybara默认配置
    在测试配置文件(Rails默认是test/test_helper.rb,使用RSpec则是spec/rails_helper.rb)中添加以下配置,让Capybara默认使用localhost发起请求:
    Capybara.server_host = 'localhost'
    Capybara.app_host = 'http://localhost'
    
  • 方案3:校验系统hosts配置
    打开/etc/hosts文件,确认存在以下两行配置,缺失则手动添加后保存生效:
    127.0.0.1       localhost
    ::1             localhost
    
  • 方案4:配置Puma默认绑定规则
    如需长期生效,可直接修改Rails项目的config/puma.rb配置文件,添加绑定规则:
    # 可根据需要替换为指定IP,0.0.0.0代表绑定所有本地IPv4地址
    bind 'tcp://0.0.0.0:3000'
    

配置完成后启动服务,执行lsof -i :3000(将3000替换为实际服务端口),若返回结果中服务监听地址为*:3000则代表绑定成功,即可正常通过127.0.0.1访问服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 07:36:01