2013-10-02 21 views
6

私はRubyの絶対初心者です。私は小さなルビーファイルを作成しました。コマンドがruby "methods.rb"のときは正常に動作します。それは私が正しいディレクトリにいることを意味します。ルビーファイルが見つからないようにするために

しかし、私はIRB起動し、コマンドrequire "methods.rb"を実行したときに、私は次の応答を得る:

LoadError: cannot load such file -- methods.rb 
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:53:in `require' 
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:53:in `require' 
    from (irb):1 
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>' 

答えて

10

Rubyは、デフォルトでは、ロードパスに現在のパスを追加しません。

irbから、代わりにrequire "./methods.rb"を試すことができます。

1

ディレクトリ/home/kirti/Rubyso.rbというルビーファイルがあります。最初はIRBからDir#chdirメソッドを使って私の現在の作業ディレクトリを変更します。それから私は#loadまたは#requireメソッドを呼び出します。私のso.rbファイルには、p hello行しか含まれていません。

私はこの道を行くだろう:

>> Dir.pwd 
=> "/home/kirti" 
>> Dir.chdir("/home/kirti/Ruby") 
=> 0 
>> Dir.pwd 
=> "/home/kirti/Ruby" 
>> load 'so.rb' 
"hello" 
=> true 
>> require './so.rb' 
"hello" 
=> true 
1

あなたはロードパスの使用からRubyスクリプトを実行しているディレクトリを追加するには:

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '')) 

またはあなたが "であなたの依存関係を入れている場合現在のディレクトリの「サブディレクトリ」:

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'subdir')) 
1

あなたのカーソルにあるものをロードする場合は

現在のディレクトリを示す 'ドット'があることに注意してください。

あなたが模索し、そのファイル内の変更を行う場合は、あなたがIRBにいる間、あなたの変更を読み込むことができますloadとしてloadではなく`requireを使用し、requireは、ファイルが一回必要になることができるようになります。つまり、変更がどのように影響を受けているかを見るために、IRBを終了する必要はありません。

あなたがIRBに対して持っているオプションを知るには、irb --helpを教えてください。

関連する問題