ruby warnings ruby-2.1

Ruby-Digest:: Digest está en desuso; Use Digest



warnings ruby-2.1 (3)

Recibo esta advertencia cada vez que ejecuto mis pruebas o inicio el servidor de rieles.

Cuando ejecuto grep desde la carpeta .rvm veo lo siguiente:

grep -R ''Digest::Digest'' . ./rubies/ruby-2.1.0/lib/ruby/2.1.0/openssl/digest.rb: warn(''Digest::Digest is deprecated; Use Digest'') - additional references to openssl and ruby 2.1.0

Parece que es un error de Ruby 2.1.0. ¿Hay alguna solución? No hay parches disponibles aún por lo que puedo decir.

Si bien mi aplicación utiliza Niebla y un montón de otras gemas que tienen problemas relacionados con este mensaje, estoy usando versiones parcheadas que no tienen el error. Entonces creo que Ruby tiene la culpa aquí.


Si usas bundler, una buena forma de averiguar qué está causando el problema es grep a través de todas las gemas definidas en tu Gemfile :

# grep (ack or ag) the problem code bundle show --paths | xargs grep -r Digest::Digest # here was my output ~/.gem/ruby/2.1.0/gems/fog-1.15.0/lib/fog/cloudstack.rb: @@digest = OpenSSL::Digest::Digest.new(''sha1'') ~/.gem/ruby/2.1.0/gems/fog-1.15.0/lib/fog/core/hmac.rb: @digest = OpenSSL::Digest::Digest.new(''sha1'') ~/.gem/ruby/2.1.0/gems/fog-1.15.0/lib/fog/core/hmac.rb: @digest = OpenSSL::Digest::Digest.new(''sha256'') # update appropriate gems (in my case fog) gem install fog bundle update fog

También asegúrese de que no esté bloqueado en una versión gema en su Gemfile.

# change gem ''fog'', ''~> 1.15.0'' # to gem ''fog'', ''~> 1.0'' # or omit the version if you are a cowboy/girl


Tomando prestada la respuesta de este hilo

Se desaconsejó el uso de OpenSSL :: Digest :: Digest desde tiempos muy remotos, como Ruby 1.8, y finalmente fue desaprobado recientemente .

Si busca el mensaje de error, verá que muchas gemas, incluida la niebla , seguían usando la sintaxis en desuso.

Supongo que pasará un tiempo antes de que se actualicen todas las gemas. Si encontraste la desaprobación en una de las librerías que utilizas, te animo a que la informes al mantenedor.

Aquí hay algunos ejemplos

Es probable que su aplicación Rails dependa de una gema que esté usando esa sintaxis anterior.


Use OpenSSL::Digest lugar de obsoleto OpenSSL::Digest::Digest