[LRUG] Understanding Ruby Tempfile documentation
Craig R Webster
craig at xeriom.net
Tue Jan 26 04:32:14 PST 2016
Hi Jonathon,
Looks like it’s Ruby all the way down:
http://ruby-doc.org/stdlib-2.2.2/libdoc/delegate/rdoc/Object.html <http://ruby-doc.org/stdlib-2.2.2/libdoc/delegate/rdoc/Object.html>
The example is a little hard to read at a glance, but this is a method to allow composition instead of inheritance. One might rewrite the code something like this to make it more obvious what’s being attempted in this case (with apologies for quick hackiness and glossed-over subtleties):
class Tempfile
def initialize basename, temp_dir = '/tmp'
file_name = [ basename, rand(1_000_000_000), Time.now.to_f ].join('-')
file_path = File.join temp_dir, file_name
@file = File.open file_path, ...
end
def method_missing name, *args
@file.send name, *args
end
def respond_to? name
@file.respond_to? name
end
end
The resulting class will support the same API and behaviour as the class delegated to, except where the behaviour is overwritten.
Cheers,
Craig
> On 26 Jan 2016, at 12:05, Jonathon Horsman <jonathon at arctickiwi.com> wrote:
>
> Hi
>
> Trying to understand Tempfile, so reading the docs:
>
> http://docs.ruby-lang.org/en/2.2.0/Tempfile.html <http://docs.ruby-lang.org/en/2.2.0/Tempfile.html>
>
> I assume it's a subclass of IO, but I can't see any mention of this.
>
> It does however say:
>
> Parent:
> DelegateClass(File)
>
> what does this mean?
>
> Thanks in advance
>
> Jonno
> _______________________________________________
> Chat mailing list
> Chat at lists.lrug.org
> Archives: http://lists.lrug.org/pipermail/chat-lrug.org
> Manage your subscription: http://lists.lrug.org/options.cgi/chat-lrug.org
> List info: http://lists.lrug.org/listinfo.cgi/chat-lrug.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lrug.org/pipermail/chat-lrug.org/attachments/20160126/21ca7732/attachment-0002.html>
More information about the Chat
mailing list