Ruby on rails Ruby和/或Rails缓存要求();编辑脚本?

Ruby on rails Ruby和/或Rails缓存要求();编辑脚本?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在测试一个基本的Rails应用程序,我似乎在一个库脚本上得到了一些不需要的缓存行为,这个库脚本被require()添加到我的控制器脚本中 假设FooController.rb包含以下内容: require 'utils' # a library script class FooController def some_action @some_member = do_something() # global method defined in utils.rb end end

我正在测试一个基本的Rails应用程序,我似乎在一个库脚本上得到了一些不需要的缓存行为,这个库脚本被require()添加到我的控制器脚本中

假设
FooController.rb
包含以下内容:

require 'utils' # a library script

class FooController
  def some_action
    @some_member = do_something() # global method defined in utils.rb
  end
end
似乎对
utils.rb的更改在我重新启动Rails服务器之前不会生效。我不认为这是由于Rails类缓存的错误配置造成的,因为a)我在“开发”环境中运行,b)我可以直接更改控制器代码(例如,上面的
some_action
方法),这些更改将在下次执行脚本时反映出来。我一直在通过调用
将垃圾消息放入控制台来测试这一点


Ruby或Rails中是否存在会导致require()-ed脚本保持缓存的行为?如果是这样,是否有办法配置该行为?

如果每次遇到代码时都希望
要求
,那么确实需要
加载


Rails类重载器相对来说比较幼稚。我相信它只是为了重新加载控制器和模型之类的东西,而将您可能需要的任何东西都留在您的项目中。因此,如果您在lib目录或其他地方更改了一些自定义代码,那么您需要重新启动Rails服务器。

这看起来像是一个近乎重复的问题,还有许多其他非常类似的问题。这一个是关于引擎的,但两者都是关于自动重新加载
/lib
中的文件。有趣且有用,但我也不确定是否需要,因为库脚本可能会在当前过程中涉及的脚本中多次引用。我希望当前流程尊重引用文件的最新版本。当然,这是使用非编译语言的基本原则?当您需要对特定脚本进行单行更改,并且启用了类缓存时,在生产环境中会发生什么?要使更改生效,是否需要重新启动服务器,或者是否有办法对其进行热交换?由于Ruby是动态的,您可以动态替换方法或类,但重新启动应用程序也非常简单。通常,机架服务器可以在不完全重新启动的情况下重新加载应用程序(例如触摸tmp/restart.txt文件),但它可以重新加载所有内容(不仅仅是单个文件)。还有gem活动重新加载。我没有使用过它,也不确定它在这个场景中是否有用。谢谢,@RubishGupta…如果它在这个场景中没有帮助,那么它至少回答了我对Rails根本不尊重脚本修改时间戳的一些后续关注。老实说,让我感到非常惊讶的是,像主动重新加载这样的东西一开始并没有内置到Rails中。