Trouble accessing ruby constants globally


#1

I’m trying to declare a constant in one file and access it in another.
It doesn’t seem to be working.

Here’s my declaration (at the top of a file, remainder of file omitted
for brevity):

NUM_SECTIONS_TO_PARSE = 7

class UserDataFile < File

def self.parse_file(src_name, parse_progress)

    (other stuff follows)

Here’s where i’m trying to access it:

parse_progress = Array.new(::NUM_SECTIONS_TO_PARSE, ::NOT_YET_PARSED)

it fails with the message: uninitialized constant
NUM_SECTIONS_TO_PARSE

I’ve run into this problem several times before and always somehow
hacked my way around it, but I want to get it right this time. Any
help appreciated.

Yoram


#2

Why don’t you write File::NUM_SECTIONS_TO_PARSE


#3

On Nov 26, 2:13 am, “removed_email_address@domain.invalid” removed_email_address@domain.invalid wrote:

    def self.parse_file(src_name, parse_progress)

I’ve run into this problem several times before and always somehow
hacked my way around it, but I want to get it right this time. Any
help appreciated.

Has that file been loaded at the point you try to use that constant?

Fred


#4

Thanks Fred. I guess I did not fully understand the sequence in which
ruby loads files. I put a “require
‘name_of_file_with_constant_declaration’” at the top of the file in
which I am using the constant and that fixed it.

Yoram

On Nov 26, 5:01 am, Frederick C. removed_email_address@domain.invalid