Ruby项目与库的使用指南
立即解锁
发布时间: 2025-08-20 01:30:31 阅读量: 1 订阅数: 3 


Ruby编程入门与实践指南
# Ruby项目与库的使用指南
## 1. 项目与文件间代码的使用
随着对Ruby的熟悉,我们会从编写简单的小程序转向构建更复杂的应用和系统,这些大型应用和系统通常被称为项目。在Ruby中,将不同的类放在不同的文件里是分离功能的常见做法,这样可以方便地在多个项目中复用代码。
### 1.1 基本文件包含
考虑以下代码:
```ruby
puts "This is a test".vowels.join('-')
```
直接运行这段代码会报错,因为Ruby没有为`String`类提供`vowels`方法。我们可以扩展`String`类来实现这个方法:
```ruby
class String
def vowels
self.scan(/[aeiou]/i)
end
end
```
如果将这个定义和之前的`puts`代码放在同一个文件中,运行结果将是:
```
i-i-a-e
```
为了在多个程序中复用这些方法,我们可以将其复制到一个单独的文件中,然后使用`require`命令将外部文件加载到当前程序中。例如,将上述扩展代码放在`string_extensions.rb`文件中:
```ruby
class String
def vowels
self.scan(/[aeiou]/i)
end
end
```
在`vowel_test.rb`文件中使用:
```ruby
require 'string_extensions'
puts "This is a test".vowels.join('-')
```
运行`vowel_test.rb`,就能得到预期的结果。除了`require`,还可以使用`load`来加载外部源代码文件。例如:
```ruby
load 'string_extensions'
puts "This is a test".vowels.join('-')
```
`require`和`load`的区别在于,`require`只会处理外部代码一次,而`load`每次调用都会重新处理代码。以下是一个示例:
在`a.rb`文件中:
```ruby
puts "Hello from a.rb"
```
在`b.rb`文件中使用`require`:
```ruby
require 'a'
puts "Hello from b.rb"
require 'a'
puts "Hello again from b.rb"
```
运行`ruby b.rb`的结果是:
```
Hello from a.rb
Hello from b.rb
Hello again from b.rb
```
使用`load`的代码如下:
```ruby
load 'a'
puts "Hello from b.rb"
load 'a'
puts "Hello again from b.rb"
```
运行结果是:
```
Hello from a.rb
Hello from b.rb
Hello from a.rb
Hello again from b.rb
```
通常,Ruby程序员更倾向于使用`require`。
### 1.2 从其他目录包含文件
`load`和`require`都可以接受本地或绝对文件名。例如,`require 'a'`会先在当前目录中查找`a.rb`,然后在硬盘上的其他多个目录中查找。Ruby将用于搜索包含文件的目录列表存储在特殊变量`$:`中。可以使用`irb`查看`$:`的默认内容:
```ruby
$:.each { |d| puts d }
```
输出可能如下:
```
/usr/local/lib/ruby/site_ruby/1.8
/usr/local/lib/ruby/site_ruby/1.8/i686-darwin8.8.1
/usr/local/lib/ruby/site_ruby
/usr/local/lib/ruby/1.8
/usr/local/lib/ruby/1.8/i686-darwin8.8.1
.
```
如果要添加额外的目录,可以这样做:
```ruby
$:.push '/your/directory/here'
require 'yourfile'
```
### 1.3 逻辑与包含代码
`requi
0
0
复制全文
相关推荐










