gem 和 require 的区别(require open-uri)
我只是想亲自了解一下。
我正在使用 nokogiri gem(用于解析 HTML)。如果我正确打开 URL,我需要使用 gem 'open-uri' 中的方法。
但是当我将它包含在 Gemfile 中(在 Windows 开发人员的计算机上)时:
gem 'open-uri'
- 捆绑安装时出现错误,无法找到 gem。
所以如果我使用 require 'open-uri'
- 它的工作原理。
那么有人可以解释一下发生了什么吗?
I just wanted to understand for my self.
I'm using the nokogiri gem (for parsing HTML). If I got it right to open URLs I need to use a method from the gem 'open-uri'.
But when I include it in my Gemfile (on Windows developer's machine):
gem 'open-uri'
- there is an error while bundle install that it can not find gem.
So If I use require 'open-uri'
- its working.
So can some explain what is going on?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您正在使用 bundler 来处理您的 gem 依赖项,并且您做得正确,但是 OpenUri 是 Ruby 标准库的一部分。这就是为什么如果您想在代码中使用它,您仅需要需要它。
You're using bundler for your gem dependecies and you're doing it right but OpenUri is part of the Ruby standard library. That's why you only need to require it if you want to use it in your code.
require
用于加载另一个文件并执行其所有语句。这用于导入文件中的所有类和方法定义。require
还会跟踪以前需要的文件,因此不会执行两次。RubyGem 是一个软件包,通常称为“gem”。 Gems 包含打包的 Ruby 应用程序或库。 RubyGems 软件本身允许您轻松下载、安装和操作系统上的 gem。
- 什么是 Gem?:
然后 bundler 安装指定的 gem。
open-uri 不是 gem,而是 Ruby 标准库的一部分,因此只需要它即可。
require
is used to load another file and execute all its statements. This serves to import all class and method definitions in the file.require
also keeps track of which files have been previously required so it doesn't execute it twice.A RubyGem is a software package, commonly called a “gem”. Gems contain a packaged Ruby application or library. The RubyGems software itself allows you to easily download, install, and manipulate gems on your system.
- What is a Gem?:
The Gemfile is then used by bundler to install the specified gems.
open-uri is not a gem but part of the Ruby Standard Library so it just needs to be required.