When I call in Pry, it works. I get
=> "/tmp/d20131019-7589-9g9zxs"
But when I call it in IRB, it doesn't. I get
NoMethodError: undefined method `mktmpdir' for Dir:Class
Other Dir methods work in IRB. Why not this one? Or is Pry loading
something that IRB isn't?
Ruby noob here, sorry if this is a noob question.
A noob question, but you are on the right course:
ratdog:~ mike$ irb
irb(main):001:0> Dir.mktmpdir
NoMethodError: undefined method `mktmpdir' for Dir:Class
from (irb):1
from /Users/mike/.rbenv/versions/2.0.0-p247/bin/irb:12:in `<main>'
irb(main):002:0> require 'tmpdir'
=> true
irb(main):003:0> Dir.mktmpdir
=> "/var/folders/f3/6zk_yypd73jc88n1p6ww2f_00000gn/T/d20131019-5591-1dprrhs"
How to tell that is the right thing to do from Pry?
mike$ pry
[1] pry(main)> cd Dir
[2] pry(Dir):1> $ mktmpdir
Owner: #<Class:Dir>
Visibility: public
Number of lines: 16
def Dir.mktmpdir(prefix_suffix=nil, *rest)
path = Tmpname.create(prefix_suffix || "d", *rest) {|n| mkdir(n, 0700)}
if block_given?
begin
yield path
ensure
stat = File.stat(File.dirname(path))
if stat.world_writable? and !stat.sticky?
raise ArgumentError, "parent directory is world writable but not sticky"
end
FileUtils.remove_entry path
end
else
path
end
end
so … tmpdir.rb seems like a good suspect, so my first guess was to "require 'tmpdir'"
Hope this helps,
Mike
···
On 2013-10-19, at 4:51 PM, Jack Daemon <lists@ruby-forum.com> wrote:
From: /Users/mike/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/tmpdir.rb @ line 84:
--
Mike Stok <mike@stok.ca>
http://www.stok.ca/~mike/
The "`Stok' disclaimers" apply.