我希望能夠擁有一個文本文件(不在開發人員對內容的控制之下),並讓我的代碼從該文件中選擇條目並將其顯示在Web應用程序中(或者與他們做其他事情)在Rails中管理變化的文本文件
例如,這個文本文件可能是一個人的列表,或者按照順序或者隨機顯示在屏幕上的名言。
我的問題是實現這個最簡單的方法是什麼? 我應該把它放入XML並解析它嗎?把它放在YAML中?我在哪裏解析?在控制器或初始化程序中?
我希望能夠擁有一個文本文件(不在開發人員對內容的控制之下),並讓我的代碼從該文件中選擇條目並將其顯示在Web應用程序中(或者與他們做其他事情)在Rails中管理變化的文本文件
例如,這個文本文件可能是一個人的列表,或者按照順序或者隨機顯示在屏幕上的名言。
我的問題是實現這個最簡單的方法是什麼? 我應該把它放入XML並解析它嗎?把它放在YAML中?我在哪裏解析?在控制器或初始化程序中?
對於非技術人員來說,沒有什麼比擊敗純文本文件。迫使一些簡單的結構,例如每個條目
閱讀純文本文件的一個示例:
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。
如何解析每行的文本文件? –
如果您可以在內容更改時重新部署應用程序,請將其放入YAML文件中。 YAML已經在Rails代碼的幾個地方使用過了。無需添加額外的寶石。 你也可以使用JSON。取決於你發現更多的可讀性。
如果您想在不重新部署的情況下更改內容,請將數據放入數據存儲並構建用於更改的表單。
如何在我的代碼中使用yaml(鏈接就足夠了) –
只需'data = YAML.load(File.read('filename.yml'))'就夠了 – Laas
我在哪裏放置yaml文件?它不是配置..我也不希望它可以直接訪問 –
您是否在運行時更改該文件? – iltempo
我知道運行時是一個問題,我正在尋找最快的方式,編輯文件的人也不是技術人員。 –