Gem 全新 rails-settings-cached 设计 2.x 发布

huacnlee · April 26, 2019 · Last by canonpd replied at July 19, 2019 · 6854 hits

如果你的项目内在使用 rails-settings-cached,升级请一定注意 2.0 的变化,否则将会无法运行。

rails-settings-cached 2.x 全新设计了 API,新的版本会兼容老的数据(在数据库中的),但使用方式不兼容。所以在升级之前请阅读 2.x 的使用介绍,并根据需要调整你的项目使用。

  • 全新的 API 设计;
  • 不在支持 scope (include RailsSettings::Extend) 的方式;

之前的这个支持以实际来看,不如 Rails 的 serialize 功能好用,2.0 不在支持这种数据读取了,如果你的项目在使用,可以尝试 这样的方式兼容

  • 不在需要 YAML 的默认配置文件,所有都在 Setting model 指定;
  • 除非你用 field 定义设置键,否则是无法使用的;

例如:

class Setting < RailsSettings::Base
  field :host, default: "http://example.com"
  field :readonly_item, type: :integer, default: 100, readonly: true
  field :user_limits, type: :integer, default: 1
  field :admin_emails, type: :array, default: %w[[email protected]]
  field :captcha_enable, type: :boolean, default: 1
  field :smtp_settings, type: :hash, default: {
    host: "foo.com",
    username: "[email protected]",
    password: "123456"
  }
end
  • 新的设计对性能做了改进,以实际的项目应用经验来看,往往我们一个页面会有很多的 key 调用,所以 2.x 版本开始,cache 和 db 的载入是一次的,一条 SQL 或 一次缓存的访问,同一个请求周期设置信息是可以重复利用的。

https://github.com/huacnlee/rails-settings-cached

请抽空把 HomeLand 中的 rails-settings-cached 升级到新版本,我们好参考的搞起。😃,昨天跑 bundle update 项目崩了,赶紧限定到 0.7 了。

等 HomeLand 集成新的进去,确定没问题了,我再升😄

使用方法变化挺大的。

不在需要 YAML 的默认配置文件,所有都在 Setting model 指定,是指不支持 config/app.yml 文件了吗?

在 Setting 类里面直接写默认键值,感觉不太习惯。

Reply to canonpd

Homeland 还没空弄,你可以看看 BlueDoc 里面的实现

Reply to huacnlee

看到 homeland 已经更新上去了。俺也跟进了

You need to Sign in before reply, if you don't have an account, please Sign up first.