I don't think irb is ignoring the "private" flag -- you're actually
inside the private scope of an Object instance whenever you're
inputting data at the prompt. That means methods are defined on the
current class; i.e., Object. It's easy to test:

(at irb prompt:)

def test
  puts self.id
end

test
  => -542341874 (or similar)

puts self.id
  => -542341874 (or similar)

To show that all 'private' flags are not being ignored, try the
following (again, in irb):

class Foo
  private
  def test
    puts "testing"
  end
end

f = Foo.new
f.test
  => NoMethodError: private method `foo' called for #<A:0xbf50fcf4>
        from (irb):16 

Hope that helps,

Lennon