代码之家  ›  专栏  ›  技术社区  ›  Nakilon earlonrails

为什么我不能用“load”加载具有特定文件名的脚本?

  •  2
  • Nakilon earlonrails  · 技术社区  · 14 年前

    昨天我发现,我无法重新加载我的脚本 rss.rb using load 。它只为我做了几秒钟的未知操作,返回 true 并且不执行脚本。但是,使用 Require_relative可以(一次)无问题地加载它。我必须重命名脚本文件,以便根据需要使用它。
    so why require eu relative.>code>works,but load.>code>doesn't?以及如何知道哪些文件名不能用 load加载?
    我使用的是ruby 1.9.2p0(2010-08-18)[i386-mingw32]

    更新:

    c:>type 1.rb
    加载“rss.rb”
    P负载“2.rb”
    
    c:>键入rss.rb 加载“rss.rb”
    c:>类型2.rb P‘2.RB已加载’
    c:>Ruby 1.rb 真 “2.RB已加载” 正确require_relative
    . 我必须重新命名脚本文件,以便根据需要使用它。
    所以为什么需要相对有效,但是负载不?以及如何知道哪些文件名不能加载负载?
    我在用Ruby 1.9.2p0(2010年8月18日)【i386-mingw32】

    UPD:

    C:>类型1.rb
    加载“rss.rb”
    P负载“2.rb”
    
    C:>键入rss.rb 加载“rss.rb”
    C:>类型2.rb P‘2.RB已加载’
    C:>Ruby 1.rb(红宝石1.rb) 真 “2.RB已加载” 真
    1 回复  |  直到 14 年前
        1
  •  0
  •   sepp2k    14 年前

    您正在从标准库加载rss.rb。 load 通过 $LOAD_PATH 首先,只有在没有找到该文件的情况下,才能在当前目录中查找该文件。

    您可以通过执行以下操作使其仅在当前目录中显示 load "./rss.rb" .

    它的工作原理 require_relative 是吗? 需要相对 从来没看过 $加载路径 .

    使用时 负载 你应该记住 负载 ,不同于 需要相对 将在当前目录中查找文件,而不是在脚本所在的目录中。因此,它是否找到该文件取决于调用脚本时所在的目录。(当然,对于使用 require 在以前的Ruby版本中)。