Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby要求'/blahblah.rb';vs需要文件。展开路径(';./blahblah';,u文件)_Ruby - Fatal编程技术网

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

我看到他们两个都被使用了。想知道什么更好,在什么情况下一个比另一个更好

谢谢

  • 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环境中的示例(如果您熟悉unixshell,您将了解它):

  • 第三种解决方案
    require File.expand_path('../sample.rb',_uufile_uuu)
    用于程序中,因为它显式创建完整路径,使用文件所在的目录作为锚定,与
    require./sample.rb
    相比,这是一种更安全的方法。请注意,加载ruby文件时,可以忽略文件扩展名
    .rb


希望这能澄清一些情况。

谢谢。为什么第三种解决方案比第二种更安全?因为该方法返回特定文件的“完整路径”,与“相对路径”相比,该文件在UNIX环境中总是安全的。在“irb”中尝试这两种方法,您将了解它们的工作原理。
require './blahblah.rb'
require File.expand_path('../blahblah', __FILE__)
GreyJewel ~ » ls myports.txt                                                                                                                                                         
myports.txt

GreyJewel ~ » ls ./myports.txt                                                                                                                                                       
./myports.txt