@@first_time = true
puts "Oi, you don't work here"
@@first_time = false
NoMethodError: private method `private_bar'
Oi, you don't work
What do you expect from a language that lets you write
String = Array puts String.new.inspect #=> 
class Fixnum def +(b) self-b end end puts 1+2 #=> -1
On a more serious note, almost nothing is forbidden in Ruby : it makes it easier to experiment and to learn Ruby inner workings. In some cases, it makes it possible to write more concise code or get "magical" behaviors that would be harder or impossible to reproduce with a stricter language.
In your example, it's possible to call a private method, but you cannot use the usual syntax.