Forum: Ruby on Rails Sanity Check

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Dylan S. (Guest)
on 2006-02-24 09:31
(Received via mailing list)
Maaaaaaaaaaaaajor sanity check needed.
I wrote a simple little plugin, and it wouldn't load.  I put some
comments
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   = File.directory?(lib_path)
        #raise LoadError, "Dude, this path is ok: " + has_lib#    =>
public/../config/../vendor/plugins/my_plugin/init.rb
        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:
public/../config/../vendor/plugins/my_plugin/init.rb.

I'm losing my mind.
Steve L. (Guest)
on 2006-02-24 17:22
(Received via mailing list)
What version of rails are you running?  Plugins don't work before
0.14releases...
Dylan S. (Guest)
on 2006-02-24 19:24
(Received via mailing list)
I'm running Edge.
Dylan S. (Guest)
on 2006-02-24 20:11
(Received via mailing list)
So, I was able to hack this to work when I "hardcode" my absolute path
in
here... however, that is obviously the biggest hack ever.

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

So, it looks as if you're running Edge, and want plugins to work, your
out
of luck.
Am I crazy ?
Ben M. (Guest)
on 2006-02-25 05:57
(Received via mailing list)
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.

b
Dylan S. (Guest)
on 2006-02-25 08:34
(Received via mailing list)
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
/home/dylan/test/)
3)  create plugin:
(/home/dylan/test/vendor/plugins/custom/lib/custom.rb and

/home/dylan/test/vendor/plugins/custom/lib/init.rb)
4)  rake freeze_edge

5)  put debug in:
(/home/dylan/test/vendor/rails/railties/lib/initializer.rb   ... line
311:
"raise LoadError, init_path")
6)  output:
"public/../config/../vendor/plugins/custom/init.rb"
7)  put debug in:
(/home/dylan/test/vendor/rails/railties/lib/initializer.rb   ... line
312:
"raise LoadError, has_init.to_s")
8)  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
URL.

Do I have a point here, or am I doing something wrong ?
This topic is locked and can not be replied to.