Confused with "include" and require

S

Steve P.

I am getting an error when I include or require a file.

My code was getting too long for one file, so I attempted to separate
out one section into another file, and then "load" the file into the
main file at the appropriate place.

The main body of my ruby script is /home/holocene/ruby/q.rb
The load'ed file is /home/holocene/ruby/questionsaddquestions.rb

The error I am getting is:
/home/holocene/ruby/questionsaddquestions.rb:10: undefined local
variable or method `statequestions' for main:Object (NameError)
from ./q.rb:44:in `load'
from ./q.rb:44

The code before the load, creates the instance "statequestions", and the
code in the load'ed file acts upon the instance "statequestions".

The error tells me that the loaded text does not know the instance has
been created. (Proved because when I re-insert the loaded text, and #
out the load, it works)

Why am I getting an error? I thought "load" essentially is a substitute
for keyed text, as opposed to 'require'.



Best Regards,
Steve.
 
F

Florian Gilcher

I am getting an error when I include or require a file.
=20
My code was getting too long for one file, so I attempted to separate
out one section into another file, and then "load" the file into the
main file at the appropriate place.
=20
The main body of my ruby script is /home/holocene/ruby/q.rb
The load'ed file is /home/holocene/ruby/questionsaddquestions.rb
=20
The error I am getting is:
/home/holocene/ruby/questionsaddquestions.rb:10: undefined local
variable or method `statequestions' for main:Object (NameError)
from ./q.rb:44:in `load'
from ./q.rb:44
=20
The code before the load, creates the instance "statequestions", and = the
code in the load'ed file acts upon the instance "statequestions".
=20
The error tells me that the loaded text does not know the instance has
been created. (Proved because when I re-insert the loaded text, and #
out the load, it works)
=20
Why am I getting an error? I thought "load" essentially is a = substitute
for keyed text, as opposed to 'require'.

=46rom the documentation of 'load'[1]:

"In no circumstance will any local variables in the loaded file be =
propagated to the loading environment."

There are other, better ways to do this for example by separating your =
logic into classes and then get the program going from a small main =
program. Any tutorial about moderately complex ruby programs should =
illustrate how to do this.

require and load do not behave like PHPs #include at all.

Regards,
Florian

[1] http://ruby-doc.org/core/classes/Kernel.html#M005940=
 
S

Steve P.

Florian,

As you indicated, I put my classes in files and then require'd, them and
it works, of course.

I guess as I attain experience, the seeming restrictive way that
"require" works, will seem great. I was naive in thinking that arbitrary
code could be "include"-ed.

Best Regards
Steve.




Florian said:
/home/holocene/ruby/questionsaddquestions.rb:10: undefined local

Why am I getting an error? I thought "load" essentially is a substitute
for keyed text, as opposed to 'require'.

From the documentation of 'load'[1]:

"In no circumstance will any local variables in the loaded file be
propagated to the loading environment."

There are other, better ways to do this for example by separating your
logic into classes and then get the program going from a small main
program. Any tutorial about moderately complex ruby programs should
illustrate how to do this.

require and load do not behave like PHPs #include at all.

Regards,
Florian

[1] http://ruby-doc.org/core/classes/Kernel.html#M005940
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top