晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/alt/ruby18/share/ri/1.8/system/PStore/ |
| Current File : //opt/alt/ruby18/share/ri/1.8/system/PStore/cdesc-PStore.yaml |
--- !ruby/object:RI::ClassDescription
attributes: []
class_methods:
- !ruby/object:RI::MethodSummary
name: new
comment:
- !ruby/struct:SM::Flow::P
body: PStore implements a file based persistence mechanism based on a Hash. User code can store hierarchies of Ruby objects (values) into the data store file by name (keys). An object hierarchy may be just a single object. User code may later read values back from the data store or even update data, as needed.
- !ruby/struct:SM::Flow::P
body: The transactional behavior ensures that any changes succeed or fail together. This can be used to ensure that the data store is not left in a transitory state, where some values were updated but others were not.
- !ruby/struct:SM::Flow::P
body: Behind the scenes, Ruby objects are stored to the data store file with Marshal. That carries the usual limitations. Proc objects cannot be marshalled, for example.
- !ruby/struct:SM::Flow::H
level: 2
text: "Usage example:"
- !ruby/struct:SM::Flow::VERB
body: " require "pstore"\n\n # a mock wiki object...\n class WikiPage\n def initialize( page_name, author, contents )\n @page_name = page_name\n @revisions = Array.new\n\n add_revision(author, contents)\n end\n\n attr_reader :page_name\n\n def add_revision( author, contents )\n @revisions << { :created => Time.now,\n :author => author,\n :contents => contents }\n end\n\n def wiki_page_references\n [@page_name] + @revisions.last[:contents].scan(/\\b(?:[A-Z]+[a-z]+){2,}/)\n end\n\n # ...\n end\n\n # create a new page...\n home_page = WikiPage.new( "HomePage", "James Edward Gray II",\n "A page about the JoysOfDocumentation..." )\n\n # then we want to update page data and the index together, or not at all...\n wiki = PStore.new("wiki_pages.pstore")\n wiki.transaction do # begin transaction; do all of this or none of it\n # store page...\n wiki[home_page.page_name] = home_page\n # ensure that an index has been created...\n wiki[:wiki_index] ||= Array.new\n # update wiki index...\n wiki[:wiki_index].push(*home_page.wiki_page_references)\n end # commit changes to wiki data store file\n\n ### Some time later... ###\n\n # read wiki data...\n wiki.transaction(true) do # begin read-only transaction, no changes allowed\n wiki.roots.each do |data_root_name|\n p data_root_name\n p wiki[data_root_name]\n end\n end\n"
constants:
- !ruby/object:RI::Constant
comment:
name: RDWR_ACCESS
value: File::RDWR | File::CREAT | binmode
- !ruby/object:RI::Constant
comment:
name: RD_ACCESS
value: File::RDONLY | binmode
- !ruby/object:RI::Constant
comment:
name: WR_ACCESS
value: File::WRONLY | File::CREAT | File::TRUNC | binmode
full_name: PStore
includes: []
instance_methods:
- !ruby/object:RI::MethodSummary
name: "[]"
- !ruby/object:RI::MethodSummary
name: "[]="
- !ruby/object:RI::MethodSummary
name: abort
- !ruby/object:RI::MethodSummary
name: commit
- !ruby/object:RI::MethodSummary
name: commit_new
- !ruby/object:RI::MethodSummary
name: delete
- !ruby/object:RI::MethodSummary
name: fetch
- !ruby/object:RI::MethodSummary
name: in_transaction
- !ruby/object:RI::MethodSummary
name: in_transaction_wr
- !ruby/object:RI::MethodSummary
name: path
- !ruby/object:RI::MethodSummary
name: root?
- !ruby/object:RI::MethodSummary
name: roots
- !ruby/object:RI::MethodSummary
name: transaction
name: PStore
superclass: Object
|