2016-06-21 42 views
3

我在Ruby中學習套接字。我在Pry會話中嘗試require 'socket'只得到false。經過很多麻煩,我決定使用irb,但事情工作正常。是與Pry捆綁在一起的Socket嗎?

後來,我在pry會話中運行TCPServer.new('localhost', 2000)而不需要socket,它工作正常!

我很好奇它爲什麼如此。 socket已經是pry的一部分了嗎?我檢查了Pry源代碼,但無法弄清楚。關於Ruby 2.3.0

+0

不,當您啓動Pry時,默認情況下不加載'socket'。你有可能加載它的'.pryrc'文件嗎? – matt

+0

在它發生的時候,我沒有'.pryrc' – mokayode

回答

3

撬版本0.10.3是socket在啓動時加載的撬。 irb最初不加載它。您可以隨時通知文件是否已被加載,因爲require將返回false,而不是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

你從哪裏得到Pry自動加載'socket'?它不適合我,並且源文件中唯一提到的「套接字」似乎是註釋和更改日誌條目。 – matt

+0

@matt真正的Github存儲庫不直接'需要'套接字',但它確實加載其他寶石,這可能是罪魁禍首。你有什麼版本的Pry? 'pry -v' –

+0

'0.10.3',最新的。我沒有任何插件,也許你和mokayode都有一個需要'socket'的插件?你從'pry --plugins'得到什麼? – matt

相關問題