On Fri, Mar 4, 2011 at 10:08 AM, Hedge Hog <[email protected]> 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
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users