Ruby - Digest::Digest is deprecated; Use Digest

前端 未结 3 880
死守一世寂寞
死守一世寂寞 2020-12-09 15:05

I\'ve been getting this warning whenever I run my tests or start rails server.

When I run grep from .rvm folder I see the following:

grep -R \'Digest         


        
相关标签:
3条回答
  • 2020-12-09 15:26

    If you're using bundler, a good way to find out what is causing the problem is to grep through all the gems defined in your 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
    

    Also make sure you aren't locked on a gem version in your Gemfile.

    # change
    gem 'fog', '~> 1.15.0'
    # to
    gem 'fog', '~> 1.0'
    # or omit the version if you are a cowboy/girl
    
    0 讨论(0)
  • 2020-12-09 15:27

    Use OpenSSL::Digest instead of deprecated OpenSSL::Digest::Digest

    0 讨论(0)
  • 2020-12-09 15:37

    Borrowing the reply from this thread

    OpenSSL::Digest::Digest has been discouraged to use from very ancient era such as Ruby 1.8 and finally was deprecated recently.

    If you search for the error message, you will see that a lot of gems, including fog, were still using the deprecated syntax.

    I assume it will take a while before all the gems will be updated. If you came across the deprecation in one of the libs you use, I encourage you to report it to the maintainer.

    Here's a few examples

    • https://github.com/fog/fog/pull/2473
    • https://github.com/alexreisner/geocoder/pull/580
    • https://github.com/ruby/ruby/pull/446

    It's likely your Rails app depends on a gem that is using that old syntax.

    0 讨论(0)
提交回复
热议问题