Reputation: 6790
I've always thought this sort of thing ugly:
require File.join(File.dirname(__FILE__), 'hirb/config')
Is there a prettier alternative, maybe one written for Rails?
require_relative 'hirb/config'
require_relative '../another/file'
Upvotes: 4
Views: 797
Reputation: 14997
You can extend the kernel.
module Kernel
def require_relative(path)
require File.join(File.dirname(caller[0]), path.to_str)
end
end
Upvotes: 4
Reputation: 370417
You could do
Dir.chdir(File.dirname(__FILE__) do
require 'hirb/config'
require '../another/file'
end
Whether or not that's better is a matter of taste, of course.
Upvotes: 6
Reputation: 211690
The best approach is probably preparing your load path so you don't need to do all this. It's not especially difficult for your main module or init file to introduce a few other locations.
This is also affected by the RUBYLIB environment variable, as well as the -I command line parameter.
$: << File.expand_path(File.join('..', 'lib'), File.dirname(__FILE__))
Upvotes: 7