Ich lerne, wie man class_eval in Modulen verwendet (ich bin etwas vertraut mit class_eval) und stieß auf this helpful class in resource_controller. Dort haben sie Dinge wie diese:Was bedeutet class_eval << - "end_eval", __FILE__, __LINE__ in 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
Was bedeutet __FILE__
und __LINE__
in diesem Zusammenhang tun? Ich weiß __FILE__
verweist auf die aktuelle Datei, aber was genau macht das Ganze? Ich weiß nicht wirklich, wie ich danach suchen soll.
Es ist vielleicht gut zu erwähnen, dass die Verwendung von 'define_method' stattdessen diese Art von Tricks plus benötigt Es werden keine Sicherheitslücken geöffnet (siehe http://stackoverflow.com/questions/3003328/how-doi-i-use-class-eval/3003509#3003509) –