Why does Ruby-1.9.2-p0 require an additional ../ for relative paths when compared to the same code for ruby1.8?
if RUBY_VERSION < '1.9' require File.dirname(__FILE__) + library else require_relative File.dirname(__FILE__) + '/..' + library end
Why does Ruby-1.9.2-p0 require an additional ../ for relative paths when compared to the same code for ruby1.8?
if RUBY_VERSION < '1.9' require File.dirname(__FILE__) + library else require_relative File.dirname(__FILE__) + '/..' + library end
You’re passing an absolute path to require_relative. You can do require_relative library.
That said, in my opinion, require_relative is a misfeature. You should always put the appropriate paths on the load path, and require things relative to it. If your library is called “zoom”, you should do require “zoom/library_name”, not require File.dirname(FILE) + “library_name” from the zoom directory.
Yehuda Katz Architect | Engine Yard (ph) 718.877.1325
You're passing an absolute path to require_relative. You can do require_relative library.
The path that gets sent to relative_root has this value:
bin/../../lib/forex/hll_forex_ca_feed
That does not appear to me to be an absolute path.
That said, in my opinion, require_relative is a misfeature. You should always put the appropriate paths on the load path, and require things relative to it. If your library is called "zoom", you should do require "zoom/library_name", not require File.dirname(__FILE__) + "library_name" from the zoom directory.
I would very much prefer that Ruby-1.9.2 retained the cwd (.) in the load path and then all of this jiggery-pokery with require_relative would not be necessary at all.
However that may be. When I run this code in 1.8.7 under Rails-2.3.8 the script runs without error and produces the expected output. With 1.9.2 and Rails-2.3.8 it also runs without error, albeit requires the additional ../. I just do not understand why the additional ../ is required for 1.9.2 require_relative.
Taking your hint I ended up with this construct, which appears to serve both 1.8 and 1.9 rubies.
require File.expand_path(File.dirname(__FILE__) + library)