各ファイルでコードブロックを実行できるように、Ruby でループを記述するにはどうすればよいですか?
私は Ruby 初心者ですが、これを行うには do each ループを使用するのがよいという結論に達しました。Ruby
ファイルは、ループするディレクトリとは別のディレクトリから実行されます。
試してみましたDir.foreach
が、うまくいきませんでした。
ベストアンサー1
他の人が言ったように、Dir::foreach
は良い選択肢です。ただしDir::foreach
、Dir::entries
.
常におよび(現在のディレクトリと親ディレクトリ)が含まれます..
。通常はこれらのディレクトリで作業したくないので、Dir::each_child
またはDir::children
(としてma11hew28 が提案) または次のようにします:
Dir.foreach('/path/to/dir') do |filename|
next if filename == '.' or filename == '..'
# Do work on the remaining files & directories
end
Dir::foreach
および(およびもDir::entries
同様に) には、隠しファイルと隠しディレクトリも含まれます。多くの場合、これは必要なことですが、そうでない場合は、それらをスキップするために何らかの操作を行う必要があります。Dir::each_child
Dir::children
あるいは、以下もご覧くださいDir::glob
シンプルなワイルドカードマッチングを提供します:
Dir.glob('/path/to/dir/*.rb') do |rb_filename|
# Do work on files & directories ending in .rb
end