Ruby:如果更改了文件,则再次需要一个文件

标签 ruby require

我写了一个在 config/ 中查找配置文件的 gem。这工作正常,但如果用户更改任何配置,他们必须停止程序并在我的 gem 加载新配置之前重新启动它。这将要求他们在每次更改时重新启动整个 Rails 应用程序,这并不理想。

有没有办法“重新要求”一个文件,以便它重新加载它而不是使用缓存的版本。

最佳答案

您可以使用load 代替require。这将加载文件,而不管它之前是否已经加载过。请注意,对于 load,您需要指定 .rb 扩展名,它对于 require 是可选的。所以 require "path/to/myconfig" 变成了 load "path/to/myconfig.rb"

请注意,这不会取消定义先前配置定义的任何内容。因此,如果配置从 $verbose = true; $debug = true$verbose = false 然后 $verbose 将是 false 但是 $debug重新加载配置后仍将是 true

当然,您需要将 load 语句放在每次重新加载配置文件时都会执行的地方(即在某些方法或 Hook 中)。

关于Ruby:如果更改了文件,则再次需要一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179012/

相关文章:

ruby - 查找特定长度的字符串的最后一次出现

ruby-on-rails - 使用 validates_presence_of 和 validates_numericality_of 时验证失败

javascript - 隐藏从 Meteor Methods 调用的 secret 服务器代码

heroku - 应用程序崩溃 : active_support/dependencies. rb:251:in `require':无法加载此类文件 - JSON(LoadError)

javascript - 如何在 Node.js 应用程序中需要额外的模块

javascript - 限制 npm 依赖模块对 require(隔离)的使用

ruby - 如何在纯 Ruby(无 Rails)中使用 Capybara?

ruby - 列出类对象的名称

ruby - Nokogiri 等效于 jQuery closest() 方法,用于在树中查找第一个匹配的祖先

javascript - 动态要求和取消要求文件