require and the site_ruby directory...

  • Thread starter Just Another Victim of the Ambient Morality
  • Start date
J

Just Another Victim of the Ambient Morality

I placed a Ruby script in the site_ruby directory, expecting to find it
from other ruby scripts using the "require" keyword but, to my surprise, it
does nothing.
Do I have no idea how "require" works? How does "require" find files to
load?
Thank you...


lib/ruby/site_ruby/1.8/file_I_want_to_load.rb
 
J

Just Another Victim of the Ambient Morality

Just Another Victim of the Ambient Morality said:
I placed a Ruby script in the site_ruby directory, expecting to find it
from other ruby scripts using the "require" keyword but, to my surprise,
it does nothing.
Do I have no idea how "require" works? How does "require" find files
to load?
Thank you...

Okay, it's failling specifically for mechanize. If I make another ruby
script, that works properly. So, what's with mechanize?
Thank you...
 
J

Just Another Victim of the Ambient Morality

Just Another Victim of the Ambient Morality said:
Okay, it's failling specifically for mechanize. If I make another ruby
script, that works properly. So, what's with mechanize?
Thank you...

...and "require 'rubygems'" doesn't help...
Thanks...
 
J

Just Another Victim of the Ambient Morality

Just Another Victim of the Ambient Morality said:
...and "require 'rubygems'" doesn't help...
Thanks...

...and I'm using Ruby 1.8.4...
Thanks...
 
J

Just Another Victim of the Ambient Morality

Just Another Victim of the Ambient Morality said:
...and I'm using Ruby 1.8.4...
Thanks...

Okay, so if I go into mechanize.rb and make this change to a line of
code:


# This is the original line of code...
#require 'web/htmltools/xmltree' # narf

# This is my hack to get the file to parse
require 'xmltree'


...and go into mechanize\parsing.rb and comment out this block of code:


# Aliasing functions to get rid of warnings. Remove when support for 1.8.2
# is dropped.
if RUBY_VERSION > "1.8.2"
alias :eek:ld_each_recursive :each_recursive
alias :eek:ld_find_first_recursive :find_first_recursive
alias :eek:ld_index_in_parent :index_in_parent
end


...it all parses. Otherwise, I get an undefined method error for
'each_recursive.' What's up with that? Do I have any reasonable
expectation of this working, now? Why the hell did I have to do all this?
Why can't this "just work?"
Thank you...
 
J

Just Another Victim of the Ambient Morality

Just Another Victim of the Ambient Morality said:
Okay, so if I go into mechanize.rb and make this change to a line of
code:


# This is the original line of code...
#require 'web/htmltools/xmltree' # narf

# This is my hack to get the file to parse
require 'xmltree'


...and go into mechanize\parsing.rb and comment out this block of code:


# Aliasing functions to get rid of warnings. Remove when support for
1.8.2
# is dropped.
if RUBY_VERSION > "1.8.2"
alias :eek:ld_each_recursive :each_recursive
alias :eek:ld_find_first_recursive :find_first_recursive
alias :eek:ld_index_in_parent :index_in_parent
end


...it all parses. Otherwise, I get an undefined method error for
'each_recursive.' What's up with that? Do I have any reasonable
expectation of this working, now? Why the hell did I have to do all this?
Why can't this "just work?"
Thank you...

Okay, after _way_ too many code modifications, I got it to almost
work...
One way that it is defective is that it can't always parse the links of
a page. The strange thing is that it works find for some pages (like
slashdot.org) but completely fails for others (like rubyforge.org). When it
fails, it does so by failing to collect the URL of the link and the script
dies by sending a message to a nil object. I looked at the source and the
two pages seem to be the same to me. Can anyone guess what's going on?
Also, why didn't "mechanize" "just work?"
Thank you...
 
J

Justin Collins

Okay, after _way_ too many code modifications, I got it to almost
work...
One way that it is defective is that it can't always parse the links of
a page. The strange thing is that it works find for some pages (like
slashdot.org) but completely fails for others (like rubyforge.org). When it
fails, it does so by failing to collect the URL of the link and the script
dies by sending a message to a nil object. I looked at the source and the
two pages seem to be the same to me. Can anyone guess what's going on?
Also, why didn't "mechanize" "just work?"
Thank you..

It sounds like you didn't install this in any normal fashion? I have yet
to run into public Ruby libraries which require you to copy them into
the Ruby directory. Plus, I know Mechanize is available as a gem.
Why are you copying it manually? I would suspect this as the root of the
issue, although it's hard to tell.

-Justin
 
J

Just Another Victim of the Ambient Morality

Justin Collins said:
It sounds like you didn't install this in any normal fashion? I have yet
to run into public Ruby libraries which require you to copy them into the
Ruby directory. Plus, I know Mechanize is available as a gem.
Why are you copying it manually? I would suspect this as the root of the
issue, although it's hard to tell.

I appreciate that it's hard to tell.
I don't really know what gems are and I generally try to avoid things I
don't understand.
If you go to the sourceforge download site:

http://rubyforge.org/frs/?group_id=1453&release_id=6508

You'll see that it comes in a .zip file with all the files in it. Now,
pehaps this opinion is naive of me but if the package doesn't simply work as
it is packaged, then it is horribly broken. I mean, really, what does the
gem do that's so different and what necessitates this difference?
 
H

Hal Fulton

Just said:
I appreciate that it's hard to tell.
I don't really know what gems are and I generally try to avoid things I
don't understand.
If you go to the sourceforge download site:

http://rubyforge.org/frs/?group_id=1453&release_id=6508

You'll see that it comes in a .zip file with all the files in it. Now,
pehaps this opinion is naive of me but if the package doesn't simply work as
it is packaged, then it is horribly broken. I mean, really, what does the
gem do that's so different and what necessitates this difference?

It may be broken.

What was in the zip file? Was there a setup.rb and if so, did you
run it?

There may be some config involved other than just copying files over.
That's usually the case, esp. if there are many files in the package.

Gems are smart enough to know what's necessary to install themselves
(e.g. invoke setup.rb properly). And installing a gem is usually as
easy as: gem install foobar (assuming you've got permissions, etc.)

Gems are there to make things easier, not harder. Usually they
succeed.


Hal
 
J

Just Another Victim of the Ambient Morality

Hal Fulton said:
It may be broken.

What was in the zip file? Was there a setup.rb and if so, did you
run it?

Well, if you follow the link, you can see for yourself!
There was no setup.rb or anything, although I've seen that before.
There was basically just two directories. One had mechanize and all it
needed (except for htmltools, which I had to go get, myself) and the other
hosted a rather large test application. At least, I assume it was a test
program since it was in a directory called "test."
 

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
474,209
Messages
2,571,089
Members
47,689
Latest member
kilaocrhtbfnr

Latest Threads

Top