I suspect syntax got me this time

Hi

    I have created a class with a class method. I am trying to call it
from a different class and I get the "uninitialized constant" error.
Could some body help me out.

Class with class method

# To change this template, choose Tools | Templates
# and open the template in the editor.

require "log4r/logger"

class XELogger < Log4r::Logger

  def XELogger.get(fullname)
    begin
      return self.superclass.get(fullname)
    rescue NameError
      return Log4r::Logger.new(fullname , nil , true , false)
    end
  end

end

Calling class

# To change this template, choose Tools | Templates
# and open the template in the editor.

#require "rubygems"
require "webrick"
require "log4r"
require "monitor"
#require "XELogger"
require "rexml/document"

class XmlEngine < WEBrick::HTTPServlet::FileHandler

  include MonitorMixin

  # this is a BigNum
  @@serialVersionUID = 1

# @xmlParser
# @htmlParsers
  @hasXmlTemplate
  @stcRead
  @formatHashtable
  @replaceHashtable
# @strDriverDefault
# @strUrlDefault
# @strBaseLocation
# @strFormatFile
# @fileXmlEngineFormat
# @fileBaseLocation
# @sessionLanguage
# @strReplaceWhat
# @strReplaceWith
# @isResource = false

# @configXMLEngine

# These loggers (xmlEngine and reloadXml) should be instantated before
they can
# used.

  @@log4rXmlEngine = XELogger.get['xmlEngine']
# @@log4rReloadXml = XELogger.get('reloadXml')

  # Constructor
  # ToDo: Assign this argument to the instance variable
"connectionProvider"
  def initialize(connectionProvider)
    init
  end

# ToDo: Needs testing
  private
  def loadParams
    @replaceHashtable = Hash.new # Hash with a string as key and Array
as value

    @htmlReplaceVector = Array.new # Array of ReplaceElement objects
    @htmlReplaceVector.push(ReplaceElement.new("&", "&amp;")).
      push(ReplaceElement.new("\"", "&quot;")).
      push(ReplaceElement.new("\n", " ")).
      push(ReplaceElement.new("\r", " ")).
      push(ReplaceElement.new("<", "&lt;")).
      push(ReplaceElement.new(">", "&gt;")).
      push(ReplaceElement.new( "®", "&reg;")).
        push(ReplaceElement.new( "€", "&euro;")).
          push(ReplaceElement.new( "ñ", "&ntilde;")).
          push(ReplaceElement.new( "Ñ", "&Ntilde;"))
    @replaceHashtable[:html] = @htmlReplaceVector

    @foReplaceVector = Array.new
    @foReplacement.push(ReplaceElement.new("&", "&#38;")).
      push(ReplaceElement.new("<", "&#60;")).
      push(ReplaceElement.new(">", "&#62;")).
      push(ReplaceElement.new("\\", "&#92")).
      push(ReplaceElement.new("º", "&#186")).
      push(ReplaceElement.new("ª", "&#170")).
      push(ReplaceElement.new("®", "&#174;")).
      push(ReplaceElement.new("€", "&#8364;")).
      push(ReplaceElement.new("\n", "&#10;"))
    @replaceHashtable[:fo] = @foReplaceVector

    @htmlPreformattedReplaceVector = Array.new
    @htmlPreformattedReplaceVector.push(ReplaceElement.new("&",
"&amp;")).
      push(ReplaceElement.new("\"", "&quot;")).
      push(ReplaceElement.new("<", "&lt;")).
      push(ReplaceElement.new(">", "&gt;")).
      push(ReplaceElement.new("\n", "<BR>")).
      push(ReplaceElement.new("\r", " ")).
      push(ReplaceElement.new("®", "&reg;"))
    @replaceHashtable[:htmlPreformatted] = @htmlPreformattedVector

    @htmlHelpReplaceVector = Array.new
    @htmlHelpReplaceVector.push(ReplaceElement.new("\n", "<BR>")).
      push(ReplaceElement("\r", ""))
    @replaceHashtable[:htmlHelp] = @htmlHelpReplaceVector

    @htmlPreformattedTextareaReplaceVector = Array.new
    @htmlPreformattedTextareaReplaceVector.push(ReplaceElement.new("&",
"&amp;")).
      push(ReplaceElement.new("\"", "&quot;")).
      push(ReplaceElement.new("<", "&lt;")).
      push(ReplaceElement.new(">", "&gt;")).
      push(ReplaceElement.new("®", "&reg;"))
    @replaceHashtable[:htmlPreformattedTextarea] =
