Here's a working version that I've made some changes to  (some of the
changes were merely to show a different way of doing things -- but I
got rid of the cgi module since you weren't really making enough use
of it to justify the extra load time):

#!/usr/bin/ruby

My_Title = "Testing Log Read"
Log_File = "/var/log/apache2/error.log"

puts <<EOF
Content-type: text/html

<html>
<head>
<title>#{My_Title}</title>
</head>
<body bgcolor=\"#efefef\">
<table width=\"80%\">
<tr><td>Call records</td></tr>
EOF

if File.exists? Log_File
  lines = File.open(Log_File).readlines
  lines.each_with_index do |line, index|
    index % 2 == 0 ? color = "#dddddd" : color="#cccccc"
    puts "     <tr bgcolor=\"#{color}\">\n      <td>#{index}</td>"
    
    entries = line.chop.split(/\n/)
    entries.each do |field|
      puts "<td>#{field}</td>"
     end
    puts "\n</tr>\n"
   end
else
   puts "No File Found\n"
end
puts "</body>\n</html>"



On 7/14/05, Tristan Knowles <cydonia_1 / yahoo.com> wrote:
> Hi,
> 
> After reading up on Ruby I thought it sounded good and
> decided to learn it so I can manipulate my files on my
> linux server such as log, csv, conf etc.  Anyway, i'm
> a beginner when it comes to programming, so bear with
> me.
> 
> I use the Asterisk PBX and came across this script
> here which reads a csv file and puts each record into
> an html table:
> http://rubyforge.org/snippet/detail.php?type=snippet&id=76
> 
> 
> Anyway, I thought I would then apply this basic
> concept to a log file, but I cannot get it to display
> through a web browser.   Here is my script:
> 
> 
> ===========
> #!/usr/bin/ruby
> 
> My_Title = "Testing Log Read"
> Log_File = "/var/log/apache2/error.log"
> 
> require 'cgi'
> 
> cgi = CGI.new
> printf cgi.header("Content-type" => "text/html\n\n")
> 
> 
> printf "<html>\n<head>\n"
> printf "<title>#{My_Title}</title>\n"
> printf "</head>\n<body bgcolor=\"#efefef\">\n"
> printf "<table width=\"80%\">\n<tr><td>Call
> records</td></tr>\n"
> if File.exists? Log_File
>     lines = File.open(Log_File).readlines
>     lines.each_with_index do |line, index|
>       printf "     <tr%s>\n      <td>%d</td>",
>     index % 2 == 0 ? ' bgcolor="#dddddd"' : '
> bgcolor="#cccccc"', index + 1
>       entries = line.chop.split(/\n/)
>       entries.each_with_index do |field, index|
>         printf "<td>%s</td>", entries
>       end
>      printf "\n</tr>\n"
>     end
> else
>     printf "No File Found\n"
> end
> printf "</body>\n</html>"
> ===========
> 
> 
> If I comment out all the printf commands related to
> web and cgi, and run it through the shell, it seems to
> be taking each line and putting it into <tr><td>
> brackets, but I can't get it to display through a
> browser, it stops at the third printf command.
> 
> 
> I have tried heaps of different things, but feel like
> i'm running around in circles now.
> 
> Any advise with this one?
> 
> 
> Cheers.
> Tristan
> 
> 
> 
> 
> 
> 
> ___________________________________________________________
> Yahoo! Messenger - NEW crystal clear PC to PC calling worldwide with voicemail http://uk.messenger.yahoo.com
> 
> 


-- 
thanks,
-pate
-------------------------
We are often unable to tell people what they need to know, because 
they want to know something else, and would therefore only 
misunderstand what we said
- the Raven   (George MacDonald, Lilith)