Greetings. Apologies if I missed something like this in the archives or
internet, but I''m having namespace issues using Ferret with Rails, but
this looks to be an issue with any library and Rails. Specifically, I have a
model class "Weight" in my application and Ferret also has a class
"Weight" in it (Ferret::Search::Weight). My app runs perfectly fine
until it first executes "require ''ferret''". At that
point, my definition of the class "Weight" disappears and I get
"uninitialized constant Weight" errors. I went through my Ferret gem
and changed the Ferret::Search::Weight class to Ferret::Search::FWeight, and all
works now.
Has anyone else come across an issue of a library trampling namespace? I have
tried putting the indexing code in a number of places within my app, and
"load"ing Ferret rather then "require"ing it, but loading
tends to fail to load Ferret.
It seems that Rails is taking the application namespace, and applying it within
all of the libraries. I believe this because after changing
Ferret::Search::Weight to Ferret::Search::FWeight, there still is a
Ferret::Search::Weight class, but it matches my model Weight < ActiveRecord
class, and there are Weight classes that match mine in all areas of the Ferret
library:
irb> Ferret::Search::FWeight
=> Ferret::Search::FWeight
irb> Ferret::Search::Weight
=> Weight
irb> Ferret::Search::Weight == Weight
=> true
irb> Ferret::Weight == Weight
=> true
irb> Ferret::Utils::Weight == Weight
=> true
irb> Ferret::Utils::Weight == Ferret::Search::FWeight
=> false
Thanks for any insight. I am a Ruby and Rails nuby and am using Win32
(temporarilly), Ruby 1.8.2, Ferret 0.3.2, and Rails 1.0.0.
James
--
James Fraumeni
Center for the Evaluation of Value and Risk in Health
Institute for Clinical Research and Health Policy Studies
750 Washington St.
Tufts-New England Medical Center, #063
Boston, MA 02111
jfraumeni@tufts-nemc.org
**********************
Confidentiality Notice
**********************
The information transmitted in this e-mail is intended only for the person
or entity to which it is addressed and may contain confidential and/or
privileged information. Any review, retransmission, dissemination or other use
of or taking of any action in reliance upon this information by persons or
entities other than the intended recipient is prohibited.
If you received this e-mail in error, please contact the sender and delete
the e-mail and any attached material immediately. Thank you.