和有什么区别
require 'blahblahlblah.rb'
对比
require './blahblah.rb'
对比
require File.expand_path('../blahblah', __FILE__)
我看到它们都被使用了。想知道什么更好,在什么情况下一个比另一个更好。
谢谢!
和有什么区别
require 'blahblahlblah.rb'
对比
require './blahblah.rb'
对比
require File.expand_path('../blahblah', __FILE__)
我看到它们都被使用了。想知道什么更好,在什么情况下一个比另一个更好。
谢谢!
require blaba.rb
正在搜索您的默认 gem 路径以加载文件,这取决于您使用的 ruby 版本。例如,RVM 将在系统范围内搜索,$HOME/.rvm/rubies/...
而系统范围的 ruby 将在分发的默认路径中搜索。请注意,这是 gem 所在的位置,但您可以手动添加一个库,例如mylibrary.rb
在同一路径中并在您的任何程序中使用它。然而,这是一件很糟糕的事情,创建 gem 并将它们安装到系统中是一个更简洁的过程。
require ./blabla.rb
加载位于您的工作目录中的文件。您可以添加完整路径,例如require /home/username/library/myproject/models/sample.rb
. 它的工作原理几乎相同。在类 UNIX 世界中,./
符号表示当前目录。该解决方案通常用于irb
将 Rails 模型加载users.rb
到irb
或pry
使用它。给你一个 shell 环境中的例子(如果你熟悉 UNIX shell,你会明白的):
GreyJewel ~ » ls myports.txt
myports.txt
GreyJewel ~ » ls ./myports.txt
./myports.txt
第三种解决方案require File.expand_path('../sample.rb', __FILE__)
用于程序中,因为它显式创建了一个完整路径,使用包含该行的文件所在的目录作为锚点,与require ./sample.rb
. 请注意,当您加载 ruby 文件时,可以省略文件扩展名.rb
.
希望这能澄清一点情况。