ruby要求'/blahblah.rb';vs需要文件。展开路径(';./blahblah';,u文件)
两者的区别是什么ruby要求'/blahblah.rb';vs需要文件。展开路径(';./blahblah';,u文件),ruby,Ruby,两者的区别是什么 require 'blahblahlblah.rb' vs vs 我看到他们两个都被使用了。想知道什么更好,在什么情况下一个比另一个更好 谢谢 require blaba.rb正在搜索默认的gem路径以加载文件,这取决于您使用的ruby版本。例如,RVM将在$HOME/.RVM/rubies/..中搜索,而系统范围的ruby将在发行版的默认路径中搜索。请注意,这是gem所在的位置,但是您可以手动在同一路径中添加一个库,例如mylibrary.rb,并在任何程序中使用它。然而
require 'blahblahlblah.rb'
vs
vs
我看到他们两个都被使用了。想知道什么更好,在什么情况下一个比另一个更好
谢谢
正在搜索默认的gem路径以加载文件,这取决于您使用的ruby版本。例如,RVM将在require blaba.rb
中搜索,而系统范围的ruby将在发行版的默认路径中搜索。请注意,这是gem所在的位置,但是您可以手动在同一路径中添加一个库,例如$HOME/.RVM/rubies/..
,并在任何程序中使用它。然而,这是一件可怕的事情,创建gem并将其安装到系统中是一个更干净的过程mylibrary.rb
加载工作目录中的文件。您可以添加完整路径,如require./blabla.rb
。它的工作原理基本相同。在类UNIX的世界中,require/home/username/library/myproject/models/sample.rb
符号表示当前目录。此解决方案通常在/
中用于加载rails模型,即irb
到users.rb
或irb
并使用它。给您一个shell环境中的示例(如果您熟悉unixshell,您将了解它):pry
- 第三种解决方案
用于程序中,因为它显式创建完整路径,使用文件所在的目录作为锚定,与require File.expand_path('../sample.rb',_uufile_uuu)
相比,这是一种更安全的方法。请注意,加载ruby文件时,可以忽略文件扩展名require./sample.rb
.rb
希望这能澄清一些情况。谢谢。为什么第三种解决方案比第二种更安全?因为该方法返回特定文件的“完整路径”,与“相对路径”相比,该文件在UNIX环境中总是安全的。在“irb”中尝试这两种方法,您将了解它们的工作原理。
require './blahblah.rb'
require File.expand_path('../blahblah', __FILE__)
GreyJewel ~ » ls myports.txt
myports.txt
GreyJewel ~ » ls ./myports.txt
./myports.txt