11

いくつかのファイルに異なるクラスを持つ Ruby コードがあります。1 つのファイルで、実行を開始します。このファイルrequireは私の他のファイルです。

  • これは Ruby コードを開始する良い方法ですか?
  • たとえばDIR2/MyRubyCode、メインファイルへのリンクであるシンボリックリンクからコードを実行するDIR1/MyRubyCode.rbと、required が失敗します。の前にパスDIR1を追加することで問題を解決しましたが、もっと良い方法があると思います。それについて何か提案はありますか?$LOAD_PATHrequire
4

3 に答える 3

16

Ruby ファイルが ' require' で実行または実行されているかどうかを確認するには、定数ruby MyRubyCode.rbを確認します。__FILE__

# If the first argument to `ruby` is this file.
if $0 == __FILE__
  # Execute some stuff.
end

require/$LOAD_PATH の問題に関しては、require ステートメントで常に相対パスを使用できます。例えば:

# MyRubyCode.rb
require "#{File.dirname(__FILE__)}/foo_class"
require "#{File.dirname(__FILE__)}/bar_module"

foo_class.rbbar_module.rbファイルが と同じディレクトリに含まれMyRubyCode.rbます。

于 2010-08-29T17:08:48.767 に答える
7

これは古い質問であることは知っていますが、それに対する最新の回答があり、投稿したかったのです。

Ruby のより新しいバージョン (いつになるかはわかりません) 以降では、次のコマンドを使用して同じディレクトリ内のファイルを要求できます。

require './foo_class'
require './bar_module'

そして、同じディレクトリにfoo_class.rbandという名前のファイルをロードします。bar_module.rb

ファイルがrequire正常に実行されているかどうかを確認するには、他の回答を確認してください。

于 2013-06-01T23:24:08.110 に答える