def salt_value(value)
        if value.is_a?(Proc)
          value.call
        elsif value.respond_to?(:salt)
          value.salt
        else
          value.to_s
        end
      end
def salt_value(value)
        if value.is_a?(Proc)
          value.call
        elsif value.respond_to?(:salt)
          value.salt
        else
          value.to_s
        end
      end
Evaluates one of several different types of methods to determine the
 value of the salt.  Methods can be one of the following types:
 * Method / Proc
 * String
 * Object that responds to :salt