Ruby Require 方法
最后修改日期:2025 年 4 月 27 日
本教程将介绍如何使用 Ruby 的 require
方法来加载外部代码。该方法对于 Ruby 中的模块化编程至关重要。
require
方法只加载 Ruby 文件或扩展一次。它在 $LOAD_PATH
中搜索指定的文件。如果成功,该方法返回 true
;如果已加载,则返回 false
。
与 load
不同,require
可防止同一文件被多次加载。它非常适合加载库和扩展。该方法同时处理 .rb 和特定于平台的扩展。
基本 Require 示例
这个简单的示例演示了如何使用 require 加载标准库模块。date 模块提供了日期操作功能。
require 'date' today = Date.today puts "Today is #{today}"
require 'date'
加载 Ruby 的日期模块。加载后,我们可以直接使用 Date
类。该方法会自动搜索标准库路径。
Requiring 本地文件
此示例显示了如何在同一目录中 require 本地 Ruby 文件。我们首先需要调整加载路径或使用相对路径。
require_relative 'mylib' puts MyLib.hello("Ruby")
require_relative
在相对于当前文件位置的文件中查找。这比修改 $LOAD_PATH
来加载本地文件更安全。
检查 Require 成功
require
方法返回一个布尔值,指示加载是否成功。我们可以使用它来优雅地处理丢失的依赖项。
if require 'json' puts "JSON module loaded successfully" else puts "JSON module not available" end
该代码检查 require
的返回值以确认加载。此模式对于可选依赖项或备用实现很有用。
Requiring Gems
RubyGems 与 require
集成以加载已安装的 gem。此示例演示了如何 require 一个流行的 HTTP 库。
require 'httparty' response = HTTParty.get('https://api.github.com') puts response.code
安装 gem(gem install httparty
)后,我们可以像加载任何标准库一样加载它。RubyGems 将 gem 路径添加到 $LOAD_PATH
。
条件 Require
我们可以根据环境有条件地 require 不同的实现。此示例加载生产或开发数据库适配器。
if ENV['RACK_ENV'] == 'production' require 'pg' else require 'sqlite3' end
该代码检查环境变量以确定加载哪个数据库库。此模式在配置管理中很常见。
Requiring 多个文件
大型项目通常将代码拆分成多个文件。此示例演示了如何从目录中 require 几个相关文件。
Dir.glob(File.join('lib', '*.rb')).each do |file| require file end
该代码使用 Dir.glob
来查找 lib 目录中的所有 .rb 文件。然后单独 require 每个文件。这自动化了许多文件的加载。
Requiring 并修改加载路径
有时我们需要在 require 之前将自定义路径添加到 $LOAD_PATH
。此示例展示了如何正确修改加载路径。
$LOAD_PATH.unshift(File.expand_path('../vendor', __FILE__)) require 'custom_lib' puts CustomLib.version
该代码在 require 之前将 vendor 目录添加到加载路径。使用 unshift
确保首先搜索我们的路径。始终正确展开路径。
来源
本教程通过实际示例介绍了 Ruby 的 require 方法,展示了库加载、本地文件、gem 和路径管理技术。
作者
列出 所有 Ruby 教程。