What does __FILE__ mean in Ruby?

ghz 1years ago ⋅ 9309 views

Question

I see this all the time in Ruby:

require File.dirname(__FILE__) + "/../../config/environment"  

What does __FILE__ mean?


Answer

It is a reference to the current file name. In the file foo.rb, __FILE__ would be interpreted as "foo.rb".

Edit: Ruby 1.9.2 and 1.9.3 appear to behave a little differently from what Luke Bayes said in [his comment](https://stackoverflow.com/questions/224379/what-does-file-mean-in- ruby#comment1243516_224383). With these files:

# test.rb
puts __FILE__
require './dir2/test.rb'



# dir2/test.rb
puts __FILE__

Running ruby test.rb will output

test.rb
/full/path/to/dir2/test.rb