¿Cómo anular la dependencia de gems?

Tengo 2 gems que dependen de versiones conflictivas de hashie (una requiere ~> 1.2.0 y la otra requiere 3.3.1):

Bundler could not find compatible versions for gem "hashie": In Gemfile: restforce (>= 0) ruby depends on hashie (~> 1.2.0) ruby omniauth (>= 0) ruby depends on hashie (3.3.1) 

Me gustaría conservar ambas gems y usar la versión superior de hashie. ¿Hay alguna manera de anular una de las dependencias de gems?

El consejo estándar es utilizar la versión superior compatible .

Hago de esta manera, pero creo que Bundler tiene un comando definido para ello.

Primero elimine la línea de gem 'omniauth' en su Gemfile. Ejecute bundle install , luego debe volver a agregar la línea con gem 'omniauth' a su Gemfile, ejecute bundle install de nuevo.

Si nos fijamos en Gemfile.lock, esta instalación hashie 2.0.5 , la más alta compatible.

Editado: ¿Por qué funciona?

Primero verifico las dependencias de omniauth con hashie: hashie < 4, >= 1.2 , luego lo mismo con restforce : hashie < 2.1, >= 1.2.0 . En este punto, sé que cualquier versión de hashie entre 1.2 y 2.0.x debe funcionar. Luego debemos eliminar la restricción en Gemfile.lock de continuar usando hassie 3.3.1, eliminando ‘omniauth’ de Gemfile. Después de eso, cuando instale Restforce, el agrupador encontrará la nueva versión compatible con Restforce ‘2.0.5’. Y cuando vuelve a agregar omniauth bundler no actualiza las dependencias que se realizan.

Creo que la bundle update es en realidad lo que estabas buscando. Eso ordena las dependencias e instala diferentes versiones de gems si es necesario, dándole las gems más actualizadas posibles.

Sin embargo, tenga cuidado, ya que la actualización de las gems puede introducir problemas de compatibilidad.