[ruby-it] Distruttore di classi

Michele Casari lablinux a gmail.com
Mar 16 Set 2008 12:42:31 CEST


La classe mi serve per gestire file excel, il distruttore mi serve per 
chiuder l'area di lavoro e il file, dopo la chiusura libero le risorse 
impostando a nil.
La GC non mi rilasciava il file excel appena creato quando o mettevo a 
nil l'istanza della classe Xls.
Comunque la soluzione c'è:

# ------------- CLASSE
require 'win32ole'
class Xls
  attr_reader :nome_file,  :sheet  , :excel, :workbook
  def initialize(nomefile, fogli)
     [...}
  end

   def elabora
    yield
    fine()
  end

  def scrivi_cella(row, col, valore)
    @sheet.cells(row,col).value = valore
  end

  [...]


private
  def fine
    @workbook.close
    @workbook = nil
    @excel.Quit
    @excel = nil
    GC.start #Force Garbage Colelction
  end
end
# ----------------------  EOF

x = Xls.new("#{RAILS_ROOT}/public/temp/test_001.xls", fogli)
x.elabora do
  x.scrivi_cella(1,1, 'michele')
end


P.S. non ho incollato tutta la classe per motivi di spazio, se ti serve
ti faccio un allegato.

Ciao Michele.
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list