2011-12-02 19 views
5

Me parece que lucha con lo que creía que era la funcionalidad estándar de bundler, según the manual La capacidad de specifiy que las gemas deben ser requeridos por ciertas plataformas utilizando el :platforms opción o platforms bloqueTrabajar con los requisitos bundler y diferente joya plataforma

quiero specifcy una versión diferente de una gema depende de la versión de rubí utilizado

source "http://rubygems.org" 
gem "trollop", "~> 1.16.2" 
gem "chronic", "~> 0.6.4" 
gem "highline", "~> 1.6.2" 
gem "colorize", "~> 0.5.8" 
gem "queryparams", "~> 0.0.3" 

platforms :ruby_18 do 
    gem "json" 
    gem "activesupport", "~>2.8.9" 
end 

platforms :ruby_19 do 
    gem "activesupport", "~>3.1.3" 
end 

Sin embargo, este error cuando se ejecutan bundle install

You cannot specify the same gem twice with different version requirements. 
You specified: activesupport (~> 2.8.9) and activesupport (~> 3.1.3) 
+0

puede tener requisitos específicos de la plataforma en un Gemfile, compruebe mi respuesta – klaffenboeck

Respuesta

2

Estoy bastante seguro de que esto no es factible. Un gemfile no puede tener la misma gema especificada con diferentes versiones. No solo dentro de diferentes plataformas, sino incluso en diferentes grupos (group_ruby_18, group_ruby_19) y luego probando bundle install --without group_ruby_18

Esto también fallará.

Tuve este problema antes y la única solución que encontré fue tener 2 GEMFILES diferentes.

+2

Gracias, parece extraño, habría pensado que esto sería un requisito bastante común. – Rob

3

No necesita 2 Gemfiles diferentes para lograr requisitos de gemas específicos de la plataforma. Del cheque para el RUBY_VERSION y poner sus joyas en una especie de cláusula condicional:

if(defined?(JRUBY_VERSION)) 
    gem 'warbler' 
else 
    case(RUBY_VERSION) 
    when('1.8.7') 
    gem 'ruby-debug' 
    when('1.9.2') 
    gem 'ruby-debug19' 
    when('1.9.3') 
    gem 'debugger' 
    end 
end 

Que debe hacer el truco.

Con recuerdos,

Cuestiones relacionadas