是否需要gem加载一切,包括我不使用的东西?

假设x是一个gem,它包含HelloGoodbye类。

如果我编写一个require 'x'的程序,但只使用Hello类。 Goodbye类也加载了吗?

您包括脚本或文件,而不是gem。

 require 'x' 

你加载文件x.rb 您加载的x.rb是由搜索路径定义的,搜索路径可以通过gem定义修改(您在示例代码中未使用的内容)。

文件x.rb所有内容x.rb加载。 如果x.rb包含其他require命令,则还会加载这些文件。