文件已存在?没有检测到当前文件

时间:2015-06-04 02:03:51

标签: ruby-on-rails

使用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

1 个答案:

答案 0 :(得分:2)

File.exists?正在寻找文件系统上的文件,但你的头像方法包括一个URI查询(?1391118203),它不是物理文件名的一部分。

我敢打赌,如果你删除查询字符串,它将返回true:

File.exists? "#{Rails.root}/public#{ x.avatar(:medium).sub(/\?\d+$/, '') }"