如何在每次部署时在模型中缓存文本文件的内容?

时间:2014-02-27 16:36:36

标签: ruby-on-rails ssl ruby-on-rails-4

我有这个文本文件,我必须不断地引用它里面的值。我必须将数据库中的某些值与文本文件中的某些条目进行比较。两个数据集都非常大。我没有将这个文本文件(我称之为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变量?

1 个答案:

答案 0 :(得分:1)

将其作为初始化程序的一部分进行读取,并根据文件上下文将其加载到变量或配置中