【问题标题】:Ruby: Require Fails To Import - Need To Set Root DirectoryRuby:需要导入失败 - 需要设置根目录
【发布时间】:2019-03-27 00:32:45
【问题描述】:

请原谅我对 Ruby 的缺乏经验,但我无法在具有以下结构的第三方项目中运行脚本:

˅ alpha
  ˅ lib
     ˅ bravo
        golf.rb
     ˅ charlie
        ˃ delta
           ˅ echo
              foxtrot.rb
              require "charlie/delta/echo/__init"
              __init.rb
              require "bravo/golf"

我的命令行应该是什么来运行脚本“foxtrot.rb”,因为以下会产生错误:

ruby "c:\arby\lib\bravo\charlie\delta\echo\foxtrot.rb"

"'require': cannot load such file -- charlie/delta/echo/__init (LoadError)"

【问题讨论】:

    标签: ruby windows path require


    【解决方案1】:

    如果这是 __init.rb 中的代码,它不会工作。

    require "charlie/delta/echo/__init"
    __init.rb
    require "bravo/golf"
    

    require 告诉 ruby​​ 将代码加载到 ruby​​ 文件中。为了使其工作,需要正确组织文件。您也可以使用require_relative,但它们仍然需要来自调用它们的文件的相对路径。见What is the difference between require_relative and require in Ruby?

    【讨论】:

    • 是的。是否可以设置需要导入相对定位的根目录(此处为 lib),如果可以,如何设置?
    • 我无法想象为什么有人会在如此混乱的文件结构中创建脚本。此外,如果不知道这个疯狂的老鼠窝里可能隐藏着什么,我肯定不会执行这样的脚本。
    • 忘记我使用的命名约定——原始项目来自麻省理工学院的一个研究项目——我并不担心它的出处。我可以设置一个“加载路径”根目录,所有需要都相对位于其中吗?有Pathological 的经验吗?
    • 我没用过那个gem但是试了一下,虽然很久没更新了。如果它不起作用,请尝试支持较新的 ruby​​ 版本的 fork。 github.com/ooyala/pathological/pull/6
    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2018-09-16
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多