Using `class_exec` like this (where you are passing args you already have through to the block) seems a bit odd to me.  I would tend to just do:

``` ruby
method_name, visibility = self.method_name, self.visibility
object_singleton_class.class_eval do
end
```

...so that you capture them as locals so that the `class_eval` closure retains access to them.

I don't feel strongly about it, but that's how I tend to do things like this and seems more idiomatic (to me at least).