我正在寻找一个红宝石宝石(或开发一个想法),它可以在运行时刷新配置文件(yaml)。这样我可以存储在变量中并使用它们。红宝石宝石自动重新加载配置文件在运行时
0
A
回答
1
4
在Configurabilty(公开:我是作者)中有一个配置对象,你可以单独使用它,也可以将它作为可配置性mixin的一部分。从the documentation:
可配置还包括Configurability::Config
,可被用于加载YAML配置文件, 然后本哈希样和一个结构一样的界面既用于读 配置节一个相当简单的 配置对象类和价值观;它意味着与可配置性一起使用,但它本身也很有用。
下面是一个演示其功能的简单示例。假设你有一个 配置文件看起来像这样:
---
database:
development:
adapter: sqlite3
database: db/dev.db
pool: 5
timeout: 5000
testing:
adapter: sqlite3
database: db/testing.db
pool: 2
timeout: 5000
production:
adapter: postgres
database: fixedassets
pool: 25
timeout: 50
ldap:
uri: ldap://ldap.acme.com/dc=acme,dc=com
bind_dn: cn=web,dc=acme,dc=com
bind_pass: [email protected]@ge
branding:
header: "#333"
title: "#dedede"
anchor: "#9fc8d4"
可以加载此配置,如下所示:
require 'configurability/config'
config = Configurability::Config.load('examples/config.yml')
# => #<Configurability::Config:0x1018a7c7016 loaded from
examples/config.yml; 3 sections: database, ldap, branding>
,然后用结构般的方法来访问它:
config.database
# => #<Configurability::Config::Struct:101806fb816
{:development=>{:adapter=>"sqlite3", :database=>"db/dev.db", :pool=>5,
:timeout=>5000}, :testing=>{:adapter=>"sqlite3",
:database=>"db/testing.db", :pool=>2, :timeout=>5000},
:production=>{:adapter=>"postgres", :database=>"fixedassets",
:pool=>25, :timeout=>50}}>
config.database.development.adapter
# => "sqlite3"
config.ldap.uri
# => "ldap://ldap.acme.com/dc=acme,dc=com"
config.branding.title
# => "#dedede"
或使用使用Symbol
s,String
s或 的混合的哈希样接口:
config[:branding][:title]
# => "#dedede"
config['branding']['header']
# => "#333"
config['branding'][:anchor]
# => "#9fc8d4"
您可以通过可配置接口安装:
config.install
检查,看它是否是从,因为你 加载它改变加载的文件:
config.changed?
# => false
# Simulate changing the file by manually changing its mtime
File.utime(Time.now, Time.now, config.path)
config.changed?
# => true
如果已经更改(或者即使没有更改),您可以重新加载它,然后通过可配置界面自动重新安装它:
config.reload
您可以通过相同的Struct-或哈希样的接口进行修改和写入修改后的配置背出同一个文件:
config.database.testing.adapter = 'mysql'
config[:database]['testing'].database = 't_fixedassets'
然后将其转储到YAML字符串:
config.dump
# => "--- \ndatabase: \n development: \n adapter: sqlite3\n
database: db/dev.db\n pool: 5\n timeout: 5000\n testing: \n
adapter: mysql\n database: t_fixedassets\n pool: 2\n timeout:
5000\n production: \n adapter: postgres\n database:
fixedassets\n pool: 25\n timeout: 50\nldap: \n uri:
ldap://ldap.acme.com/dc=acme,dc=com\n bind_dn:
cn=web,dc=acme,dc=com\n bind_pass: [email protected]@ge\nbranding: \n
header: \"#333\"\n title: \"#dedede\"\n anchor: \"#9fc8d4\"\n"
或写回它从加载的文件:
config.write
当涉及到缓存中
相关问题
- 1. Python /红宝石:cronjob将不会加载红宝石宝石?
- 2. 卸载红宝石宝石
- 3. 无法加载红宝石宝石irb
- 4. 红宝石宝石加载失败
- 5. 红宝石宝石不会运行
- 6. 红宝石宝石文档
- 7. 如何重新加载红宝石类
- 8. 如何自动加载红宝石
- 9. 红宝石宝石:无法加载此类文件
- 10. 红宝石“邮件”宝石文档
- 11. 移动文件 - 红宝石
- 12. 红宝石宝石 - 运行时显示的表彰宝石错误:宝石更新--system
- 13. 自定义红宝石宝石不服从配置信息
- 14. 无法卸载红宝石宝石
- 15. 红宝石散列在红宝石
- 16. 红宝石:require_relative无法加载文件
- 17. 红宝石:如何从加载文件
- 18. 加载红宝石DSL文件点播
- 19. 重新包装红宝石
- 20. 更新红宝石宝石1.8.5
- 21. 错误更新红宝石宝石sequel_pg
- 22. 运行和红宝石文件
- 23. 宝石安装红宝石
- 24. 调试宝石红宝石
- 25. 红宝石程序宝石
- 26. 错误红宝石宝石
- 27. Twitter的红宝石宝石
- 28. 红宝石宝石 - LoadError
- 29. 红宝石宝石LoadError
- 30. 安装红宝石宝石
那是非常有帮助在运行时在配置文件中形成。我有这种情况,现在很容易处理。谢谢! – maddin2code 2014-02-14 10:32:31