4

私はいつもこの種のことを醜いと思っていました:

require File.join(File.dirname(__FILE__), 'hirb/config')

おそらくRails用に書かれたものでしょうか?

require_relative 'hirb/config'
require_relative '../another/file'
4

3 に答える 3

7

最善のアプローチは、おそらくロード パスを準備することです。そのため、これらすべてを行う必要はありません。メイン モジュールまたは init ファイルが他のいくつかの場所を導入することは特に難しくありません。

これは、RUBYLIB 環境変数と -I コマンド ライン パラメータの影響も受けます。

$: << File.expand_path(File.join('..', 'lib'), File.dirname(__FILE__))
于 2009-10-07T17:48:08.877 に答える
6

あなたができる

Dir.chdir(File.dirname(__FILE__) do
  require 'hirb/config'
  require '../another/file'
end

もちろん、それが良いかどうかは好みの問題です。

于 2009-10-07T17:14:12.813 に答える
4

カーネルを拡張できます。

module Kernel
    def require_relative(path)
      require File.join(File.dirname(caller[0]), path.to_str)
    end
end
于 2009-10-07T20:25:39.087 に答える