Skip to content

Cannot resolve or detect symlinks on Windows #3287

@nlowe

Description

@nlowe
jruby 1.7.21 (1.9.3p551) 2015-07-07 a741a82 on Java HotSpot(TM) 64-Bit Server VM 1.8.0_51-b16 +jit [Windows 8.1-amd64]

While doing some testing for running gollum under windows I discovered that JRuby under windows appears to lack support for resolving symlinks. From gollum/gollum#1044:


It doesn't seem that Pathname can detect windows symlinks. For this test, I have created the following:

  • C:\SymlinkTest\a.txt
  • C:\SymlinkTest\b.txt => softlink to C:\SymlinkTest\a.txt (mklink C:\SymlinkTest\b.txt C:\SymlinkTest\a.txt)
  • C:\SymlinkTest\c.txt => hardlink to C:\SymlinkTest\a.txt (fsutil hardlink create C:\SymlinkTest\b.txt C:\SymlinkTest\a.txt)
irb(main):001:0> b = Pathname.new('C:\\SymlinkTest\\b.txt')
=> <Pathname:C:\SymlinkTest\b.txt>
irb(main):002:0> p.symlink?
=> false
irb(main):003:0> c = Pathname.new('C:\\SymlinkTest\\c.txt')
=> <Pathname:C:\SymlinkTest\c.txt>
irb(main):004:0> p.symlink?
=> false
irb(main):005:0> b.realpath
=> <Pathname:C:\SymlinkTest\b.txt>
irb(main):006:0> c.realpath
=> <Pathname:C:\SymlinkTest\c.txt>
irb(main):007:0> File.readlink('C:\\SymlinkTests\\b.txt')
NotImplementedError: readlink unsupported or native support failed to load
        from org/jruby/RubyFile.java:1049:in `readlink'
        from (irb):1:in `evaluate'
        from org/jruby/RubyKernel.java:1079:in `eval'
        from org/jruby/RubyKernel.java:1479:in `loop'
        from org/jruby/RubyKernel.java:1242:in `catch'
        from org/jruby/RubyKernel.java:1242:in `catch'
        from C:/jruby-1.7.21/bin/jirb:13:in `(root)'
irb(main):008:0> File.readlink('C:\\SymlinkTests\\c.txt')
NotImplementedError: readlink unsupported or native support failed to load
        from org/jruby/RubyFile.java:1049:in `readlink'
        from (irb):2:in `evaluate'
        from org/jruby/RubyKernel.java:1079:in `eval'
        from org/jruby/RubyKernel.java:1479:in `loop'
        from org/jruby/RubyKernel.java:1242:in `catch'
        from org/jruby/RubyKernel.java:1242:in `catch'
        from C:/jruby-1.7.21/bin/jirb:13:in `(root)'

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions