2013-03-18 3 views
3

나는 1.9.3에 대해 Ruby Standard Library Documentation을 조사 해왔다. 내가 명시 적으로 요구해야하는 라이브러리를 어떻게 찾을 수 있는지 궁금합니다.명시 적으로 필요로하는 Ruby 표준 라이브러리를 어떻게 알 수 있습니까?

예를 들어, 나는 명시 적으로 json 라이브러리를 요구하지만, 표준 라이브러리 목록에는 모두 나타나지만 rubygems이 아니라고 말했습니다.

요구 사항에 대한 정보를 찾을 수있는 또 다른 곳이 있습니까, 아니면 이미 '필수'인지 확인하기 위해 실행할 수있는 pry/irb 명령이 있습니까?

답변

6

사용하려면 모든 라이브러리를로드해야합니다.

성능 측면에서 보면 require은 똑똑하고 라이브러리가로드되어 있으면로드하지 않습니다.

그러나 라이브러리가 필요한지 확인하려면 라이브러리가 정의하는 최상위 네임 스페이스를 확인하고 이것이 현재 범위에서 정의되어 있는지 확인해야합니다. 예를 들어 IRB 세션을 열고 다음을 수행하십시오.

defined? JSON # => nil (it's not loaded) 
require 'json' # => true (load it) 
defined? JSON # => "constant" (it's loaded) 
require 'json' # => false (it's already loaded, so it's not loaded it again) 
+0

쿨 - 그게 내가 찾고있는 것입니다. 감사! – MothOnMars

+0

Ruby는 대부분의 언어와 마찬가지로 간단한 프로그램에 대해서도 99 %의 시간이 필요하기 때문에 요청할 지 여부와 관계없이 자동으로로드되는 클래스/모듈 목록을 제공합니다. 그것들은 명시 적으로로드 될 필요가 없습니다. 쉬운 방법은 개발하는 동안 응용 프로그램을 실행하는 것입니다. Ruby는 여러분이 뭔가를 요구할 필요가 있는지 알려줄 것입니다. 프로그램이 필요한 것을 찾지 못하면 지구가 멈추지 않을 것입니다. 프로그램을 올바르게 실행할 때까지 그 행을 추가하고 다시 실행하면됩니다. 이것은 개발/디버깅주기의 일부입니다. 당신이 모든 것을 요구해야한다고 생각하지 마십시오. –

2

대개 어쨌든 필요하지 않습니다. 이들이 이미로드 된 경우 일반적으로 require 문은 아무 효과가 없습니다.

일부 핵심 라이브러리 구성 요소는 최상위 기호를 참조하여 자동으로로드되거나 자동로드됩니다. 이 목록은 루비의 버전에 따라 다릅니다.

관련 문제