2012-01-25 4 views
1

특정 보석 (예 : term-ansicolor)을 사용하는 Ruby 프로그램이 있으면 필요한 경우 자동으로 보석을 설치할 수 있습니까?필요한 경우 Ruby gem을 자동으로 설치하는 방법?

: 나는 그것을 설치하고 오류가보다 프로그램을 오히려 계속하고 싶습니다 보석 이전에 설치되지 않은 경우,

require 'term/ansicolor' 

과 : 즉

, 프로그램 수행

LoadError: no such file to load -- term/ansicolor 
from (irb):1:in `require' 
from (irb):1 
from :0 

그 목표를 달성하는 가장 적절한 방법은 무엇입니까?

+0

가 자동으로 소프트웨어를 설치, 좋은 생각이 아니다. 1) 소프트웨어를 설치하는 것은 쉬운 일이 아닙니다. 2) 어떤 사람들은 사용자가 악성 코드로 요구하지 않고 다른 소프트웨어를 자동으로 설치하는 소프트웨어를 고려할 수 있습니다. –

답변

3

bundler을 고려해야합니다. Ruby 소프트웨어의 종속성을 관리하는 표준 표준 방법입니다.

+0

보다 정확하게 Bundler 자체를 수동으로 설치하고 싶지 않기 때문에 Bundler의'--standalone' 모드가 필요합니다 (http://stackoverflow.com/a/20215858/1127485). – sschuberth

1

또는 패키지를 젬으로 빌드하고 필요한 젬을 gemspec의 종속 항목으로 지정할 수 있습니다. 그런 다음 보석을 설치할 때 자동으로 설치됩니다.

1

나는이 패턴을 사용하고 : 그 프로그램의 목적 않는 한

require 'rubygems' 
begin 
    gem 'minitest' 
rescue Gem::LoadError 
    Gem.install('minitest') 
    gem 'minitest' 
end 
require 'minitest' 
관련 문제