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("&", "&")).
push(ReplaceElement.new("\"", """)).
push(ReplaceElement.new("\n", " ")).
push(ReplaceElement.new("\r", " ")).
push(ReplaceElement.new("<", "<")).
push(ReplaceElement.new(">", ">")).
push(ReplaceElement.new( "®", "®")).
push(ReplaceElement.new( "€", "€")).
push(ReplaceElement.new( "ñ", "ñ")).
push(ReplaceElement.new( "Ñ", "Ñ"))
@replaceHashtable[:html] = @htmlReplaceVector
@foReplaceVector = Array.new
@foReplacement.push(ReplaceElement.new("&", "&")).
push(ReplaceElement.new("<", "<")).
push(ReplaceElement.new(">", ">")).
push(ReplaceElement.new("\\", "\")).
push(ReplaceElement.new("º", "º")).
push(ReplaceElement.new("ª", "ª")).
push(ReplaceElement.new("®", "®")).
push(ReplaceElement.new("€", "€")).
push(ReplaceElement.new("\n", " "))
@replaceHashtable[:fo] = @foReplaceVector
@htmlPreformattedReplaceVector = Array.new
@htmlPreformattedReplaceVector.push(ReplaceElement.new("&",
"&")).
push(ReplaceElement.new("\"", """)).
push(ReplaceElement.new("<", "<")).
push(ReplaceElement.new(">", ">")).
push(ReplaceElement.new("\n", "<BR>")).
push(ReplaceElement.new("\r", " ")).
push(ReplaceElement.new("®", "®"))
@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("&",
"&")).
push(ReplaceElement.new("\"", """)).
push(ReplaceElement.new("<", "<")).
push(ReplaceElement.new(">", ">")).
push(ReplaceElement.new("®", "®"))
@replaceHashtable[:htmlPreformattedTextarea] =
@htmlPreformattedTextareaReplaceVector
@htmlJavascriptReplaceVector = Array.new
@htmlJavascriptReplaceVector.push(ReplaceElement.new("'", "\\'")).
push(ReplaceElement("\"", """)).
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/.