------art_106943_29357234.1230391035947
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

According to Wikipedia, a monkey patch[1] is:

> a way to extend or modify the runtime code of dynamic languages [...]
> without altering the original source code.

The following statement from the same entry confused me:

> In Ruby, the term monkey patch was misunderstood to mean any dynamic
> modification to a class and is often used as a synonym for dynamically
> modifying any class at runtime.

I would like to know the exact meaning of monkey patching in Ruby. To be
more specific, I would like to know the answers to the following questions:

1- What does "runtime code" refer to in Ruby?

2- Are "monkey patching" and "open classes" different terms for the same
thing?

3- Is the following considered as monkey patching, or is it something else?

class String
  def foo
    "bar"
  end
end

Regards,
Yaser Sulaiman

P.S. I originally posted this question on stackoverflow[2]. There are some
good
answers over there, but I'm still kinda confused. I hope that someone in the
Ruby
community can clarify this issue for me.

[1]: http://en.wikipedia.org/wiki/Monkey_patch
[2]:
http://stackoverflow.com/questions/394144/what-does-monkey-patching-exactly-mean-in-ruby

------art_106943_29357234.1230391035947--