类 YAML::Store
YAML::Store
提供与 PStore
相同的功能,但它使用 YAML
来转储对象,而不是 Marshal
。
示例¶ ↑
require 'yaml/store' Person = Struct.new :first_name, :last_name people = [Person.new("Bob", "Smith"), Person.new("Mary", "Johnson")] store = YAML::Store.new "test.store" store.transaction do store["people"] = people store["greeting"] = { "hello" => "world" } end
运行上述代码后,“test.store” 的内容将为
--- people: - !ruby/struct:Person first_name: Bob last_name: Smith - !ruby/struct:Person first_name: Mary last_name: Johnson greeting: hello: world
公共类方法
initialize( file_name, yaml_opts = {} ) 点击切换源代码
initialize( file_name, thread_safe = false, yaml_opts = {} )
创建一个新的 YAML::Store
对象,它将数据存储在 file_name
中。如果文件不存在,它将被创建。
YAML::Store
对象始终是可重入的。但是,如果将 thread_safe 设置为 true,则它将以牺牲少量性能为代价变得线程安全。
通过 yaml_opts
传递的选项将在将存储转换为 YAML
时使用 Hash#to_yaml()
。
调用超类方法
PStore::new
# File lib/yaml/store.rb, line 53 def initialize( *o ) @opt = {} if o.last.is_a? Hash @opt.update(o.pop) end super(*o) end