루비에서 __FILE_은 무엇을 의미합니까?
Ruby에서 항상 볼 수 있는 내용입니다.
require File.dirname(__FILE__) + "/../../config/environment"
무엇인가.__FILE__
비열한?
현재 파일 이름에 대한 참조입니다.파일에서foo.rb
,__FILE__
라고 해석될 것입니다."foo.rb"
.
편집: Ruby 1.9.2와 1.9.3은 Luke Bayes가 그의 논평에서 말한 것과 조금 다르게 행동하는 것으로 보입니다.다음 파일 사용:
# test.rb
puts __FILE__
require './dir2/test.rb'
# dir2/test.rb
puts __FILE__
입니다.ruby test.rb
will 출력
test.rb
/full/path/to/dir2/test.rb
의 가치__FILE__
파일이 로드될 때 생성 및 저장되지만 업데이트되지 않는 상대 경로입니다.이것은 만약 당신이 어떤 전화를 가지고 있다면.Dir.chdir
응용 프로그램의 다른 위치에서 이 경로가 잘못 확장됩니다.
puts __FILE__
Dir.chdir '../../'
puts __FILE__
이 문제에 대한 한 가지 해결 방법은 확장된 가치를 저장하는 것입니다.__FILE__
응용 프로그램 코드 외부에 있습니다.당신이 하는 한require
진술은 당신의 정의의 맨 위에 있습니다 (또는 적어도 어떤 호출 전에).Dir.chdir
), 이 값은 디렉터리를 변경한 후에도 계속 사용됩니다.
$MY_FILE_PATH = File.expand_path(File.dirname(__FILE__))
# open class and do some stuff that changes directory
puts $MY_FILE_PATH
__FILE__
는 실행 중인 코드가 포함된 파일의 확장자를 가진 파일 이름입니다.
인foo.rb
,__FILE__
"foo.dll"이 됩니다.
한다면foo.rb
dir에 있었습니다./home/josh
그리고나서File.dirname(__FILE__)
돌아올 것입니다/home/josh
.
어쨌든, 윈도우 버전인 루비에서, 나는 방금 확인했고 그리고.__FILE__
파일의 전체 경로를 포함하지 않습니다.대신 파일이 실행되는 위치와 관련된 파일의 경로를 포함합니다.
PHP에서__FILE__
전체 경로입니다. (제 생각에는 이 경로가 더 바람직합니다.이러한 이유로 Ruby에서 경로를 이식할 수 있도록 하려면 다음을 사용해야 합니다.
File.expand_path(File.dirname(__FILE__) + "relative/path/to/file")
루비 1.9.1에서는__FILE__
에는 파일의 전체 경로가 포함되어 있습니다. 위의 설명은 Ruby 1.8.7을 사용할 때 사용한 것입니다.
Ruby 1.8.7과 1.9.1(1.9에 대한 확신 없음) 모두와 호환되기 위해서는 위에서 보여준 구성을 사용하여 파일이 필요합니다.
언급URL : https://stackoverflow.com/questions/224379/what-does-file-mean-in-ruby
'programing' 카테고리의 다른 글
AVP Player의 재생 상태 확인 (0) | 2023.06.02 |
---|---|
Xcode - 다운로드할 수 있는 dSYM이 없습니다. (0) | 2023.06.02 |
셸에서 사용하는 파일 아이콘 가져오기 (0) | 2023.06.02 |
Azure DocumentDb에서 레코드 수 가져오기 (0) | 2023.06.02 |
Swift에서 "Index"를 "Int" 유형으로 변환하는 방법은 무엇입니까? (0) | 2023.06.02 |