ruby-on-rails – 停止Rails在开发模式下卸载模块
发布时间:2020-12-17 03:51:18 所属栏目:百科 来源:网络整理
导读:我的Rails应用程序中有一个模块,它位于/ lib中 module MyModule mattr_accessor :the_variable class self def setup yield this end endend 从我的环境/#{RAILS_ENV} .rb文件中,我可以为the_variable设置特定于环境的值: MyModule.setup do |my_module_con
我的Rails应用程序中有一个模块,它位于/ lib中
module MyModule mattr_accessor :the_variable class << self def setup yield this end end end 从我的环境/#{RAILS_ENV} .rb文件中,我可以为the_variable设置特定于环境的值: MyModule.setup do |my_module_config| my_module_config.the_variable = 42 end 这很可爱,似乎工作(几乎)很好. 问题是在开发模式下,Rails通过ActiveSupport :: Dependencies卸载了一大堆模块,并及时为新请求重新加载它们.这通常是一个很好的行为,因为这意味着您在进行代码更改时不需要重新启动localhost服务器. 但是,这也清除了我初始化的the_variable变量,当下一个请求进入初始化时(显然)不会再次运行.最终结果是后续请求最终将MyModule.the_variable设置为nil而不是我正在寻找的42. 我试图找出如何在请求结束时停止Rails卸载我的模块,或者找到另一种方法来干净地为我的模块提供特定于环境的配置. 有任何想法吗? : – / 解决方法
在引用MyModule之前的环境文件中,使用require来加载文件.
require 'my_module' 这绕过了动态依赖加载机制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |