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

Kamal(Ruby on Rails)无法解析环境变量及路径问题求助

问题排查与解决方法

1. Socket::ResolutionError 无法解析${SERVER_IP}

原因

  • Windows Git Bash对环境变量的解析逻辑和类Unix系统存在差异,可能未正确加载.env中的SERVER_IP变量;
  • Deploy.yml中变量引用格式不规范,或Kamal未正确识别变量插值;
  • 环境变量未被正确export到当前Shell会话。

调试与解决

  • 先在Git Bash中执行 echo $SERVER_IP,确认变量是否已加载。无输出则说明.env未被正确读取;
  • 在Deploy.yml中明确指定env_file路径(参考第二个问题的配置),确保Kamal能读取.env中的变量;
  • 手动export变量后再执行命令:export SERVER_IP=你的服务器实际IP && kamal env push,验证是否能正常解析。

2. .env文件环境变量无法加载,仅硬编码生效

原因

  • Deploy.yml中未配置env_file项,Kamal默认不会自动加载项目根目录的.env文件;
  • .env文件格式错误(如多余空格、Windows换行符、引号使用不当);
  • Git Bash未正确source .env文件,导致变量未进入当前Shell环境。

调试与解决

  • 在Deploy.yml中添加env_file配置:
    env_file: .env
    
  • 检查.env文件格式:确保每行都是KEY=VALUE格式,字符串值仅在包含空格时加引号,用Notepad++将文件换行符转为LF格式;
  • 在Git Bash中执行 source .env && echo $你的变量名,确认变量能被正确读取后再执行Kamal命令。

3. 指定~/.ssh/id_rsa路径无法识别,需写入私钥内容

原因

  • Windows Git Bash中的~路径未被Kamal正确转换为Windows用户目录;
  • 私钥文件权限过宽(不符合SSH的600权限要求);
  • Deploy.yml中ssh路径配置格式错误。

调试与解决

  • 使用绝对路径替代~:先在Git Bash中执行 echo ~ 得到实际路径(如/c/Users/你的用户名/.ssh),然后在Deploy.yml中配置:
    ssh:
      private_key_path: /c/Users/你的用户名/.ssh/id_rsa
    
  • 修正私钥权限:在Git Bash中执行 chmod 600 ~/.ssh/id_rsa,确保仅当前用户拥有读写权限;
  • 确认私钥文件路径无拼写错误,且文件确实存在于指定位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:03:13