I would like to reference constants and classes defined in module
People in the class Schedule.
class Login is not part of any module (other than the root).
doing this:
class Schedule
include People
def a_method
# Worker.new won’t work
People::Worker.new # works
end
end
doesn’t work.
Is there a way to include the module People so that I don’t need to
prefix People:: for only one particular class?
Also, why doesn’t what I tried work? Doesn’t include copy in the
constants, and aren’t classes just constants?
On Dec 25, 2006, at 12:20 PM, S. Robert J. wrote:
People::Worker.new # works
end
end
Is there a way to include the module People so that I don’t need to
prefix People:: for only one particular class?
I don’t know why it doesn’t work for you – it works fine for me.
module People
class Worker
end
end
class Schedule
include People
def a_method
p Worker.new
end
end
Schedule.new.a_method
#
Regards, Morton
On Dec 25, 2006, at 12:20 PM, S. Robert J. wrote:
I would like to reference constants and classes defined in module
People in the class Schedule.
Here’s an example that works fine for me:
module People
POPULATION = 1234567
end
class Schedule
include People
def x
p POPULATION
end
end
s = Schedule.new
s.x
#=> 1234567
p VERSION
#=> “1.8.5”
S. Robert J. wrote:
Is it possible that Rails changes things somehow?
I think I know - the autoloader can’t find them then!
Does that make any sense? The autoloader can find them if I include
People in the global namespace, but not if I include it in the class?!
If so, is there a workaround?
Is it possible that Rails changes things somehow?
I think I know - the autoloader can’t find them then!
On Tue, Dec 26, 2006 at 07:15:04AM +0900, S. Robert J. wrote:
S. Robert J. wrote:
Is it possible that Rails changes things somehow?
I think I know - the autoloader can’t find them then!
Does that make any sense? The autoloader can find them if I include
People in the global namespace, but not if I include it in the class?!
If so, is there a workaround?
Yes it makes sense and you are probably right. The workaround is to
explicitly require the file
e.g:
require ‘people’ # Or whatever the file is