web-dev-qa-db-ja.com

Rubyもirbも、現在のディレクトリに.rbファイルをロードできません

Rubyでファイルをインポートするのに本当に問題があります。 WindowsXPでRubyアプリを作成しています。アプリのすべてのクラスファイルは"C:/Documents/Prgm/Surveyor_Ruby/lib"にあります。しかし、別のファイルにrequireファイルを作成すると、 Rubyもirbも必要なファイルを見つけることができません。

現在のディレクトリの内容:

C:\Documents\Prgm\Surveyor_Ruby\lib>dir
 Volume in drive C has no label.
 Volume Serial Number is AAAA-BBBB

 Directory of C:\Documents\Prgm\Surveyor_Ruby\lib

10/09/2010  06:32 PM    <DIR>          .
10/09/2010  06:32 PM    <DIR>          ..
10/08/2010  03:22 PM             5,462 main (commented).rb
10/08/2010  03:41 PM                92 question.rb
10/08/2010  09:06 PM             2,809 survey.rb
10/09/2010  06:25 PM               661 surveyor.rb
10/08/2010  01:39 PM             1,546 test.rb
               5 File(s)         10,570 bytes
               2 Dir(s)  40,255,045,632 bytes free

Irbが正しいディレクトリにあることの確認:

C:\Documents\Prgm\Surveyor_Ruby\lib>irb
irb(main):001:0> Dir.pwd
=> "C:/Documents/Prgm/Surveyor_Ruby/lib"

...まだirbはsurvey.rbをロードできません:

irb(main):002:0> require 'survey'
LoadError: no such file to load -- survey
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from (irb):2
        from C:/Ruby192/bin/irb:12:in `<main>'
29
Bad Request

これらのどれも私のために働きませんでした、しかしこれはしました:

irb -I .
>require 'file'
 => true
63
AdrianoFerrari
require './hede'

または

require_relative 'hede'

これは、LinuxのRuby(1.9.3)とJRuby(1.7.x)の両方で機能します。Windowsではテストしていません。

10
nurettin

同じ振る舞いに気づきましたが、私のLinuxのルーツは私に試してもらいました:.\file.rbそしてそれはirbにロードされました。現在のディレクトリを明示的に宣言してみてください。

9
bpd1069

このコマンドはどうですか?書くのは少し面倒ですが、本当にきれいで、常に機能するはずです:

➜$ irb 
> require "#{Dir.pwd} /file_to_load.rb" 
 => true 
8
Darme

ひどく汚いですが、最初の行でいつでも行うことができます:

$: << '.'

そして、あなたはpwd'edrequireで行きます。 IRBを使用したインタラクティブ/クリエイティブテストに非常に役立ちます

3
quetzalcoatl

以前の投稿は両方とも、用途が異なるだけで正しいと思います。 IRBでは、requireで絶対パスを使用します。ファイルでは、絶対パスでrequireを使用するか、require_relativeを使用することもできます。

2
user469809

あなたがrvmsudoでこれをやろうとしているなら、私はこれが私のために働いているのを見つけました:

rvmsudo irb -I '/Absolute/path/to/your/project'
1
awsmsce