Class: Object (Ruby 2.3.7)
Description: Class : Object - Ruby 2.3.7

- Home
- Core 2.3.7
- Std-lib 2.3.7
- Downloads

Support for the Ruby 2.3 series has ended. See here for reference.

### Home Classes Methods

### In Files

- digest/digest_conf.rb
- digest/lib/digest.rb

### Parent

BasicObject

### Methods

- #Digest
- #digest_conf

### Class/Module Index

Quicksearch

- Digest
- Digest::Base
- Digest::Class
- Digest::Instance
- Digest::MD5
- Digest::RMD160
- Digest::SHA1
- Digest::SHA2
- Object

No matching classes.

# Object

### Public Instance Methods

Digest(name) → digest_subclass click to toggle source

Returns a Digest subclass by `name` in a thread-safe manner even when on-demand loading is involved.

    require 'digest'

    Digest("MD5")
    # => Digest::MD5

    Digest(:SHA256)
    # => Digest::SHA256

    Digest(:Foo)
    # => LoadError: library not found for class Digest::Foo -- digest/foo

                   # File digest/lib/digest.rb, line 95
    def Digest(name)
      const = name.to_sym
      Digest::REQUIRE_MUTEX.synchronize {
        # Ignore autoload's because it is void when we have #const_missing
        Digest.const_missing(const)
      }
    rescue LoadError
      # Constants do not necessarily rely on digest/*.
      if Digest.const_defined?(const)
        Digest.const_get(const)
      else
        raise
      end
    end

digest_conf(name, hdr = name, funcs = nil, types = nil) click to toggle source

                   # File digest/digest_conf.rb, line 1
    def digest_conf(name, hdr = name, funcs = nil, types = nil)
      unless with_config("bundled-#{name}")
        cc = with_config("common-digest")
        if cc == true or /\b#{name}\b/ =~ cc
          if File.exist?("#$srcdir/#{name}cc.h") and
            have_header("CommonCrypto/CommonDigest.h")
            $defs << "-D#{name.upcase}_USE_COMMONDIGEST"
            return :commondigest
          end
        end

        dir_config("openssl")
        pkg_config("openssl")
        require File.expand_path('../../openssl/deprecation', __FILE__)
        if have_library("crypto")
          funcs ||= name.upcase
          funcs = Array(funcs)
          types ||= funcs
          hdr = "openssl/#{hdr}.h"
          if funcs.all? {|func| OpenSSL.check_func("#{func}_Transform", hdr)} &&
             types.all? {|type| have_type("#{type}_CTX", hdr)}
            $defs << "-D#{name.upcase}_USE_OPENSSL"
            return :ossl
          end
        end
      end
      $objs << "#{name}.#{$OBJEXT}"
      return
    end