2017-12-06 7 views
-1

로컬 시스템에서 필요한 보석을로드 할 수 없을 때 루비 스크립트에서 루비 보석을 설치하려고합니다. 여기 내 코드가있다.'LoadError'가 발생했을 때 구조 블록에 루비 보석을 설치하십시오.

begin 
    require '<gem name here>' 
rescue LoadError 
    puts `gem install <gem name here>` 
    require '<gem name here>' 
end 

위의 코드는 rescue 블록에 보석을 설치합니다. 그러나 보석이 필요할 때 다음 오류가 표시됩니다.

.rvm/rubies/ruby-2.4.2/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb 
:55:in require': cannot load such file -- <gem name here> (LoadError) 

어떻게 해결할 수 있습니까? 나는 보석이 시스템에 아직없는 경우 rescue 블록 안에로드되기를 원합니다.

+0

처음에 필요한 보석의 전체 목록을 모르시겠습니까? –

+1

말 그대로'' ''을 코드에 쓰고 있습니까? – sawa

+0

@JagdeepSingh 나는 보석의 완전한 목록을 안다. 프로덕션 시스템의 경우, 이와 같이 작성하면 우리는 수동 설치를 할 필요가 없습니다. 그 목적을 위해 나는 이렇게하고 있었다. –

답변

0

엄격한 검색 후에 답을 찾았습니다. 보석을 설치 한 후 Gem.clear_paths을 사용하면 이제 스크립트에서 사용할 수 있습니다. 총 업데이트 된 코드 :

begin 
require '<gem name here>' 
rescue LoadError 
    puts `gem install <gem name here>` 
    Gem.clear_paths 
    require '<gem name here>' 
end