On Fri, Mar 4, 2011 at 10:08 AM, Hedge Hog <hedgehogshia...@gmail.com> wrote: > 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: > > https://gist.github.com/853798 > > 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 >
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 `<main>' -- πόλλ' οἶδ ἀλώπηξ, ἀλλ' ἐχῖνος ἓν μέγα [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 _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users