【问题标题】:Require in an IRB shell在 IRB shell 中需要
【发布时间】:2013-08-20 15:33:34
【问题描述】:

我在 IRB shell 中使用 dos CMD

我从一个 mystuff 文件加载一个模块 需要'.\mystuff'

我更改了 mystuff 文件中的模块并再次键入 需要'.\mystuff'

当我尝试从最新版本的 mystuff 模块中调用函数或变量时,为什么 IRB 不接收文件中的更改?

【问题讨论】:

  • 您可以使用 include 'MyModule' 加载模块 :)

标签: ruby require irb


【解决方案1】:

require 不会两次加载同一个文件。如果要再次加载文件,需要使用load。请参阅What is the difference between include and require in Ruby? 了解更多信息。

【讨论】:

  • 使用load时还需要添加文件类型,所以require '.\mystuff'对应load '.\mystuff.rb'
【解决方案2】:

您的语法错误

Ruby 不使用反斜杠。您需要使用正斜杠,或使用File#join

您的 $LOAD_PATH 错误

您的$LOAD_PATH(又名$:)是错误的。您需要包含当前工作目录:

$: << '.'

在 irb 中,或在可执行文件或源文件中使用 Kernel#require_relative

【讨论】:

  • 在 Ruby 文件路径中使用反斜杠没有任何问题。 Ruby 对两者都很满意。
  • @Borodin 反斜杠是转义字符。如果它对您有用,那就太好了,但它通常会导致大量容易解决的问题。
  • OP 使用的是单引号字符串,因此此处不将反斜杠视为转义字符。加载路径必须正确,否则第一个 require 调用将失败。
  • @AndrewMarshall 您似乎在做出毫无根据的假设。 OP 没有列出格式正确的可执行代码,OP 也没有声明 没有 错误消息。在对原始帖子的完整性或正确性做出您自己的假设后,请随时添加您自己的答案。
  • @CodeGnome 原帖中有 100% 有效的代码。仅仅因为他们没有使用代码格式并不意味着它是错误的。并且“在 [调用方法] 时不接受更改”意味着方法确实有效,因此 $LOAD_PATH 设置正确。您假设存在 错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多