我有这个文本文件,我必须不断地引用其中的值。我必须将数据库中的某些值与文本文件中的某些条目进行比较。这两个数据集都非常大。我没有将此文本文件(我将其称为 changefile
)加载到数据库中,因为在数据库中进行比较花费的时间太长。而且我没有将 changefile
放入数据库表中,因为从文件中读取它更容易,而且我不想搜索上传新的 changefile
每次发布新的代码。
我所做的是将数据库中的一堆记录读入文本字符串,将文件读入文本字符串,然后进行比较。
我有一个模型,其中来自更改文件的文本字符串在一个变量中表示。它看起来像这样:
class Standard < ActiveRecord::Base
def changes
@changes ||= read_the_file_into_an_array
end
end
这很好,因为我只读取一次文件。但是,这是每个 Standard
类的实例化一次。我想要做的是确保每次部署
我只读取一次文件。
除了在初始化程序中将文件读入某种丑陋的全局变量之外,我还能做些什么来确保我只在 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
变量访问?
最佳答案
将其作为初始化程序的一部分读取,并根据文件上下文将其加载到变量或配置中
关于ruby-on-rails - 如何在每次部署时将文本文件的内容缓存到模型中一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22074676/