M. Lanza
M. Lanza

Reputation: 6790

Pretty version of Ruby's require statement?

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

Answers (3)

jrhicks
jrhicks

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

sepp2k
sepp2k

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

tadman
tadman

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

Related Questions