Ruby's __FILE__ keyword returns the path to the current file. On popular for this are Ruby binaries:
#!/usr/bin/env ruby
$LOAD_PATH << File.expand_path('../../lib', __FILE__)
require 'my_cli'
MyCli.run!
However, if you create a symlink to this file, this will no longer work. __FILE__ will resolve to the path of the symlink, not to its target.
One solution is to use File.realpath(__FILE__).
In Ruby 2+ you can also use this:
$LOAD_PATH << File.expand_path('../lib', __dir__)
__dir__ is simply a shortcut for File.dirname(File.realpath(__FILE__)).
Posted by Tobias Kraze to makandra dev (2016-08-23 12:50)