2009-10-27 16 views
5

¿Hay algún código de rubí que pueda usar para instalar una gema de un archivo local, si esa gema no está instalada?ruby: código para instalar gema si falta

estoy pensando que sería algo como:

if !gem_installed("some gem name") 
    system "gem install -l local_copy.gem" 
end 

no sé si existe algo que me permite comprobar si hay joyas como ésta o no ...

+0

Posible duplicado de [Comprobar disponibilidad Gema de rubíes] (http://stackoverflow.com/questions/1032114/check-for-ruby -gem-availability) –

Respuesta

6

disponibilidad verificando está cubierto en este previous StackOverflow Quesiton

begin 
    gem "somegem" 
    # with requirements 
    gem "somegem", ">=2.0" 
rescue Gem::LoadError 
    # not installed 
end 

o

matches = Gem.source_index.find_name(gem.name, gem.version_requirements) 

En cuanto a la instalación, parece que rails uses the system para instalar la gema también

puts %x(#{cmd}) 
+1

'GEM :: LoadError' debe ser' Gem :: LoadError' – Anna

+1

Es posible que desee utilizar 'Gem.clear_paths' después de la llamada del sistema a' gem install ... ', para cargar realmente la gema. Ver http://stackoverflow.com/questions/9384756/after-installing-a-gem-within-a-script-how-do-i-load-the-gem –