【问题标题】:Managing a changing text file in Rails在 Rails 中管理不断变化的文本文件
【发布时间】:2012-10-22 06:47:13
【问题描述】:

我希望能够拥有一个文本文件(它不受开发人员对内容的控制),并让我的代码从该文件中挑选条目并将它们显示在网络应用程序中(或对它们执行其他操作)

例如,此文本文件可以是人员列表,或按顺序或随机显示在屏幕上的名言。

我的问题是最简单的实现方法是什么? 我应该把它放在 XML 中并解析它吗?把它放在 YAML 中?我在哪里进行解析?在控制器中还是在初始化器中?

【问题讨论】:

  • 您是否在运行时更改该文件?
  • 我知道运行时是个问题,我正在寻找最快的方法,而且编辑文件的人也不是技术人员。

标签: ruby ruby-on-rails-3 parsing yaml


【解决方案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

【讨论】:

  • 如何解析每行的文本文件?
【解决方案2】:

如果您能够在内容更改时重新部署您的应用,请将其放入 YAML 文件中。 YAML 已经在 Rails 代码中的多个地方使用。无需添加额外的宝石。 您也可以使用 JSON。取决于你觉得什么更易读。

如果您想在不重新部署的情况下更改内容,请将数据放入数据存储并构建用于更改的表单。

【讨论】:

  • 我在哪里放置 yaml 文件?它不是配置..我也不希望它可以直接访问
  • 所以如果它用于部署我应该把它放在配置中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 2014-11-23
  • 2013-09-02
  • 2018-02-25
相关资源
最近更新 更多