Ruby on Rails读取JSON文件报Errno::ENOENT错误的解决求助
解决Rails中读取JSON文件时的Errno::ENOENT错误
问题根源
File.read('links.json')使用相对路径时,Rails服务器的工作目录是项目根目录,如果你的JSON文件没有放在根目录下,就会触发找不到文件的错误。
解决步骤
1. 确定JSON文件的存放位置
推荐将JSON文件放在Rails项目的标准目录中,比如:
db/:用于存放数据相关文件config/:用于配置类文件- 或者自行创建
data/目录专门存放这类数据文件
2. 使用Rails的绝对路径方法读取文件
用Rails.root(返回项目根目录的绝对路径)拼接文件路径,彻底避免相对路径的问题。修改后的chap3方法代码如下:
def chap3 # 示例:假设文件放在db/links.json,根据实际路径调整 file_path = Rails.root.join('db', 'links.json') data = File.read(file_path) datahash = JSON.parse(data) puts datahash.keys # 新增渲染语句,避免访问时出现模板缺失错误 render plain: "JSON读取成功,根键为:#{datahash.keys.join(', ')}" end
3. 额外注意事项
- 如果使用自定义目录(如
data/),要先确保该目录已在项目中创建 - 访问
chap3路由时,必须添加render语句返回响应,否则会触发Template is missing错误 - 生产环境下需确保Rails进程拥有该文件的读取权限
内容的提问来源于stack exchange,提问作者Signor
相关产品推荐
相关产品推荐

