【问题标题】:Rails runtime configurationRails 运行时配置
【发布时间】:2014-03-23 12:28:01
【问题描述】:

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

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

显然,这个问题的任何其他方法或解决方案都是完全受欢迎的。

非常感谢

【问题讨论】:

  • 如果您使用初始化程序,如果更改设置,应用程序将需要重新启动。我认为设置表是要走的路。
  • 您要更新什么“特定”电子邮件选项?

标签: ruby-on-rails ruby


【解决方案1】:

您需要对表格使用管理员角色。您可以使用 rails_admin Gem,并在人们更改设置时保持设置。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      顺便说一句,相当流行的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
      

      【讨论】:

        猜你喜欢
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-10
        • 2021-02-28
        相关资源
        最近更新 更多