【发布时间】:2013-08-20 15:33:34
【问题描述】:
我在 IRB shell 中使用 dos CMD
我从一个 mystuff 文件加载一个模块 需要'.\mystuff'
我更改了 mystuff 文件中的模块并再次键入 需要'.\mystuff'
当我尝试从最新版本的 mystuff 模块中调用函数或变量时,为什么 IRB 不接收文件中的更改?
【问题讨论】:
-
您可以使用 include 'MyModule' 加载模块 :)
我在 IRB shell 中使用 dos CMD
我从一个 mystuff 文件加载一个模块 需要'.\mystuff'
我更改了 mystuff 文件中的模块并再次键入 需要'.\mystuff'
当我尝试从最新版本的 mystuff 模块中调用函数或变量时,为什么 IRB 不接收文件中的更改?
【问题讨论】:
require 不会两次加载同一个文件。如果要再次加载文件,需要使用load。请参阅What is the difference between include and require in Ruby? 了解更多信息。
【讨论】:
load时还需要添加文件类型,所以require '.\mystuff'对应load '.\mystuff.rb'。
Ruby 不使用反斜杠。您需要使用正斜杠,或使用File#join。
您的$LOAD_PATH(又名$:)是错误的。您需要包含当前工作目录:
$: << '.'
在 irb 中,或在可执行文件或源文件中使用 Kernel#require_relative。
【讨论】:
require 调用将失败。
$LOAD_PATH 设置正确。您假设存在 错误。