浏览 6123 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-27
最后修改:2009-07-19
看了这片短文有点惊讶 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, 拉郎配, 生硬 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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完全类似.另外你给的连接也不错.本文已收藏 |
|
返回顶楼 | |
发表时间: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也有弊端,伪造篡改就很容易。完全看场合。 |
|
返回顶楼 | |
发表时间:2006-11-01
好东西
|
|
返回顶楼 | |