Rails运行时配置

时间:2014-02-21 19:43:40

标签: ruby-on-rails ruby

我正在寻找一种配置Rails应用程序的好方法。例如,我需要特定的“管理员”角色才能激活特定选项,使应用程序更改发送电子邮件的方式(基于不同的逻辑)。该更改必须在整个应用程序生命周期中持续存在,包括重新启动...直到另一个管理员决定取消选中该选项。

现在我们可以创建一个“设置”表并在其中存储配置,但感觉最合适的方法是使用初始化程序(app.rb作为示例)。我知道在rails中我可以获得这些配置属性并将其更改为我想要的任何内容...现在我怎么能“坚持”它们?

显然,任何其他方法或解决方案都是非常受欢迎的。

非常感谢

3 个答案:

答案 0 :(得分:1)

让您的应用程序修改其在磁盘上的代码以响应用户输入可能不是最合适的方法 - 只需考虑如何使用例如应用更新。这是一个脆弱的设计。此配置是用户提供的数据,因此将其存储为用户提供的数据。

答案 1 :(得分:0)

您需要将admin角色与表一起使用。您可以使用rails_admin Gem,并在人们更改设置时保留设置。

答案 2 :(得分:0)

我有一段时间有同样的问题,并提出了你提出的建议:在db中保存值,默认值在初始化程序中设置。您总是可以在运行时更改值,它将被持久化并在任何重新启动后继续存在,这不能说是环境变量。 我甚至做了一个宝石,但它太不成熟,无法给出一个链接,但可以向你保证它很容易实现

很受欢迎的BTW Spree gem创建了这样的表格

  create_table "spree_preferences", force: true do |t|
    t.text     "value"
    t.string   "key"
    t.string   "value_type"
    t.datetime "created_at"
    t.datetime "updated_at"
  end