def _generate_identifier
      # Cut off everything from the line number onward. That way, the identifier
      # does not change when the subscription block moves to a different line.
      index = _path.rindex(/:\d+:/) - 1
      path = _path[0..index]

      raise Errors::SubscriptionError, "Invalid path: #{path}" unless File.exists?(path)

      Digest::MD5.hexdigest("#{path}:#{event_name}:#{name}").to_sym
    end
def _generate_identifier
      # Cut off everything from the line number onward. That way, the identifier
      # does not change when the subscription block moves to a different line.
      index = _path.rindex(/:\d+:/) - 1
      path = _path[0..index]

      raise Errors::SubscriptionError, "Invalid path: #{path}" unless File.exists?(path)

      Digest::MD5.hexdigest("#{path}:#{event_name}:#{name}").to_sym
    end
Generates a unique identifier for this subscription which will be used to
 "serialize" it.

 The goal here is to generate a identifier that is the same across different
 processes and servers and that ideally changes infrequently between
 application versions, but when it does change, it should do so predictably.