Ruby에서 언제`require`,`load` 또는`autoload`를 사용합니까?
require
, load
와 autoload
Ruby 의 미묘한 차이점을 이해 하지만 제 질문은 어떤 것을 사용할지 어떻게 알 수 있습니까?
load
익명 모듈에서 "포장"할 수있는 것 외에는 require
선호되는 것 같습니다.
하지만 autoload
파일을 지연로드 할 수 있습니다. 환상적으로 들리지만 실제로 얻을 수있는 것이 무엇인지 잘 모르겠습니다.require
한 방법이 다른 방법보다 선호됩니까? 한 가지 방법이 눈에 띄는 상황이 있습니까?
일반적으로 require
. load
매번 코드를 다시로드하므로 여러 모듈에서 수행하면 많은 추가 작업을 수행하게됩니다. 게으름은 autoload
이론상 좋게 들리지만, 많은 Ruby 모듈은 다른 클래스를 원숭이 패치하는 것과 같은 작업을 수행합니다. 즉, 프로그램의 관련없는 부분의 동작은 주어진 클래스가 아직 사용되었는지 여부에 따라 달라질 수 있습니다. autoload
은 deprecated 과정에 있으므로 사용을 피해야합니다.
코드가 변경 될 때마다 또는 누군가가 URL에 도달 할 때마다 (개발 목적으로 매번 서버를 다시 시작할 필요가 없도록) 코드를로드하는 자체 자동 리 로더를 만들고 싶다면이를 사용 load
하는 것이 합리적입니다.
mylibrary.rb
puts "I was loaded!"
class MyLibrary
end
irb에서 시도
irb(main):001:0> require 'mylibrary'
I was loaded!
=> true
irb(main):001:0> autoload :MyLibrary, 'mylibrary'
=> nil
irb(main):002:0> MyLibrary.new
I was loaded!
=> #<MyLibrary:0x0b1jef>
차이점을 확인하십시오.
autoload
over로 얻는 것은 다음과 require
같습니다.
autoload
주로 Ruby 프로그램이나 Rails 애플리케이션의 초기화 단계를 가속화하기위한 것입니다. 필요할 때까지 리소스를로드하지 않으면 작업 속도를 상당히 높일 수 있습니다.
또 다른 장점은 사용자가 특정 기능을 사용하지 않는 경우 코드의 일부를로드 할 필요가 없어서로드 시간을 개선하고 메모리 공간을 줄일 수 있다는 것입니다.
다른 사람들이 이미 당신에게 말한 것과는 별도로의 미래 autoload
는 불확실합니다. Ruby 2.0에서는 더 이상 사용되지 않을 예정 이었지만 2.0 기능 동결을 위해 제때 사용되지 않았습니다. 이제 autoload
Ruby 2.1에서 더 이상 사용되지 않을 것으로 예상 되지만 더 이상 확실하지 않습니다 .
참고 URL : https://stackoverflow.com/questions/804297/when-to-use-require-load-or-autoload-in-ruby
'IT TIP' 카테고리의 다른 글
Objects.requireNonNull은 이전 방식보다 덜 효율적입니까? (0) | 2020.12.04 |
---|---|
PHP7.1 json_encode () 플로트 문제 (0) | 2020.12.04 |
HTTP 응답을 보낸 후 계속 PHP 실행 (0) | 2020.12.04 |
DRY way to add created/modified by and time (0) | 2020.12.04 |
공분산과 업 캐스팅의 차이점 (0) | 2020.12.04 |