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

Rails中bin/dev命令报错求助:文件不存在与语法错误

解决Rails 7 bin/dev在Windows下的执行报错问题

问题根源

  1. 初始报错是因为Windows环境下,#!/usr/bin/env sh调用的shell环境中,ruby被错误指向了不存在的/c/Users/btme/AppData/Local/Microsoft/WindowsApps/ruby路径。
  2. 错误将shell脚本的shebang改为Ruby路径后,脚本内的shell语法(如if ! gem list...、echo、exec)不符合Ruby语法规范,触发语法错误。

正确解决方案

方案1:修复原Shell脚本的路径问题

将bin/dev恢复为原shell脚本,修正路径指向问题:

  1. 恢复bin/dev内容为原始shell脚本:
#!/usr/bin/env sh

if ! gem list foreman -i --silent; then
  echo "Installing foreman..."
  gem install foreman
fi

exec foreman start -f Procfile.dev "$@"
  1. 调整环境变量优先级:
    • 确保/c/Ruby32-x64/bin在系统PATH变量中排在C:\Users\btme\AppData\Local\Microsoft\WindowsApps之前,让终端优先调用正确的Ruby版本。
    • 优先使用Git Bash或WSL终端执行bin/dev,这类终端能更好解析Unix风格路径。
  2. (可选)替换shebang为具体shell路径:
    如果#!/usr/bin/env sh仍无法正常工作,替换为Git Bash的sh实际路径(根据你的安装位置调整):
#!/c/Program\ Files/Git/bin/sh.exe

方案2:改写为合法Ruby脚本(替代方案)

若更倾向用Ruby执行,将脚本改写为符合Ruby语法的版本:

#!/c/Ruby32-x64/bin/ruby

unless `gem list foreman -i --silent`.chomp == "true"
  puts "Installing foreman..."
  system("gem install foreman")
end

exec("foreman start -f Procfile.dev #{ARGV.join(' ')}")

验证步骤

  1. 保存修改后的bin/dev文件。
  2. 赋予执行权限:在Git Bash/WSL中运行chmod +x bin/dev,或在Windows文件属性中开启执行权限。
  3. 运行bin/dev测试监听服务是否正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:33:19