>   class Foo
>     def bar(fn)
>       eval "self.#{fn}"
>     end
>   end
>
> ...nicer way of doing the bar(fn) stuff. Any ideas?
>

Replace eval "self.#{fn}" with method(fn).call