Tôi đang học cách sử dụng class_eval trong các mô-đun (tôi khá quen thuộc với class_eval) và đã xem qua this helpful class in resource_controller. Trong đó họ có những thứ như thế này:Class_eval << - "end_eval", __FILE__, __LINE__ có nghĩa là gì trong 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
gì __FILE__
và __LINE__
làm trong bối cảnh đó? Tôi biết __FILE__
tham chiếu đến tệp hiện tại, nhưng toàn bộ điều đó làm gì chính xác? Không thực sự biết cách tìm kiếm điều đó :).
Có thể nói rằng việc sử dụng 'define_method' thay vì sẽ không cần loại thủ thuật này, cộng với nó sẽ không mở lỗ hổng bảo mật (xem http://stackoverflow.com/questions/3003328/how-do-i-use-class-eval/3003509#3003509) –