From: nobu@... Date: 2017-09-13T14:45:28+00:00 Subject: [ruby-core:82773] [Ruby trunk Bug#10222] require_relative and require should be compatible with each other when symlinks are used Issue #10222 has been updated by nobu (Nobuyoshi Nakada). Would you expect just directory names get expanded? Or basename too? For instance, 'b loaded' should be printed twice or just once,? ``` mkdir a echo "p 'b loaded'" > a/b.rb ln -s b.rb a/c.rb ruby -I./a -ra -rb -e'' ``` ---------------------------------------- Bug #10222: require_relative and require should be compatible with each other when symlinks are used https://bugs.ruby-lang.org/issues/10222#change-66629 * Author: rosenfeld (Rodrigo Rosenfeld Rosas) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.3.1, 2.1.2p95 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Not sure if this should be considered a bug or a feature request since I don't know whether the current behavior is intended or not. Recently I got a report for my gem rails-web-console related to require_relative causing trouble with symlinked dirs: https://github.com/rosenfeld/active_record_migrations/issues/6 Dmitry was able to replicate the issue using vanilla Ruby: ~~~ mkdir a ln -s a b echo "require_relative 'b'" > a/a.rb echo "p 'b loaded'" > a/b.rb echo "$: << File.expand_path('../b', __FILE__); require 'a'; require 'b'" > c.rb ruby c.rb ~~~ Notice how "b loaded" is printed twice but if you replace require_relative with require it's just loaded once. Shouldn't Ruby always expand the loaded files before appending them to the $LOADED_FEATURES and avoid this kind of error? I don't think require_relative should behave differently than a regular require in such cases. Any thoughts? -- https://bugs.ruby-lang.org/ Unsubscribe: