A
aidy
Hi,
I have a logger class wrapped up a module as not to conflict with the
Ruby logger class
<SNIP>
module Utilities
class Logger
require "rexml/document"
include REXML
def initialize
@doc = Document.new
xmldecl = XMLDecl.default
@doc.add(xmldecl)
@root = @doc.add_element 'testresults'
end
def test_case(test_name, test_desc)
@test = @root.add_element 'test'
@test.attributes["id"] = test_name
des= @test.add_element 'description'
des.text = test_desc
end
#cannot have a test result without a test case
def test_results(msg)
if yield
test_status = @test.add_element 'teststatus'
test_status.text = 'PASS'
else
fail = @test.add_element 'teststatus'
fail.text = 'FAIL'
fail_msg = @test.add_element 'failmessage'
fail_msg.text = msg
end
end
def write_xml_to_file(file_name="C:/test_results.xml")
@doc.write($stdout, 1)
@doc.write(File.open(file_name,"w"))
end
end
end
</SNIP>
I use this logger in various classes and modules, and I feel ashamed
by using a global variable
$log = Utilities::Logger.new
I have tried using an attr_reader on @root without success.
Is there anyway I can use this class in my project without using a
global?
Regards
Aidy
I have a logger class wrapped up a module as not to conflict with the
Ruby logger class
<SNIP>
module Utilities
class Logger
require "rexml/document"
include REXML
def initialize
@doc = Document.new
xmldecl = XMLDecl.default
@doc.add(xmldecl)
@root = @doc.add_element 'testresults'
end
def test_case(test_name, test_desc)
@test = @root.add_element 'test'
@test.attributes["id"] = test_name
des= @test.add_element 'description'
des.text = test_desc
end
#cannot have a test result without a test case
def test_results(msg)
if yield
test_status = @test.add_element 'teststatus'
test_status.text = 'PASS'
else
fail = @test.add_element 'teststatus'
fail.text = 'FAIL'
fail_msg = @test.add_element 'failmessage'
fail_msg.text = msg
end
end
def write_xml_to_file(file_name="C:/test_results.xml")
@doc.write($stdout, 1)
@doc.write(File.open(file_name,"w"))
end
end
end
</SNIP>
I use this logger in various classes and modules, and I feel ashamed
by using a global variable
$log = Utilities::Logger.new
I have tried using an attr_reader on @root without success.
Is there anyway I can use this class in my project without using a
global?
Regards
Aidy