@htmlPreformattedTextareaReplaceVector

    @htmlJavascriptReplaceVector = Array.new
    @htmlJavascriptReplaceVector.push(ReplaceElement.new("'", "\\'")).
      push(ReplaceElement("\"", "&quot;")).
      push(ReplaceElement("\n", "\\n"))
    @replaceHashtable[:htmlJavascript] = @htmlJavascriptReplaceVector

  end

  # Simili to Java Servlet's lifecycle method init.
  public
  def init()
    @hasXmlTemplate = Hash.new # Vector of XmlTemplates
    @stcRead = Stack.new # Stack of Xml Templates not Read
    @formatHashtable = Hash.new # Hash table with String as key and
                                  # FormatCouple as value
    # ToDo instantiate XmlParser
# @xmlParserFormat =

  end

  # This mesage reads a file that defines a XmlTemplate without any
discard
  def readXmlTemplate(strXmlTemplateFile)

  end

  # This function reads a file that defines a XmlTemplate with a vector
of
  # discard
  def readXmlTemplate(strXmlTemplateFile, *discard)
    # synchronize {put the code to be synchronized here}
  end

  # This function adds the xmltemplate to the list of xmltemplates and
read all
  # the XmlTemplates.
  def readAllXmlTemplates(strXmlTemplateName, strXmlTemplateFile,
*discard)

  end

  # This function add the XmlTemplate to the list of XmlTemplates or
return an
  # existing XmlTemplate if it was found in the list.
  private
  def addXmlTemplate(strXmlTemplateName, strXmlTemplateFile, *discard)

  end

  # This function reads the XmlTemplate
  def readFile(xmlTemplate)

  end

  public
  def do_GET(request,response)
    puts "here in do_get"
  end

  def do_POST(request,response)
    puts "here in do_post"
  end

  def connect

  end

  def closeConnections

  end

  def destroy

  end

  # Will configure log4r from the xml configure file passed
  # The file object can be just the name of the file if the
  # file is in the same folder, if otherwise file object
  # should be a complete path to file's location.
  # ToDo: Needs Tesing.
  def self.configureLog4r(file)
    if file !=nil
      Configurator.load_xml_file(file)
    else
      Configurator.load_xml_file(log4r.xml)
    end
  end

# Courtesy of:
http://rubynugs.blogspot.com/2006/12/creating-java-like-main-method-in-ruby.html

# do
# if __FILE__ == $0 && ARGV.length < 1
# @i
# configureLog4r(nil)
# @strFile

···

#
# puts "main"
#
# else if __FILE__ == $0 && ARGV.length > 1
#
#
# end
#
# end

  # XmlEngineNP: classes for compatibilizing with the Reports version
  def readReportConfiguration(strReportFile)

  end

  def readReportConfiguration(strReportFile, *discard)

  end

# # Log4r::Logger's get method throws a NameError when it cannot find
the
# # specified log file. This method will help create a new log file
when
# # one doesn't exist. ToDo: Create a subclass of Logger class and
override
# # the Logger class's get method.
# def fetchLogger(_name)
# begin
# return @newLogFile = Log4r::Logger.get(_name)
# rescue NameError
# return @newLogFile = Log4r::Logger.new(_name , nil , true ,
false)
# end
# end

end
--
Posted via http://www.ruby-forum.com/\.

Venkat Akkineni wrote:

    I have created a class with a class method. I am trying to call it
from a different class and I get the "uninitialized constant" error.

You need to show the *exact* error message you get, and point out which
line of the source this corresponds to. Posting hundreds of lines of
irrelevant source is not a good idea. Keep removing lines until you have
a 10-line program which still has the problem.

# To change this template, choose Tools | Templates
# and open the template in the editor.

#require "rubygems"
require "webrick"
require "log4r"
require "monitor"
#require "XELogger"
require "rexml/document"

You commented out 'require "XELogger"' above. So if the constant (class)
XELogger is defined in that file, and the error message is saying that
constant XELogger is unknown, why are you surprised?

···

--
Posted via http://www.ruby-forum.com/\.