From: Rob Biedenharn Date: 2013-05-16T00:09:48+09:00 Subject: Re: Need help for Kernel methods On 2013-May-15, at 10:27 , Love U Ruby wrote: > Rob Biedenharn wrote in post #1108992: > >>> what does it mean by `canonicalized absolute path`? >>> >>> Why said `symlinks in the path is resolved`? >> >> So that you don't have multiple aliases for a single file (as the >> require is path sensetive). >> >> -Rob > > > @Rob - Could you give me a simple example to understand this method,if > possible? I hope you think this is simple enough. The Kernel#_dir_ is essentially File.dirname(File.realpath(__FILE__)). [ruby-2.0.0p0] code/ruby $ mkdir symlink [ruby-2.0.0p0] code/ruby $ cd symlink [ruby-2.0.0p0] ruby/symlink $ ls -al total 0 drwxr-xr-x 2 rab staff 68 May 15 11:00 . drwxr-xr-x 171 rab staff 5814 May 15 11:00 .. [ruby-2.0.0p0] ruby/symlink $ mkdir -p real/path/to [ruby-2.0.0p0] ruby/symlink $ touch real/path/to/file [ruby-2.0.0p0] ruby/symlink $ ln -nsf real alt [ruby-2.0.0p0] ruby/symlink $ ln -nsf real/path/to direct [ruby-2.0.0p0] ruby/symlink $ ln -nsf alt/path/to indirect [ruby-2.0.0p0] ruby/symlink $ ls -alR total 24 drwxr-xr-x 6 rab staff 204 May 15 11:02 . drwxr-xr-x 171 rab staff 5814 May 15 11:00 .. lrwxr-xr-x 1 rab staff 4 May 15 11:01 alt -> real lrwxr-xr-x 1 rab staff 12 May 15 11:02 direct -> real/path/to lrwxr-xr-x 1 rab staff 11 May 15 11:02 indirect -> alt/path/to drwxr-xr-x 3 rab staff 102 May 15 11:00 real ./real: total 0 drwxr-xr-x 3 rab staff 102 May 15 11:00 . drwxr-xr-x 6 rab staff 204 May 15 11:02 .. drwxr-xr-x 3 rab staff 102 May 15 11:00 path ./real/path: total 0 drwxr-xr-x 3 rab staff 102 May 15 11:00 . drwxr-xr-x 3 rab staff 102 May 15 11:00 .. drwxr-xr-x 3 rab staff 102 May 15 11:01 to ./real/path/to: total 0 drwxr-xr-x 3 rab staff 102 May 15 11:01 . drwxr-xr-x 3 rab staff 102 May 15 11:00 .. -rw-r--r-- 1 rab staff 0 May 15 11:01 file [ruby-2.0.0p0] ruby/symlink $ echo "Hi!" >> real/path/to/file -bash: !": event not found [ruby-2.0.0p0] ruby/symlink $ echo "Hello" >> real/path/to/file [ruby-2.0.0p0] ruby/symlink $ cat alt/path/to/file Hello [ruby-2.0.0p0] ruby/symlink $ cat direct/file Hello [ruby-2.0.0p0] ruby/symlink $ cat indirect/file Hello [ruby-2.0.0p0] ruby/symlink $ echo ", World" >> real/path/to/file [ruby-2.0.0p0] ruby/symlink $ cat alt/path/to/file Hello , World [ruby-2.0.0p0] ruby/symlink $ cat direct/file Hello , World [ruby-2.0.0p0] ruby/symlink $ cat indirect/file Hello , World [ruby-2.0.0p0] ruby/symlink $ irb irb2.0.0> File.realpath('indirect/file') #2.0.0 => "/Users/rab/code/ruby/symlink/real/path/to/file" irb2.0.0> File.realpath('direct/file') #2.0.0 => "/Users/rab/code/ruby/symlink/real/path/to/file" irb2.0.0> File.realpath('alt/path/to/file') #2.0.0 => "/Users/rab/code/ruby/symlink/real/path/to/file" irb2.0.0> File.dirname(File.realpath('alt/path/to/file')) #2.0.0 => "/Users/rab/code/ruby/symlink/real/path/to" -Rob