類別 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,它就會變成執行緒安全,但效能會稍微下降。

透過 Hash#to_yaml() 將儲存轉換成 YAML 時,會使用透過 yaml_opts 傳入的選項。

呼叫超類別方法 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