Ruby – What does __FILE__ mean in Ruby


I see this all the time in Ruby:

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

What does __FILE__ mean?

Best Solution

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. With these files:

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

Running ruby test.rb will output