Hello!

While I was making my own utility functions, I met an interesting situation.
I want to know how to solve this kind of problem.

I want to use Excel from ruby using OLE.
To make steps simple, I created functions to open excel and close it.

get_excel function has no problem.
I call it like
xl = get_excel

When I'm done with it, I want to close it and unload it from memory.
The right procedure is

xl.quit
xl = nil
GC.start

I want to make a function for the 3 steps.

def quit_excel(xl)
  xl.quit
  xl = nil
  GC.start
end

When I call it, I do

quit_excel(xl) #don't work as expected

As you know, the argument is call-by-value and even if I set nil to xl, the
outer reference is still referencing Excel.
So GC won't collect it.

How can I solve this problem?

Thanks in advance.

Sam