gem 和 require 之间的区别(需要 open-uri)

Posted

技术标签:

【中文标题】gem 和 require 之间的区别(需要 open-uri)【英文标题】:Difference between gem and require (require open-uri) 【发布时间】:2012-01-12 02:36:27 【问题描述】:

我只是想了解自己。

我正在使用 nokogiri gem(用于解析 html)。如果我可以正确打开 URL,我需要使用 gem 'open-uri' 中的方法。

但是当我将它包含在我的 Gemfile 中时(在 Windows 开发者的机器上):

gem 'open-uri' - 捆绑安装时出错,找不到 gem。

所以如果我使用require 'open-uri' - 它的工作原理。

那么有人能解释一下发生了什么吗?

【问题讨论】:

【参考方案1】:

您正在使用 bundler 作为您的 gem 依赖项,并且您做得对,但 OpenUri 是 Ruby 标准库的一部分。这就是为什么你只有如果你想在你的代码中使用它就需要它。

【讨论】:

谢谢。在 gemfile 或其他地方最好在哪里请求“open-uri”? 通常你应该在你要使用库的文件的顶部要求它。如果对您有帮助,请采纳答案。 小心:open-uri 被认为是致命的:sakurity.com/blog/2015/02/28/openuri.html 这里有关于 open-uri 的重要信息:janko.io/improving-open-uri【参考方案2】:

require 用于加载另一个文件并执行其所有语句。这用于导入文件中的所有类和方法定义。 require 还会跟踪以前需要哪些文件,因此它不会执行两次。

RubyGem 是一个软件包,通常称为“gem”。 Gems 包含一个打包的 Ruby 应用程序或库。 RubyGems 软件本身允许您在系统上轻松下载、安装和操作 gem。 - What is a Gem?:

然后bundler 使用 Gemfile 来安装指定的 gem。

open-uri 不是 gem,而是 Ruby 标准库的一部分,所以它只是必需的。

【讨论】:

谢谢。在 gemfile 或其他地方最好在哪里请求“open-uri”? 如果你只在一个地方使用它,我会建议在调用之前或者在函数或文件的开头。 非常感谢,感谢您的帮助和时间!

以上是关于gem 和 require 之间的区别(需要 open-uri)的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 中 required 和 @required 有啥区别。它们之间有啥区别,我们啥时候需要使用它们?

php中require和include之间的区别[关闭]

'require':无法加载此类文件'gem'(LoadError)

使用和需要的区别

typescript 中 `import x = require('x')` 和 `const x = require('x')` 之间的区别

vue中的require与import之间的区别