ActionView module declared several times

The ActionView module is declared several times in the Rails source:

rails/actionpack/lib/action_view/base.rb,rails/actionpack/lib/
action_view/buffers.rb,rails/actionpack/lib/action_view/digestor.rb,
rails/actionpack/lib/action_view/helpers/asset_tag_helpers/
asset_paths.rb, and the list goes on and on.

How is it able to be declared like this in multiple files without the
previous definition of it being overwritten?

On 3 September 2012 19:08, John M. [email protected] wrote:

The ActionView module is declared several times in the Rails source:

rails/actionpack/lib/action_view/base.rb,rails/actionpack/lib/
action_view/buffers.rb,rails/actionpack/lib/action_view/digestor.rb,
rails/actionpack/lib/action_view/helpers/asset_tag_helpers/
asset_paths.rb, and the list goes on and on.

How is it able to be declared like this in multiple files without the
previous definition of it being overwritten?

It is a basic feature of Ruby that you can re-open a class definition
and add or redefine methods.

Colin

2012/9/3 John M. [email protected]


You received this message because you are subscribed to the Google G.
“Ruby on Rails: Talk” group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit https://groups.google.com/groups/opt_out.

It’s kind of
“metaprogramminghttp://en.wikipedia.org/wiki/metaprogrammingcreating
code at runtime that defines new methods. In fact, in a sense all Ruby
programming is metaprogramming, since even a class definition is not a
declaration as it is in Java but actually code that is executed at
runtime.
Given that this is true, you might wonder whether you can modify a
class
at runtime. In fact you can, by adding or changing instance methods or
class methods, even for Rubys built-in classes”.

This is citation from book Engineering Long-Lasting Software: An Agile
Approach Using SaaS and Cloud
Computinghttp://www.amazon.com/dp/B006WU5G4C

Yes, it is a basic feature of ruby that you can reopen a class
definition. I forgot about that.

The metaprogramming nature of ruby is the most advantage feature of
ruby.

Thank You,
Uma Mahesh.