Estoy aprendiendo a usar class_eval en los módulos (estoy algo familiarizado con class_eval) y me encontré con this helpful class in resource_controller. Allí tienen cosas como esta:¿Qué significa class_eval << - "end_eval", __FILE__, __LINE__ en Ruby?
class_eval <<-"end_eval", __FILE__, __LINE__
def #{block_accessor}(*args, &block)
unless args.empty? && block.nil?
args.push block if block_given?
@#{block_accessor} = [args].flatten
end
@#{block_accessor}
end
end_eval
¿Qué __FILE__
y __LINE__
hacer en ese contexto? Sé que __FILE__
hace referencia al archivo actual, pero ¿qué hace exactamente todo eso? Realmente no sé cómo buscar eso :).
Podría ser bueno mencionar que usar 'define_method' en su lugar no necesitará este tipo de trucos, más no abrirá vulnerabilidades (ver http://stackoverflow.com/questions/3003328/how-do-i-use-class-eval/3003509#3003509) –