2016-06-21 9 views
3

Ich lerne Socket in Ruby. Ich versuchte require 'socket' in einer Pry-Sitzung nur false zu erhalten. Nach vielen Schwierigkeiten entschied ich mich, irb zu verwenden, aber die Dinge funktionierten gut.Ist Socket mit Pry gebündelt?

Später, lief ich TCPServer.new('localhost', 2000) in einer Sitzung, ohne socket und es funktionierte!

Ich bin neugierig, warum es so ist. Ist es, dass socket bereits Teil der Beute ist? Ich habe den Pry-Quellcode überprüft, konnte es aber nicht herausfinden.

Pry Version 0.10.3 zum Ruby 2.3.0

+0

Nein, 'Socket' wird nicht standardmäßig beim Start von Pry geladen. Haben Sie eine '.pryrc' Datei, die es vielleicht lädt? – matt

+0

Zu der Zeit, als es passierte, hatte ich kein '.pryrc' – mokayode

Antwort

3

Ja socket wird in Pry geladen, wenn es beginnt. Während irb es anfangs nicht lädt. Sie können immer sagen, ob eine Datei bereits geladen wurde, weil requirefalse zurückgibt, im Gegensatz zu LoadError.

2.3.1 :001 > require 'socket' # not yet loaded 
# => true 
2.3.1 :002 > require 'socket' # already loaded 
# => false 
2.3.1 :003 > require 'not_a_file' # error because it does not exist 
# LoadError: cannot load such file -- not_a_file 
+0

Woher bekommst du, dass Pry' Socket' automatisch lädt? Es ist nicht für mich, und die einzige Erwähnung in der Quelle für "Socket" scheint ein Kommentar und ein Changelog-Eintrag zu sein. – matt

+0

@matt true das Github-Repository nicht direkt "benötigt" socket'', aber es lädt andere Gems, was wahrscheinlich der Schuldige ist. Welche Version von Pry hast du? 'pry -v' –

+0

' 0.10.3', der aktuelle neueste. Ich habe keine Plugins, vielleicht haben Sie und Mokayode beide ein Plugin, das 'Socket' benötigt? Was bekommst du von 'pry --plugins' – matt