我有这个文本文件,我必须不断地引用它里面的值。我必须将数据库中的某些值与文本文件中的某些条目进行比较。两个数据集都非常大。我没有将这个文本文件(我称之为changefile
)加载到数据库中,因为在数据库中进行比较需要的时间太长。我没有将changefile
放入数据库表中,因为它更容易从文件中读取,而且我不想每次新的时候都要搜索新的changefile
一个被释放。
我所做的是将数据库中的一堆记录读入文本字符串,将文件读入文本字符串,并进行比较。
我有一个模型,其中来自changefile的文本字符串在变量中表示。它看起来像这样:
class Standard < ActiveRecord::Base
def changes
@changes ||= read_the_file_into_an_array
end
end
这很好,因为我只读了一次文件。但是,每Standard
级实例化一次。我想要做的是确保我每deployment
只读一次文件。
除了在初始化程序中将文件读入某种丑陋的全局变量之外,我还能做些什么来确保在Rails启动后我只读过一次文件?
*更新*
class MyObject < ParentObject
@changes ||= get_changes
class << self
attr_accessor :changes, :get_changes
def get_changes
<read file and return array>
end
end
end
不能让这个工作。错误:
NameError: undefined local variable or method `get_changes' for MyObject:Class
我根本得不到它。为什么get_changes
被视为local
变量?
答案 0 :(得分:1)
将其作为初始化程序的一部分进行读取,并根据文件上下文将其加载到变量或配置中