marcgg
marcgg

Reputation: 66515

FileTest.exists? issue with ruby on rails

I am trying to check if a file exists in my rails application. I am running ruby 1.8.6 and rails 2.1.2 with windows XP.

So, the problem is that the FileTest.exists? method doesn't seem to be working. I have simplified the code to this point :

if FileTest.exists?("/images/header.jpg")
      render :text => "yes"
else  
      render :text => "no <img src='/images/header.jpg' />"
end

If I do that the system displays "no" and then includes the image that displays correctly because /images/header.jpg exists.

I tried FileTest.exists?, FileTest.exist?, File.exists?, File.exist? and nothing seems to be working.

What am I doing wrong ? Thanks

Upvotes: 3

Views: 6484

Answers (2)

Rick Copeland
Rick Copeland

Reputation: 11922

I'm guessing it's because you're asking whether a file "header.jpg" exists in a directory "images" off of the root directory for your system (which on Windows I'd assume is "c:\"). Try putting the full path (from the filesystem root) to the "/images" directory rather than the URL path.

In particular, as pointed out by @Brian, you should use:

FileTest.exists?(RAILS_ROOT + "/images/header.jpg") #  < rails 3.0
FileTest.exists?(Rails.root + "/images/header.jpg") # >= rails 3.0

Upvotes: 14

Brian
Brian

Reputation: 4930

Add RAILS_ROOT to the filename that you're checking before calling exists?

Upvotes: 3

Related Questions