2014-02-27 21 views
0

我有這個文本文件,我必須經常引用它裏面的值。我必須將數據庫中的某些值與文本文件中的某些條目進行比較。這兩個數據集都非常大。我不會將這個文本文件(我將它稱爲changefile)加載到數據庫中,因爲在數據庫中進行比較會花費太長時間。我不把changefile到數據庫表,因爲它更容易從文件中讀取,我不希望有一個新的發佈新的changefile每次搜索的上傳。如何在每個部署中緩存模型中文本文件的內容?

我做,而不是從數據庫到文本字符串讀了一系列的記錄,文件讀入到文本字符串,然後比較這些。

我具有其中從changefile文本字符串中的變量被表示的模型。它看起來像這樣:

class Standard < ActiveRecord::Base 

    def changes 
    @changes ||= read_the_file_into_an_array 
    end 

end 

這是一件好事,因爲我只是在做一次讀取的文件。但是,這是Standard類的實例化。我想要做的是確保我只按deployment讀取一次文件。

的文件讀入某種醜陋的全局變量的初始化器之外,我能做些什麼,以確保我只看過一次文件的Rails後開機?

* UPDATE *

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

退房類變量將其加載到變量或配置。我想這就是你要找的。此頁面可以讓你開始:http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/ – Coenwulf

+0

我知道該怎麼做了靜態值就像在這個例子中那樣,但是是否也可以使用setter來設置只會觸發一次的類變量? – AKWF

+0

def self.changes; @@ changes || = read_the_file_into_an_array; end – Coenwulf

回答

1

使其讀取作爲初始化的一部分,並根據文件的上下文

相關問題