test = "a" test.class_eval do # what is going on here??? end
ActiveSupport добавляет class_eval к объекту, чтобы его можно было использовать с чем угодно, не только с классами.
class_eval
В вашем примере то, что он делает, эквивалентно:
test = "a" class << test # do stuff end
фактическая реализация на Rails 2.3 здесь: http://github.com/rails/rails/blob/2-3-stable/activesupport/lib/active_support/core_ext/object/singleton_class.rb
Я думаю, что в ванильном Ruby это незаконно. Например, если вы попробуете это в irb, вы получите NoMethodError.
В консоли rails могут быть добавлены дополнительные методы, которые заставляют строки вести себя как классы.
Ну, на моем компьютере вы получаете NoMethodError, потому что класс String не имеет class_eval метода:)