1

ディレクトリ内の各ファイルに対して、何かを実行してから、結果を別のファイルに書き込む必要があります。タイムアウト例外が発生した場合は、ループの次の繰り返しに進みます。

 require 'timeout'
 timeout_in_seconds = 60

 for fl in Dir.glob('/dir/files')
     begin 
     Timeout::timeout(timeout_in_seconds) do 
 #do something here to get $results
 File.open('new_file', 'w') { |file| file.write(results) }
     end
     rescue Timeout::Error
 next
 end

シェルから実行すると、次のエラーが表示されます。

  syntax error, 'unexpected kRESCUE, expecting kEND
rescue Timeout::Error

これをどのように修正できるかについてのアイデアはありますか?

4

2 に答える 2

1

rescueは終了句の前にある必要があります。

require 'timeout'
timeout_in_seconds = 60

for fl in Dir.glob('/dir/files')
  begin 
    Timeout::timeout(timeout_in_seconds) do 
    #do something here to get $results
    File.open('new_file', 'w') { |file| file.write(results) }
  rescue Timeout::Error

  end
end
于 2013-07-18T18:22:59.833 に答える
0

end上記のコードで2つ逃しました。以下のように書きます。

require 'timeout'
timeout_in_seconds = 60

 for fl in Dir.glob('/dir/files')
     begin 
     Timeout::timeout(timeout_in_seconds) do 
       #do something here to get $results
       File.open('new_file', 'w') { |file| file.write(results) }
     end
     rescue Timeout::Error
      next # although I am not sure why this is needed.
     end
 end
于 2013-07-18T18:22:48.960 に答える