hacks/dumpable_proc |
class DumpableProc < DelegateClass |
Example:
y = 42
dp = DumpableProc.new %{ |x|
p x, y
}
dp.call(1) #=> 1
#=> 42
dump_str = Marshal.dump(dp)
puts dump_str #=> u:DumpableProc0:538120024: |x|
#=> p x, y
dp2 = Marshal.load(dump_str)
dp2.call(2) #=> 2
#=> 42
DumpableProc.release(dp.id)
Public Methods |
Return the id of a DumpableProc. When you are done with a DumpableProc, and you will not need to _load it again, pass this value to release(). Releasing an id will free memory associated with the DumpableProc; if the DumpableProc is _load'ed again after it has been released, then it will be re-created with a new binding.
Create a new DumpableProc.
| str | a string representing the proc |
|---|---|
| the_binding | the binding to create the proc in (default is to create the proc in the caller's binding) |
| id | an id to be associated with the proc; should be left nil |
Determine if a DumpableProc is bound to its original binding, or whether it has been given a new binding.
Returns: true if the proc has its original binding, false otherwise.
Return the (non-dumpable) Proc object associated with this DumpableProc. This is necessary for functions that expect to receive a real proc object and not a delegate object.
Dump a DumpableProc to a string.
Load a DumpableProc from a string.
Release a binding associated with a DumpableProc. If you do not call this method, then you will leak memory.