Ruby on rails 满足条件时中断Ruby Find.Find循环
我正在遍历一个包含以下文件的大目录:Ruby on rails 满足条件时中断Ruby Find.Find循环,ruby-on-rails,ruby,find,enumeration,Ruby On Rails,Ruby,Find,Enumeration,我正在遍历一个包含以下文件的大目录: Find.find('/some/path/to/directory/root') do |path| # ...do stuff with files… end 如果(比如)Rails.env.development(Rails.env.development),将此可枚举组的大小限制为500(或以其他方式中断)的好方法是什么 我可以使用计数器,但什么是“Ruby方式”?这是一种方式: Find.find('/some/path/to/directo
Find.find('/some/path/to/directory/root') do |path|
# ...do stuff with files…
end
如果(比如)Rails.env.development(Rails.env.development),将此可枚举组的大小限制为500
(或以其他方式中断)的好方法是什么
我可以使用计数器,但什么是“Ruby方式”?这是一种方式:
Find.find('/some/path/to/directory/root').first(500).each do |path|
# do something
end
这是一种方式:
Find.find('/some/path/to/directory/root').first(500).each do |path|
# do something
end
Find.Find
枚举文件;换言之,它希望在所有这些问题上进行循环。您可以使用以下方法附加索引值:
Find.find(ENV['HOME']).with_index(1) do |path, i|
puts path
break if i > 10
end
puts 'done'
用它来记录你处理了多少
如果你想“全做”:
限制=
do_em_all=(limit==0)
Find.Find(ENV['HOME'])。使用_索引(1)do | path,i|
放置路径
除非(do|em|u all | i 0
您将循环限制
次数,否则中断
您还可以使用或Dir.glob
,它将返回一个条目数组,您可以根据需要对其进行切片
Enumerable在这一点上可能很有用。
Find.Find
枚举文件;换句话说,它希望循环遍历所有文件。您可以使用以下方法附加索引值:
Find.find(ENV['HOME']).with_index(1) do |path, i|
puts path
break if i > 10
end
puts 'done'
用它来记录你处理了多少
如果你想“全做”:
限制=
do_em_all=(limit==0)
Find.Find(ENV['HOME'])。使用_索引(1)do | path,i|
放置路径
除非(do|em|u all | i 0
您将循环限制
次数,否则中断
您还可以使用或Dir.glob
,它将返回一个条目数组,您可以根据需要对其进行切片
可枚举的在这一点上可能很有用。这也有效!这么多文件(数十万个)我认为延迟加载将是一种方式……我现在正在试验它,以确认/否认Find.Find是否真的会延迟运行。它在文档中看起来是这样的,但实际情况似乎有所不同,至少在调试器的实际情况下是这样的。如果我在生产环境中并且不想lim,我不清楚用什么替换
500
结果如何?!?我已经尝试了take(0)
(返回空数组)和take(-1)
(返回错误)。files=if Rails.env.production?;Find.Find(..);else;Find.Find(..)。first(500);end;files.each do | f |。。。;end@farleyknight-一个有条件的!我猜这必须要做。thx!这也行!这么多文件(数十万)我认为延迟加载将是一种方式……我现在正在试验它,以确认/否认Find.Find是否真的会延迟运行。它在文档中看起来是这样的,但实际情况似乎有所不同,至少在调试器的实际情况下是这样的。如果我在生产环境中并且不想lim,我不清楚用什么替换500
结果如何?!?我已经尝试了take(0)
(返回空数组)和take(-1)
(返回错误)。files=if Rails.env.production?;Find.Find(..);else;Find.Find(..)。first(500);end;files.each do | f |。。。;end@farleyknight-有条件的!我想那就行了。谢谢!