ruby-on-rails - 如何在每次部署时将文本文件的内容缓存到模型中一次?

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

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

相关文章:

mysql - 数据库错误 :migrate using JRuby on Rails with remote Amazon MySQL via SSL connection

ruby-on-rails - Rails 不使用 Heroku Redis 在后台发送电子邮件

javascript - 使用 datetimepicker 防止 f.text_field 中的自定义输入(Rails 3.2,Bootstrap)

ruby-on-rails - 从 Rails 5 获取公共(public) Assets 图像链接

ssl - puppet 大师没有将代理主机名/fqdn 传递给 enc 脚本

ruby-on-rails - 将 Rails 4.2.1 降级到 Rails 4.0.2

php - mysql 中的 Rails 多数组格式

http - 如何将https代理到http并启用ssl?

java - Tomcat Spring 中的 SSLSocket

rails_admin 找不到 ckeditor.js 文件