我认为在这个this主题的帮助下,我理解了require
和include
之间的区别。
然后我偶然发现github page of the bcrypt-ruby gem.中的这段代码为什么他们使用这两种方法?所以首先要加载第一个单个模型,然后再通过include
所有函数加载?
require 'bcrypt'
class User < ActiveRecord::Base
# users.password_hash in the database is a :string
include BCrypt
.....
答案 0 :(得分:4)
require
加载ruby文件,使您的ruby代码可以使用BCrypt模块。它不一定必须与您在其中包含模块的类位于同一个文件中。
require
也可用于使该文件中定义的ruby类可用(例如,您在项目中定义的其他类)。因为它位于gem中,bcrypt位于ruby路径上,如果它是项目中的文件,则可能需要引用完整路径,或者使用require_relative
。
include
获取bCrypt模块中的代码并将其包含在User类中,为User提供BCrypt模块中声明的方法和属性。
答案 1 :(得分:3)
require
加载课程。
include
实际上将其放在User
类中,例如,包括模块的方法,作为User
类定义的一部分。
您提到的问题非常明确地说明了差异。