Ruby说IOError:封闭流?

时间:2016-03-29 18:16:50

标签: ruby-on-rails exception ioerror

我的程序仅在1台Linux(14.04.3)机器上有以下问题,它运行的是Ruby 1.9.3。 该程序在所有其他Linux机器上运行时没有错误(14.04.3)。 任何帮助表示赞赏。

程序

def test_image_data
(0..@ptif_wac_true.pages-1).each do |pagenum|
  @ptif_wac_true.page = pagenum
  @ptif_wac_test.page = pagenum
  [[0,0],[@ptif_wac_true.x_tiles-1,@ptif_wac_true.y_tiles-1]].each do |tile_x,tile_y|
    tile_true = @ptif_wac_true.get_tile(tile_y,tile_x).open.read

    tmp_true = Tempfile.new("tile_true_#{pagenum}_#{tile_x}_#{tile_y}", @tmp_dir)
    begin
      tmp_true.write(tile_true)
    ensure
      tmp_true.close
    end

    tile_test = @ptif_wac_test.get_tile(tile_y,tile_x).open.read

    tmp_test = Tempfile.new("tile_test_#{pagenum}_#{tile_x}_#{tile_y}", @tmp_dir)
    begin
      tmp_test.write(tile_test)
    ensure
      tmp_test.close
    end

    template = "convert '#{tmp_true.path}' '#{tmp_test.path}' -compose Difference -composite -colorspace gray -format '%[fx:mean*100]' info:"
    assert_operator( `#{template}`.to_f,:<=, 0.55, "Page: #{pagenum} TileX #{tile_x} TileY #{tile_y} does not look right!")

    tmp_true.unlink #lets cleanup after done, its a good practice
    tmp_test.unlink
  end
end

我该怎么办才能解决这个问题? 以下是我得到的错误。

错误:

test_image_data(Pnm2ptifTest):
 IOError: closed stream
./test_pnm2ptif:155:in `read'
./test_pnm2ptif:155:in `block (2 levels) in test_image_data'
./test_pnm2ptif:154:in `each'
./test_pnm2ptif:154:in `block in test_image_data'
./test_pnm2ptif:151:in `each'
./test_pnm2ptif:151:in `test_image_data'

0 个答案:

没有答案