Sha256: 39099e0272939679b178aa320aff66f0a85f3c071b414fe627a54d241dfe13b4

Contents?: true

Size: 1016 Bytes

Versions: 1

Compression:

Stored size: 1016 Bytes

Contents

# frozen_string_literal: true

require_relative '../dbrc'

# The DBI module serves as a namespace only.
module DBI
  # A subclass of DBRC designed to handle .dbrc files in XML format.  The
  # public methods of this class are identical to DBRC.
  class DBRC::XML < DBRC
    require 'rexml/document' # Good enough for small files

    private

    def parse_dbrc_config_file(file = @dbrc_file)
      file = file.is_a?(StringIO) ? file : File.new(file)
      doc = REXML::Document.new(file)

      fields = %w[user password driver interval timeout maximum_reconnects]

      doc.elements.each('/dbrc/database') do |element|
        next unless element.attributes['name'] == database
        next if @user && @user != element.elements['user'].text

        fields.each do |field|
          val = element.elements[field]
          send("#{field}=", val.text) unless val.nil?
        end

        break
      end

      raise Error, "No record found for #{@user}@#{@database}" unless @user && @database
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dbi-dbrc-1.7.0 lib/dbi/dbrc/xml.rb