Ответ 1
http://apidock.com/ruby/Object/public_send
В отличие от send, public_send вызывает только публичные методы.
Пример:
class Klass
private
def private_method
puts "Hello"
end
end
k = Klass.new
k.send(:private_method)
=> "Hello"
k.public_send(:private_method)
=> 'public_send': private method 'private_method' called for
#<Klass:0x007f5fd7159a80> (NoMethodError)