<p>Other than <code>self.class.send :method, args...</code>, of course.  I'd like to make a rather complex method available at both the class and instance level without duplicating the code.</p>

<hr>

<p><strong>UPDATE:</strong>  </p>

<p>@Jonathan Branam: that was my assumption, but I wanted to make sure nobody else had found a way around.  Visibility in Ruby is very different from that in Java.  You're also quite right that <code>private</code> doesn't work on class methods, though this will declare a private class method:</p>

<pre><code>class Foo
  class &lt;&lt;self
    private
    def bar
      puts 'bar'
    end
  end
end

Foo.bar
# =&gt; NoMethodError: private method 'bar' called for Foo:Class
</code></pre>

Unless I'm misunderstanding, don't you just need something like this:
```
```
class Foo
    private
    def Foo.bar
        # Complex logic goes here
        puts "hi"
    end

    public
    def bar
        Foo.bar
    end
end
```
```
Of course you could change the second definition to use your self.class.send approach if you wanted to avoid hardcoding the class name...