【问题标题】:Is Socket bundled with Pry?Socket 是否与 Pry 捆绑在一起?
【发布时间】:2016-06-21 16:58:41
【问题描述】:

我正在学习 Ruby 中的套接字。我在 Pry 会话中尝试了 require 'socket',只是为了得到 false。经过一番麻烦,我决定使用irb,但一切正常。

后来,我在不需要 socket 的情况下在 pry session 中运行了 TCPServer.new('localhost', 2000),它成功了!

我很好奇为什么会这样。 socket 已经是 pry 的一部分了吗?我检查了 Pry 源代码,但无法弄清楚。

在 Ruby 2.3.0 上撬开 0.10.3 版

【问题讨论】:

  • 不,socket 在您启动 Pry 时默认不会加载。您是否有可能正在加载的 .pryrc 文件?
  • 发生这种情况时,我没有.pryrc

标签: ruby sockets irb pry


【解决方案1】:

是的 socket 在 Pry 启动时被加载。而 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

【讨论】:

  • 你从哪里得到 Pry 自动加载 socket 的?它不适合我,并且“socket”源中唯一提到的似乎是评论和变更日志条目。
  • @matt true Github 存储库不直接require 'socket',但它确实加载了其他 Gem,这可能是罪魁祸首。你有什么版本的撬? pry -v
  • 0.10.3,当前最新。我没有任何插件,也许你和 mokayode 都有一个需要socket 的插件?你从pry --plugins得到什么
  • @matt nope,Installed Plugins: --。而且我没有.pryrc 文件。
  • 在 Pry Github 存储库中,我确实看到提到了 require 'net/http',其中有一个 require 'net/protocol',它有 require 'socket'
猜你喜欢
  • 2016-09-21
  • 2022-06-23
  • 2014-11-10
  • 2018-07-12
  • 2020-07-05
  • 2014-01-26
  • 2023-03-27
  • 2019-07-24
  • 1970-01-01
相关资源
最近更新 更多