Abram
Abram

Reputation: 41954

File.exists? is not detecting present file

Checking for the file with File.exists? returns false in my production console:

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 Network Log indicates the file is found

Request URL:https://www.example.com/system/users/avatars/000/000/091/medium/linkedin.jpg?1391118203
Request Method:GET
Status Code:200 OK

Any idea why the discrepancy?

Update

I have also tried

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

Upvotes: 1

Views: 127

Answers (1)

Tim Peters
Tim Peters

Reputation: 4144

File.exists? is looking for a file on the filesystem, but your avatar method is including a URI query (?1391118203) which isn't part of the physical file name.

I bet if you chop the query string off it would return true:

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

Upvotes: 2

Related Questions