CGI and Methods?

Hi all,

I’m trying my hand at scripting cgi in ruby. At the same time I’m
looking at Rails. So far I love ruby. Still reserving comments on
Rails. I have a question though. When coding a cgi script, is it
possible to have methods as I would say in a n my_app.rb or rails app?
Below is a script I’m working on to provide a web interface to our
syslog servers logs for our tech support dept. I would like to DRY this
up a bit. I’m repeating entirely too much code. I would welcome not
only a response to my question, but any other suggestions/criticism to
aid me in my learning process. Thank you very much.


#!/usr/local/bin/ruby -w

Filename: syssearch.cgi


Open log(s) file and do our searching before we begin to send

data back to the browser. This way we don’t cause the browser to time


(in theory…)

Inputs: none

require ‘cgi’

cgi =

Our search params passed

search_string = cgi[‘searchit’]
slogtype = cgi[‘logtype’]
smethod = cgi[‘method’]

Do we have something to search on?

if search_string.empty?
puts “Content-type: text/plain\r\n\r\n\n\nCommSpeed
Log Search\n\n\n”
puts “

Please enter a search criteria

puts “\n\n”

A hash of possible logs

logs = {‘smtp’ => ‘smtp’, ‘mail’ => ‘maillog’, ‘mx’ => ‘mx’, ‘spam’ =>
‘spam’, ‘Dial Up’ => ‘radius’, ‘DHCP’ => ‘dhcp’ }

if smethod == “CAT”

Array to hold our search result matches

results =

Open file and look for our search string"/var/log/"+logs[slogtype],
‘r’).grep(/#{search_string}/).each do |line|
results.push(line) # append it to our results array
end # file is automatically closed

if results.empty?
# No matches found
puts “Content-type:
text/plain\r\n\r\n\n\nCommSpeed Log
puts “

No DHCP Log Results Found!

puts “\n\n”
# Now send results back to browser
puts “Content-type:
text/plain\r\n\r\n\n\nCommSpeed Log
puts “

DHCP Log Results…

  # Print the results
  results.each do |line|
    puts line+"<br>"

# Close HTML
puts "</BODY>\n</HTML>\n"


if smethod == “TAIL”
#Need to figure out how to tail a file with out search scope in place
and feed it to the browser window.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs