Does RSpec interfere with Pathname#dirname or Pathname#realpath?

Hi,
I starting a new project, and have run into behavior I cannot
replicate in irb, (i.e. outside of using rspec) when the directory?
returns true, so I thought I’d ask here, in case any one has seen this
badhavior.
ruby-1.9.2-p136
rspec (2.5.0)
rspec-core (2.5.1)
rspec-expectations (2.5.0)
rspec-mocks (2.5.0)

When I try to run this spec:

require Pathname(FILE).ascend { |d| h=d+‘spec_helper.rb’; break h
if h.file? }
describe B3::Bdd do
it “should indicate RVM is installed locally” do
B3::Bdd::Helpers.rvm_local_install?.should be_true
end
end

The spec helper is: require ‘rspec’ ; require_relative ‘…/lib/b3’

Which describes this code:

class B3
module Bdd
module Helpers
def rvm_local_install?
puts ENV[‘rvm_path’]
rvm_path = Pathname.new(ENV[‘rvm_path’] || ‘~/.rvm’)
rvm_path.dirname.realpath.directory?
end
module_function :rvm_local_install?
end
end
end

I get this error:

irb version:

$ irb
ruby-1.9.2-p136 :001 > require ‘pathname’;
ruby-1.9.2-p136 :002 >
Dir.chdir(‘/home/hedge/Documents/Workspaces/b3/spec/b3/’) do
ruby-1.9.2-p136 :003 > pn=Pathname.new(ENV[‘rvm_path’] || ‘~/.rvm’)
ruby-1.9.2-p136 :004?> puts pn.dirname.realpath.directory?
ruby-1.9.2-p136 :005?> end
true
=> nil
ruby-1.9.2-p136 :006 > pn2=Pathname.new(ENV[‘rvm_path’] || ‘~/.rvm’)
=> #Pathname:/home/hedge/.rvm
ruby-1.9.2-p136 :007 > puts pn2.dirname.realpath.directory?
true
=> nil

I’d appreciate any comments or insights.


πόλλ’ οἶδ ἀλώπηξ, ἀλλ’ ἐχῖνος ἓν μέγα
[The fox knows many things, but the hedgehog knows one big thing.]
Archilochus, Greek poet (c. 680 BC – c. 645 BC)
http://wiki.hedgehogshiatus.com

On Fri, Mar 4, 2011 at 10:08 AM, Hedge H. [email protected]
wrote:

The spec helper is: require ‘rspec’ ; require_relative ‘…/lib/b3’
end
irb version:
ruby-1.9.2-p136 :006 > pn2=Pathname.new(ENV[‘rvm_path’] || ‘~/.rvm’)
Archilochus, Greek poet (c. 680 BC – c. 645 BC)
http://wiki.hedgehogshiatus.com

Actually the cause is that Pathname#realpath does not seem handle ~
very well. Period. File#expand_path handles ~ fine:

pn=Pathname.new(‘~/.rvm’)
ruby-1.9.2-p136 :020 > pn=Pathname.new(‘~/.rvm’)
=> #Pathname:~/.rvm
ruby-1.9.2-p136 :021 > puts pn.realpath
Errno::ENOENT: No such file or directory - /home/hedge/~
from
/home/hedge/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/pathname.rb:446:in
realpath' from /home/hedge/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/pathname.rb:446:in realpath’
from (irb):21
from /home/hedge/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in `’


πόλλ’ οἶδ ἀλώπηξ, ἀλλ’ ἐχῖνος ἓν μέγα
[The fox knows many things, but the hedgehog knows one big thing.]
Archilochus, Greek poet (c. 680 BC – c. 645 BC)
http://wiki.hedgehogshiatus.com