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

huacnlee · 2019年04月26日 · 最后由 canonpd 回复于 2019年07月19日 · 6877 次阅读

如果你的项目内在使用 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 类里面直接写默认键值,感觉不太习惯。

canonpd 回复

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

huacnlee 回复

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号