2009-12-23 1 views
4

Ruby 스크립트의 위치와 관련된 파일에 액세스해야합니다.스크립트와 동일한 디렉토리에있는 파일에 액세스하기

내가 발견 한 유일한 해결책은 File.dirname(__FILE__)입니다. 그러나 스크립트가 심볼릭 링크에서 실행되는 경우 __FILE__은 심볼릭 링크의 위치를 ​​제공합니다.

__FILE__을 보는 것과 관련이없는 해결책을 선호합니다. 링크가 맞는지 확인하는 경우 링크가 있는지 확인합니다. 그러나 다른 방법이 없다면, 이것을 할 수있는 보석이 있는지 미리 아는 것이 좋을 것입니다.

답변

4

합니까 File.expand_path 도움이됩니까? File.expand_path('../other_file_in_same_dir', __FILE__)

두 번째 인수가 상대 경로가 확장 얻을 것이다 곳에서 지점입니다 :

나는 다음과 같은 변형을 선호

+0

yes symlink를 해결합니다 (적어도 mac osx에서) – ennuikiller

+0

광산에서는 작동하지 않습니다. , OS X에서도 가능합니다. 옵션을 설정해야합니다. 나는 File.dirname (File.expand_path (__ FILE __))을 사용하고있다. –

+0

나는 symlinked dir에 File.expand_path (".")를 사용하고있다. max osx에서 루비 1.9를 실행 중입니다. 10.6 – ennuikiller

1

항상 popen을 사용하여 ls -l $ (pwd)와 같은 쉘 명령을 실행하고 심볼릭 링크를 따라 구문 분석 할 수 있습니다. 윈도우의 경우 간단하게 상응하는 윈도우 os 명령을 실행하면됩니다 (가정합니다!)

+0

그래도 Windows에서는 작동하지 않습니다. –

+0

어떻게 Windows에서 '심볼릭 링크'를 얻을 수 있습니까? – AShelly

+0

할 수는 없지만 Windows 및 * nix에서 제대로 작동하려면 스크립트가 필요합니다. (Windows는 Windows에서 심볼릭 링크처럼 작동하는 독점적 인 파일 형식을 가지고 있지만 .lnk 파일입니다.) –

3

(에 그것을 시도 할 수있는 '괜찬아 상자가 없습니다). 기본값은 현재 작업 디렉토리입니다.