使用File.exists检查文件?在我的生产控制台中返回false:
irb(main):026:0> x.avatar(:medium)
=> "/system/users/avatars/000/000/091/medium/linkedin.jpg?1391118203"
irb(main):025:0> File.exists? x.avatar(:medium)
=> false
Chrome网络日志表示找到了文件
Request URL:https://www.example.com/system/users/avatars/000/000/091/medium/linkedin.jpg?1391118203
Request Method:GET
Status Code:200 OK
任何想法为什么会出现这种差异?
更新
我也试过
irb(main):029:0> File.size "#{Rails.root}/public#{x.avatar(:medium)}"
Errno::ENOENT: No such file or directory @ rb_file_s_size - /home/app/example.com/current/public/system/users/avatars/000/000/026/medium/277553f.jpg?1432666893
答案 0 :(得分:2)
File.exists?正在寻找文件系统上的文件,但你的头像方法包括一个URI查询(?1391118203),它不是物理文件名的一部分。
我敢打赌,如果你删除查询字符串,它将返回true:
File.exists? "#{Rails.root}/public#{ x.avatar(:medium).sub(/\?\d+$/, '') }"