https://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112020-03-07T23:01:01ZRuby Issue Tracking SystemRuby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=845432020-03-07T23:01:01Zhsbt (Hiroshi SHIBATA)hsbt@ruby-lang.org
<ul><li><strong>Related to</strong> <i><a class="issue tracker-1 status-5 priority-4 priority-default closed" href="/issues/16462">Bug #16462</a>: Ruby 2.7 autoload not working with $RUBYLIB (maybe circular dependency error)</i> added</li></ul> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=854672020-05-09T10:47:33Zzw963 (Wei Zheng)
<ul></ul><p>Sorry, any update on this?</p> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=854692020-05-09T11:51:29ZEregon (Benoit Daloze)
<ul></ul><p>Maybe a solution is to always resolve symlinks in the cache of <code>$LOAD_PATH</code>?<br>
One issue is that <code>$LOAD_PATH</code> entries might not necessarily exist.</p> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=856782020-05-17T08:59:27Zzw963 (Wei Zheng)
<ul></ul><p>Eregon (Benoit Daloze) wrote in <a href="#note-3">#note-3</a>:</p>
<blockquote>
<p>One issue is that <code>$LOAD_PATH</code> entries might not necessarily exist.</p>
</blockquote>
<p>Sorry, not really understood what your means about reference comment.</p>
<p>I think maybe it acceptable for only support non-symlink $LOAD_PATH when update to ruby 2.7.<br>
but, it should be mentions on release change log and mention why we change this behavior<br>
before ruby 2.7 release.</p> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=861512020-06-13T23:02:50Znobu (Nobuyoshi Nakada)nobu@ruby-lang.org
<ul></ul><p>I can't reproduce it with the master.</p>
<pre><code class="sh syntaxhl" data-language="sh"><span class="nv">$ </span>ruby <span class="nt">-v</span>
ruby 2.8.0dev <span class="o">(</span>2020-06-13T14:33:40Z master 2496bdb28f<span class="o">)</span> <span class="o">[</span>x86_64-linux]
</code></pre>
<p>First, copied <code>looksee/lib</code> directory to <code>/tmp/test_looksee</code>, and linked it to <code>/tmp/test_looksee1</code>, correct?</p>
<pre><code class="sh syntaxhl" data-language="sh"><span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-lRA</span> /tmp/test_looksee<span class="k">*</span>
lrwxrwxrwx 1 ubuntu ubuntu 17 Jun 14 07:49 /tmp/test_looksee1 -> /tmp/test_looksee/
/tmp/test_looksee:
total 4
drwxr-xr-x 3 ubuntu ubuntu 4096 Jun 14 07:55 lib/
/tmp/test_looksee/lib:
total 8
drwxr-xr-x 3 ubuntu ubuntu 4096 Jun 14 07:42 looksee/
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 51 Jun 14 07:42 looksee.rb
/tmp/test_looksee/lib/looksee:
total 44
drwxr-xr-x 2 ubuntu ubuntu 4096 Jun 14 07:42 adapter/
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 246 Jun 14 07:42 adapter.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 5276 Jun 14 07:42 clean.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 2107 Jun 14 07:42 columnizer.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 732 Jun 14 07:42 core_ext.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 1522 Jun 14 07:42 editor.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 1875 Jun 14 07:42 help.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 2046 Jun 14 07:42 inspector.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 2292 Jun 14 07:42 lookup_path.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 128 Jun 14 07:42 version.rb
/tmp/test_looksee/lib/looksee/adapter:
total 8
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 2018 Jun 14 07:42 base.rb
<span class="nt">-rw-r--r--</span> 1 ubuntu ubuntu 629 Jun 14 07:42 rubinius.rb
</code></pre>
<p>Second, run with the real path, and got a <code>LoadError</code> on <code>mri.so</code> as expected.</p>
<pre><code class="sh syntaxhl" data-language="sh"><span class="nv">$ </span>ruby <span class="nt">-I</span>/tmp/test_looksee/lib/ <span class="nt">-rlooksee</span> <span class="nt">-e</span> <span class="s1">'puts 100'</span>
/home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in <span class="sb">`</span>require<span class="s1">': cannot load such file -- looksee/mri.so (LoadError)
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in `require'</span>
from /tmp/test_looksee/lib/looksee/clean.rb:171:in <span class="sb">`</span><module:Looksee><span class="s1">'
from /tmp/test_looksee/lib/looksee/clean.rb:4:in `<top (required)>'</span>
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in <span class="sb">`</span>require<span class="s1">'
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in `require'</span>
from /tmp/test_looksee/lib/looksee.rb:1:in <span class="sb">`</span><top <span class="o">(</span>required<span class="o">)></span><span class="s1">'
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in `require'</span>
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in <span class="sb">`</span>require<span class="s1">'
bash: exit 1
</span></code></pre>
<p>Then, tried the symlink path, got the same error.</p>
<pre><code class="sh syntaxhl" data-language="sh"><span class="nv">$ </span>ruby <span class="nt">-I</span>/tmp/test_looksee1/lib/ <span class="nt">-rlooksee</span> <span class="nt">-e</span> <span class="s1">'puts 100'</span>
/home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in <span class="sb">`</span>require<span class="s1">': cannot load such file -- looksee/mri.so (LoadError)
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in `require'</span>
from /tmp/test_looksee/lib/looksee/clean.rb:171:in <span class="sb">`</span><module:Looksee><span class="s1">'
from /tmp/test_looksee/lib/looksee/clean.rb:4:in `<top (required)>'</span>
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in <span class="sb">`</span>require<span class="s1">'
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in `require'</span>
from /tmp/test_looksee/lib/looksee.rb:1:in <span class="sb">`</span><top <span class="o">(</span>required<span class="o">)></span><span class="s1">'
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in `require'</span>
from /home/ubuntu/.rbenv/versions/master-2020-06-13/lib/ruby/2.8.0/rubygems/core_ext/kernel_require.rb:83:in <span class="sb">`</span>require<span class="s1">'
bash: exit 1
</span></code></pre> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=861532020-06-13T23:26:00Znobu (Nobuyoshi Nakada)nobu@ruby-lang.org
<ul></ul><p>I could reproduce it with 2.7.1 and 2.7 head.</p> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=871322020-08-20T03:21:31Zzw963 (Wei Zheng)
<ul></ul><p>nobu (Nobuyoshi Nakada) wrote in <a href="#note-6">#note-6</a>:</p>
<blockquote>
<p>I can't reproduce it with the master.</p>
</blockquote>
<blockquote>
<p>I could reproduce it with 2.7.1 and 2.7 head.</p>
</blockquote>
<p>Cool, good news, so, it was fixed on our master, right?</p> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=871352020-08-20T04:39:30Zsawa (Tsuyoshi Sawada)
<ul><li><strong>Subject</strong> changed from <i>[Breaking Change] Ruby 2.7 not support symlinks folder in $LOAD_PATH to work with autoload.</i> to <i>Symlink folder in $LOAD_PATH does not work with autoload</i></li><li><strong>Description</strong> updated (<a title="View differences" href="/journals/87135/diff?detail_id=57767">diff</a>)</li></ul> Ruby master - Bug #16680: Symlink folder in $LOAD_PATH does not work with autoloadhttps://bugs.ruby-lang.org/issues/16680?journal_id=917422021-04-28T20:30:53Zjeremyevans0 (Jeremy Evans)merch-redmine@jeremyevans.net
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li><li><strong>Backport</strong> changed from <i>2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN</i> to <i>2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: REQUIRED</i></li></ul><p>I tried this with Ruby 2.6, 2.7, and 3.0, and got the same results with all three:</p>
<pre><code>$ ls -ld /home/jeremy/tmp/looksee1
lrwxr-xr-x 1 jeremy jeremy 7 Apr 28 13:19 /home/jeremy/tmp/looksee1 -> looksee
$ ruby26 -I /home/jeremy/tmp/looksee1/lib -r looksee -e 'puts 100'
/usr/local/lib/ruby/2.6/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- looksee/mri.so (LoadError)
from /usr/local/lib/ruby/2.6/rubygems/core_ext/kernel_require.rb:54:in `require'
from /home/jeremy/tmp/looksee/lib/looksee/clean.rb:171:in `<module:Looksee>'
from /home/jeremy/tmp/looksee/lib/looksee/clean.rb:4:in `<top (required)>'
from /usr/local/lib/ruby/2.6/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/local/lib/ruby/2.6/rubygems/core_ext/kernel_require.rb:54:in `require'
from /home/jeremy/tmp/looksee/lib/looksee.rb:1:in `<top (required)>'
from /usr/local/lib/ruby/2.6/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/local/lib/ruby/2.6/rubygems/core_ext/kernel_require.rb:54:in `require'
$ ruby27 -I /home/jeremy/tmp/looksee1/lib -r looksee -e 'puts 100'
Traceback (most recent call last):
8: from /usr/local/lib/ruby/2.7/rubygems/core_ext/kernel_require.rb:83:in `require'
7: from /usr/local/lib/ruby/2.7/rubygems/core_ext/kernel_require.rb:83:in `require'
6: from /home/jeremy/tmp/looksee/lib/looksee.rb:1:in `<top (required)>'
5: from /usr/local/lib/ruby/2.7/rubygems/core_ext/kernel_require.rb:83:in `require'
4: from /usr/local/lib/ruby/2.7/rubygems/core_ext/kernel_require.rb:83:in `require'
3: from /home/jeremy/tmp/looksee/lib/looksee/clean.rb:4:in `<top (required)>'
2: from /home/jeremy/tmp/looksee/lib/looksee/clean.rb:171:in `<module:Looksee>'
1: from /usr/local/lib/ruby/2.7/rubygems/core_ext/kernel_require.rb:83:in `require'
/usr/local/lib/ruby/2.7/rubygems/core_ext/kernel_require.rb:83:in `require': cannot load such file -- looksee/mri.so (LoadError)
$ ruby30 -I /home/jeremy/tmp/looksee1/lib -r looksee -e 'puts 100'
<internal:/usr/local/lib/ruby/3.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- looksee/mri.so (LoadError)
from <internal:/usr/local/lib/ruby/3.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from /home/jeremy/tmp/looksee/lib/looksee/clean.rb:171:in `<module:Looksee>'
from /home/jeremy/tmp/looksee/lib/looksee/clean.rb:4:in `<top (required)>'
from <internal:/usr/local/lib/ruby/3.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from <internal:/usr/local/lib/ruby/3.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from /home/jeremy/tmp/looksee/lib/looksee.rb:1:in `<top (required)>'
from <internal:/usr/local/lib/ruby/3.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from <internal:/usr/local/lib/ruby/3.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
</code></pre>
<p>I tried with both the master branch and the v4.2.0 tag for looksee with the same results, just in case looksee had worked around this problem another way.</p>
<p>So I think this problem has been resolved by Ruby 2.7.3. If you can still recreate the issue on Ruby 2.7.3, please bisect to find the failing commit and fixing commit, and note it in this ticket, and we can mark this for backporting.</p>