Tag: lazy loading

Ruby中的懒惰评估

我有Ruby的情况,可能需要创建一个对象,但它不确定。 由于对象的创建可能代价高昂,因此我并不急于创建它。 我认为这是延迟加载的明显案例。 如何定义仅在有人向其发送消息时才创建的对象? 该对象将在块中创建。 有没有办法在Ruby中进行简单的延迟加载/初始化? 这些东西是否支持这些东西,它们为各种懒惰的对象初始化提供了不同的解决方案? 谢谢你的建议!

Ruby中的线程安全枚举器

TLDR:Ruby中是否有一个线程安全的Enumerator类版本? 我想做什么: 我在Ruby On Rails应用程序中有一个方法,我希望同时运行。 该方法应该创建一个包含来自站点的报告的zip文件,其中zip中的每个文件都是PDF。 从html到PDF的转换有点慢,因此需要multithreading。 我的期望如何: 我想使用5个线程,所以我想我会在线程之间有一个共享的枚举器。 每个线程都会从Enumerator中弹出一个值,并运行do stuff。 以下是我认为它会起作用的方式: t = Zip::OutputStream::write_buffer do |z| mutex = Mutex.new gen = Enumerator.new{ |g| Report.all.includes(“employee” => [“boss”, “client”], “projects” => {“project_owner” => [“project_team”]}).find_each do |report| g.yield report end } 5.times.map { Thread.new do begin loop do mutex.synchronize do @report = gen.next end title = @report.title […]