In this example, as i understand that included block is running when
Exclaimable module is included in Person and after a Person class
methods
are ‘initialized’
require ‘active_support/concern’
module Exclaimable
extend ActiveSupport::Concern
included do
self.new.hello
end
end
class Person
include Exclaimable
def hello
puts ‘person hello’
end
end
On Friday, 10 October 2014 09:08:29 UTC-4, rusik wrote:
Hello all.
In this example, as i understand that included block is running when
Exclaimable module is included in Person and after a Person class
methods are ‘initialized’
No. See below for additional information, but if include Exclaimable
is
the first thing in a class definition, only methods defined on the
declaring class’s superclass (Object, in the case of Person) will be
available.
But i see that, Person class doesn’t have hello method, why ? Please,
help !
The stuff between class Person and end is just code. The hello
method
isn’t available yet because it hasn’t been DEFINED yet when include Exclaimable executes.
ActiveSupport::Concern adds the included do idiom, to make
situations
where one module depends on another more straightforward. See the last
section of the docs for more: