文字列の配列からファイルのリストを作成する単純な Ruby スクリプトがあるため、次のようなメソッドがあります。
def initialize( rootpath, name )
@content = ""
intermission = ""
if ( ! (rootpath[-1] == "/" || name[0] == "/" ))
intermission="/"
end
@path= "#{rootpath}#{intermission}#{name}"
print "Open JavascriptFile from #{@path}"
if (! File.exists? @path)
print "File does not exist!"
end
File.open( @path ).each do |line|
@content << line
end
end
これは、次の行に沿って呼び出されます。
files= ['alice.js', 'bob.js', 'claire.js', 'dave.js']
basepath= "/home/glenatron/projects/myJSProject/"
files.each do |filename|
myLoader.new( basepath, filename )
end
IRB からクラスをロードして実行すると、次のようになります。
Open JavascriptFile from /home/glenatron/projects/myJSProject/alice.js
File does not exist!
Errno::ENOENT: No such file or directory - /home/glenatron/projects/myJSProject/alice.js
私が理解しているように、これはファイルが存在しないことを意味します。
ただし、ファイルが確実に存在するだけでなく、IRB ではまったく同じパスを貼り付けてその内容を確認できます。単純File.open("/home/glenatron/projects/myJSProject/alice.js").each { | line | print line }
にファイルの完全な内容を明らかにします。では、Ruby クラスからではなく、直接のコマンド ライン リクエストからこれを実行できるのはなぜでしょうか? 私が渡しているフルパスではなく、ローカルパスを読み取ろうとしていますか?