Ruby on rails 是否有一个安全点来存储动态创建的Rails模型?
我使用以下Rails 3模型动态创建模型:Ruby on rails 是否有一个安全点来存储动态创建的Rails模型?,ruby-on-rails,Ruby On Rails,我使用以下Rails 3模型动态创建模型: # encoding: UTF-8 require_dependency 'read_only' require_dependency 'readings_methods' class Reading < ActiveRecord::Base self.abstract_class = true include ReadOnly include ReadingsMethods @@mutex = Mutex.new @
# encoding: UTF-8
require_dependency 'read_only'
require_dependency 'readings_methods'
class Reading < ActiveRecord::Base
self.abstract_class = true
include ReadOnly
include ReadingsMethods
@@mutex = Mutex.new
@@children = {}
def self.with_table(t)
@@mutex.synchronize do
child = @@children[t]
if child.nil?
child = Class.new(self) do
self.table_name = t
end
@@children[t] = child
end
child
end
end
end
编码:UTF-8
需要依赖项“只读”
需要_依赖项“读数_方法”
类读取然而,调试显示,
@@children
在每次页面加载时都会重置,从而使每个页面加载非常非常缓慢。我如何防止这种情况?是什么原因造成的?除非我记忆孩子们,否则Rails将进入无限循环,这让我相信每当我创建新模型或类似的东西时,它至少会重新加载一些类。如何防止这种行为?Rails在开发模式下为您重新加载代码,这样您就不必每次进行更改时都重新启动Rails服务器(在Rails 3.2中,它只尝试重新加载已更改的代码)
当一个类被重新加载时,rails将取消设置该常量并加载一个新的副本,因此新的类将有一组新的类变量
ActiveSupport::Dependencies。自动加载一次路径
和ActiveSupport::Dependencies。自动加载路径
控制以这种方式重新加载的内容。您应该能够将文件的(完整)路径添加到“自动加载一次”路径,以防止重新加载该文件(但随后必须重新启动rails,以便查看对其所做的任何更改)但为什么每次加载页面时都会重新加载该文件?ActiveRecord::Base
中有什么东西触发了这种行为吗?如果您使用的是