UFO ET IT

기본적으로 "필요한"경로는 무엇입니까?

ufoet 2021. 1. 12. 08:09
반응형

기본적으로 "필요한"경로는 무엇입니까?


루비에서는 할 때

require "some_file"

Ruby는 특정 위치에서 파일을 찾습니다.

을 찾는다는 것을 알고 some_file.rb있지만 기본적으로 어디에서 찾습니까?


그것은 당신의 플랫폼과 루비가 어떻게 컴파일되었는지에 따라 다르기 때문에 이에 대한 답은 없습니다. 다음을 실행하여 확인할 수 있습니다.

ruby -e 'puts $:'

그러나 일반적으로 각 아래에 arch, 버전 및 일반 디렉토리를 포함하여 표준, 사이트 및 공급 업체 Ruby 라이브러리 경로가 있습니다.


Ruby는 $LOAD_PATH배열에 지정된 모든 경로를 찾습니다 .

다음과 같이 검색 할 디렉토리를 추가 할 수도 있습니다.

$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)

RUBYLIB 환경 변수를 설정하여 추가 경로를 지정할 수 있습니다.


$ LOAD_PATH 전역 변수 ($ :라고도 함)에는 검색되는 디렉토리 목록이 포함됩니다.

참조 : http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require


require (string) => true 또는 false

Ruby는 string이라는 라이브러리를로드하려고 시도하며 성공하면 true를 반환합니다. 파일 이름이 절대 경로로 확인되지 않으면 $ :에 나열된 디렉토리에서 검색됩니다. 파일의 확장자가 ".rb"이면 소스 파일로로드됩니다. 확장자가 ".so", ".o"또는 ".dll"이거나 현재 플랫폼에있는 기본 공유 라이브러리 확장이 무엇이든간에 Ruby는 공유 라이브러리를 Ruby 확장으로로드합니다. 그렇지 않으면 Ruby는 이름에 ".rb", ".so"등을 추가하려고합니다. 로드 된 기능의 이름이 $ :의 배열에 추가됩니다.


ruby명령 줄에서 호출 할 때 -I인수를 사용하여 추가 검색 경로를 제공 할 수 있습니다 . 출력 비교

$ ruby -e 'puts $:'

출력

$ ruby -I /tmp -e 'puts $:'

두 번째 항목 /tmp이 옵션으로 나열 되는 방법에 유의하십시오 . 다중 -I사용 하여 다중 경로를 추가 할 수 있습니다 .

shebang과 함께 사용할 수도 있습니다.

#!/usr/bin/ruby -I /tmp -I /usr/local/lib/ruby

참조 URL : https://stackoverflow.com/questions/9474299/what-are-the-paths-that-require-looks-up-by-default

반응형