On Apr 27, 6:35   ᮮ 
> [Note:         
>
> Hello,
>
> I have the following problem.
>
> There exists a really ugly debug log file which has mysql query statements.
> Looking through the log makes it hard to understand esp while providing
> reports to bosses/mgrs etc. so I have decided to make it more "English". I
> have over 40 queries, each that can be called in different ways, for
> instance:
>
> 1) select foo1, foo2 from foo where foo1=... etc
> 2) select foo1 from foo where foo1= etc
>
> The basic parsing would be /select(.*)\s+from\s+(.*)(?:\s+where\s+(.*)$)/ts a bit more advanced, but its solved and hence not a problem
>
> #captures[1] will be the table name
>
> 1) Each table/view is its own class with a to_english method that does the
> translation

Do you really need this? It may be overkill if the only thing you will
do in each of these classes is a to_english method. You could perhaps
use a singleton class that contains all the translations.

> 2) An abstract class that parses a line from the log file, extracts the
> table or view (in this case foo) from the match and generates an object
> using eval "#{table.capitalize}.new captures"

To avoid eval, use
  Kernel.const_get(table.capitalize).send(:to_english)
where to_english is a class method.