论坛首页 编程语言技术论坛

PStore Meets YAML- 有这个必要吗?

浏览 6122 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-10-27   最后修改:2009-07-19
http://blog.grayproductions.net/articles/2006/07/30/pstore-meets-yaml

看了这片短文有点惊讶

Pstore应该是

将Ruby对象存入外部文件------比如磁盘文件时使用的类。该类内部使用了Marshal。

Java和PHP类似的做法叫序列化

http://rubycn.ce-lab.net/man/addlib/PStore.html

db = PStore.new("/tmp/foo")
db.transaction do
  p db.roots
  ary = db["root"] = [1,2,3,4]
  ary[0] = [1,1.5]
end

db.transaction do
  p db["root"]
end


必须在transaction块内部访问数据库。其接口类似于Hash。

另外的例子
对象“H”实例化后存储在“/tmp/rb”中,之后便可以直接打开读取该实例的属性和操作该实例方法。


http://www.cnzxh.net/blog/Index.php?month=2005-12&catalogId=0&key=

#!/usr/bin/env ruby
require 'pstore'
path = '/tmp/rb'

class H
        attr_accessor :a
        attr_accessor :b
        attr_accessor :c
        def initialize
                @a, @b, @c = 3, "abc", ["arr", "ay"]
        end

        public
        def test
                @c.join
        end

end

#写入
ps = PStore.new(path)
ps.transaction {|x|
        x['H'] = H.new
}
ps = nil

#读取
PStore.new(path).transaction {|x|
        h = x['H']
        puts h.a
        puts h.b
        puts h.test
}


YAML 也可以被 PS,

拉郎配, 生硬
   发表时间:2006-10-29  
bd7lx 写道
http://blog.grayproductions.net/articles/2006/07/30/pstore-meets-yaml

看了这片短文有点惊讶

Pstore应该是将Ruby对象存入外部文件------比如磁盘文件时使用的类。该类内部使用了Marshal。

Java和PHP类似的做法叫序列化
YAML 也可以被 PS,

拉郎配, 生硬

我看了后觉得不惊讶.用YAML作为Pstore的序列化格式,适合人读,也可以用手修改,这是Pstore默认的格式所没有的。并且作者的评价也比较公正.
还有就是Pstore默认的格式和Yaml格式两种都不保存对象的方法,只保存对象的数据,这个行为和PHP完全类似.另外你给的连接也不错.本文已收藏
0 请登录后投票
   发表时间:2006-11-01  
这么做的理由作者不是说得很清楚么?
引用

Now, if I had to level any one complaint at PStore, it would be that because it uses Marshal under the hood it doesn't create files you can easily browse or tweak by hand.


有些场合能够tweak by hand很重要,比如做data repairing。但是能手工tweak也有弊端,伪造篡改就很容易。完全看场合。
0 请登录后投票
   发表时间:2006-11-01  
好东西
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics