2012-10-22 47 views
0

我希望能夠擁有一個文本文件(不在開發人員對內容的控制之下),並讓我的代碼從該文件中選擇條目並將其顯示在Web應用程序中(或者與他們做其他事情)在Rails中管理變化的文本文件

例如,這個文本文件可能是一個人的列表,或者按照順序或者隨機顯示在屏幕上的名言。

我的問題是實現這個最簡單的方法是什麼? 我應該把它放入XML並解析它嗎?把它放在YAML中?我在哪裏解析?在控制器或初始化程序中?

+0

您是否在運行時更改該文件? – iltempo

+0

我知道運行時是一個問題,我正在尋找最快的方式,編輯文件的人也不是技術人員。 –

回答

1

對於非技術人員來說,沒有什麼比擊敗純文本文件。迫使一些簡單的結構,例如每個條目

  • 一條線,或條目之間
  • 空行,或
  • 的稱號,與一些開始令牌時認識(如==)

閱讀純文本文件的一個示例:

data = File.read('/path/to/file.txt') 
data.lines.each do |line| 
    puts "Read line: #{line}" 
end 

# or split by an empty line (btw, non-technical users can insert spaces in blank lines) 
# also, remove leading and trailing whitespace from entries (i.e the newlines) 
entries = data.split(/^\s*$/).map(&:strip) 

另一個選擇是使用某些標記並使用解析的文本到您的內容,儘管這會爲您的項目引入新的寶石,如RedCarpet

+0

如何解析每行的文本文件? –

1

如果您可以在內容更改時重新部署應用程序,請將其放入YAML文件中。 YAML已經在Rails代碼的幾個地方使用過了。無需添加額外的寶石。 你也可以使用JSON。取決於你發現更多的可讀性。

如果您想在不重新部署的情況下更改內容,請將數據放入數據存儲並構建用於更改的表單。

+0

如何在我的代碼中使用yaml(鏈接就足夠了) –

+1

只需'data = YAML.load(File.read('filename.yml'))'就夠了 – Laas

+0

我在哪裏放置yaml文件?它不是配置..我也不希望它可以直接訪問 –