Sanity Check


Maaaaaaaaaaaaajor sanity check needed.
I wrote a simple little plugin, and it wouldn’t load. I put some
in it’s init.rb, and it didn’t even spit those out. So, I dug into the
initializer.rb (/vendor/rails/railties/lib/initializer.rb) to see wtf is
going on, and found the problem… but… can’t explain it. Here is the
code in question:

    lib_path  = File.join(directory, 'lib')
    init_path = File.join(directory, 'init.rb')
    has_lib   =
    #raise LoadError, "Dude, this path is ok: " + has_lib#    =>

has_init = File.file?(init_path)
#raise LoadError, “WTF !..” + has_init.to_s# =>
False !!!

I’ve loaded the same situation up in IRB, and it works fine. Why is
File.file?(init_path) returning false !?
Permissions are fine, the path is fine:

I’m losing my mind.


What version of rails are you running? Plugins don’t work before


I’m running Edge.


So, I was able to hack this to work when I “hardcode” my absolute path
here… however, that is obviously the biggest hack ever.

Problem is, the path it’s getting from #{RAILS_ROOT} is a relative path,
when it’s being applied within the context of the initializer.rb
(which is actually in the /vendor/ directory), it’s not a valid URL

So, it looks as if you’re running Edge, and want plugins to work, your
of luck.
Am I crazy ?


Dylan… don’t know if this will help you here or not, but I was
commenting on the strange
relative path that RAILS_ROOT produces and Kris L. pointed out that
one can do
“File.expand_path(RAILS_ROOT)” to get the full path.



Thanks a bunch Ben. I just did a little test, and think I may have a
possible bug in hand… but not sure.
Here is what I did:


  1. rails -v (rails 1.0.0)
  2. rails test (in my home dir, now ive got
  3. create plugin:
    (/home/dylan/test/vendor/plugins/custom/lib/custom.rb and

4) rake freeze_edge

  1. put debug in:
    (/home/dylan/test/vendor/rails/railties/lib/initializer.rb … line
    “raise LoadError, init_path”)
  2. output:
  3. put debug in:
    (/home/dylan/test/vendor/rails/railties/lib/initializer.rb … line
    “raise LoadError, has_init.to_s”)
  4. output: “false”

So, normal 1.0.0 install, froze edge, threw a valid plugin in
/vendor/plugins, and initializer.rb can’t pick it up due to an invalid

Do I have a point here, or am I doing something wrong ?