我正在开发一个Rake任务,它通过外部URL获取文件。为此,我必须在我的.rake文件中要求Net::HTTP Ruby类。
这对我来说似乎很奇怪,因为我没有把它作为gem加载(我实际上并没有从任何地方下载它),所以这个Ruby类必须预先安装在Rails框架中。然而,在我拥有的每个.rake文件中,我都必须RecordSet.Find
。因此,出于某种原因,它必须处于非活动状态,直到我告诉它(?)。
与"How to require classes that I've created in different files"相同的问题。相反,我想知道
答案 0 :(得分:2)
Net :: HTTP是Ruby Standard Library的一部分,它与Ruby本身(不是Rails)一起分发。要使用任何标准库,您必须首先要求它们。
答案 1 :(得分:0)
我正在开发一个Rake任务,它通过外部URL获取文件。为此,我必须在我的.rake文件中要求Net::HTTP Ruby类。
不,你没有。你永远不会require
课。 require
加载文件,而不是类。
这对我来说似乎很奇怪,因为我没有把它作为gem加载(我实际上并没有从任何地方下载它),所以这个Ruby类必须预先安装在Rails框架中。
不,不是。它是Ruby标准库的一部分。您甚至链接到Ruby标准库的文档!
然而,在我拥有的每个.rake文件中,我都必须
require
。因此,出于某种原因,它必须处于非活动状态,直到我告诉它(?)。
是。 Ruby并不奇怪require
整个世界中的每个Ruby文件。您必须手动且明确地require
所需的文件。
- 我不必将Net :: HTTP类下载并安装到我的应用程序中?
因为Net::HTTP
类是在文件net/http.rb
中定义的,它是作为Ruby标准库的一部分提供的。
- 为什么我在使用它时必须手动要求它,如果它已预先安装在Rails中?
因为它像任何其他Ruby文件一样是Ruby文件,你需要告诉Ruby你想要使用哪些Ruby文件。