【问题标题】:Why isn't terminal locating my Ruby file? (beginner)为什么终端找不到我的 Ruby 文件? (初学者)
【发布时间】:2020-07-21 11:03:36
【问题描述】:

我尽可能地是初学者。我正在研究 The Well Grounded Rubyist。我已经使用 rbenv/homebrew 安装了 Ruby,我使用的是与本书相同的版本(2.5.1),但我无法让我的第一个名为 c2f.rb 的 ruby​​ 程序工作。

我在这里束手无策,希望能帮我弄清楚如何让我的终端运行这个程序。谢谢!

我相信我的 PATH 出现了问题,但我不知道如何修复它。当我使用echo $PATH 查看我的路径时,我的终端返回:

/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

我将 c2f.rb 保存在名为 ruby​​code 的文件夹中,该文件夹位于我的用户文件夹中。当我运行$ ruby c2f.rb 时,终端返回:

Traceback (most recent call last):
ruby: No such file or directory -- c2f.rb (LoadError)

当我在 irb 中运行它时,我收到以下错误:

Traceback (most recent call last):
        4: from /usr/bin/irb:23:in `<main>'
        3: from /usr/bin/irb:23:in `load'
        2: from /Library/Ruby/Gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
        1: from (irb):1
NameError (undefined local variable or method `c2f' for main:Object)

【问题讨论】:

  • 在尝试使用 ruby​​ 执行脚本之前,您是否使用 cd 导航到脚本所在的正确文件夹? “当我在 irb 中运行它时”是什么意思 - 你是如何尝试在 irb 中运行它的?
  • 使用 cd 有效,谢谢!每次我想运行位于那里的文件时,是否需要 cd 进行 ruby​​code?使用 irb 运行是指从终端输入 irb 然后尝试运行代码。我可以从 irb 中运行我的文件,还是必须始终在它之外?
  • 通常,要运行文件,您可以使用cd 导航到该目录,或者通过其绝对路径引用它。在从 IRB 运行文件方面,是的,您当然可以使用 requirerequire_relativeload(或者,作为最后的手段,复制粘贴)。我建议多阅读一些关于这些命令的内容。
  • 请注意,requirerequire_relative 如果您已经需要它,请不要重新加载文件,这就是为什么我在编写代码时通常使用 load 来代替。跨度>
  • 非常感谢。你在这个帮助下度过了我的一天。我已经准备好把电脑扔出窗外了。

标签: ruby-on-rails ruby terminal path


【解决方案1】:

计算机非常擅长寻找东西。因此,在 99.99% 的情况下,当计算机告诉您它找不到某物时,原因是该物真的不存在。

所以,非常您应该检查的第一步是:

  1. 实际上当前工作目录中是否存在名为c2f.rb 的文件?
  2. 如果是,请确保它确实命名为c2f.rb,而不是,例如c2f.rb(开头的空格)或c2f.rb(结尾的空格)或@ 987654327@(使用 Unicode U+03F2 GREEK LUNATE SIGMA SYMBOL (ϲ) 而不是 Unicode U+0063 LATIN SMALL LETTER C (c))或中间有零宽度空格、零宽度连接符、零宽度非连接符或任何类似的东西。

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多