[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[newbie]saving and reading array of associative array

yvon.thoravallist

9/17/2003 9:13:00 AM

i'm looking for examples of saving to file and reading back an array of
associative array, in a ruby like way.

saying i have something like :

one = {"Name" => "Smith", "Surname" => "John" ...}
two = {"Name" => "Dupont", "Surname" => "Jean" ...}

myFriends = [one, two, ...]

i want to save into a file "myFriends.db" the array of hashes myFriends
in such a way reading it back will recorver the array of hashes the
easiest way...
--
Yvon
5 Answers

gabriele renzi

9/17/2003 10:24:00 AM

0

il Wed, 17 Sep 2003 11:13:26 +0200,
yvon.thoravallist@-SUPPRIMEZ-free.fr.invalid (Yvon Thoraval) ha
scritto::

>i''m looking for examples of saving to file and reading back an array of
>associative array, in a ruby like way.
>
>saying i have something like :
>
>one = {"Name" => "Smith", "Surname" => "John" ...}
>two = {"Name" => "Dupont", "Surname" => "Jean" ...}
>
>myFriends = [one, two, ...]
>
>i want to save into a file "myFriends.db" the array of hashes myFriends
>in such a way reading it back will recorver the array of hashes the
>easiest way...

----------------------------------------------------------
Marshal::dump
dump( anObject [, anIO] , limit=--1 ) -> anIO
------------------------------------------------------------------------
Serializes anObject and all descendent objects. If anIO is
specified, the serialized data will be written to it, otherwise
the
data will be returned as a String. If limit is specified, the
traversal of subobjects will be limited to that depth. If limit
is
negative, no checking of depth will be performed.

More easy than you think ;)

BTW you could even use PStore, included in the standard lib, it works
similar to an hash, but gets saved on disk and supports ''transactions''
for data integrity.

yvon.thoravallist

9/17/2003 11:49:00 AM

0

gabriele renzi <surrender_it@remove.yahoo.it> wrote:

>
> ----------------------------------------------------------
> Marshal::dump
> dump( anObject [, anIO] , limit=--1 ) -> anIO
> ------------------------------------------------------------------------
> Serializes anObject and all descendent objects. If anIO is
> specified, the serialized data will be written to it, otherwise
> the
> data will be returned as a String. If limit is specified, the
> traversal of subobjects will be limited to that depth. If limit
> is
> negative, no checking of depth will be performed.
>
> More easy than you think ;)
>
> BTW you could even use PStore, included in the standard lib, it works
> similar to an hash, but gets saved on disk and supports ''transactions''
> for data integrity.

tanxs a lot !
--
Yvon

Joey Gibson

9/17/2003 12:22:00 PM

0

On 9/17/2003 6:34 AM, gabriele renzi wrote:

>Marshal::dump
> dump( anObject [, anIO] , limit=--1 ) -> anIO
>
>BTW you could even use PStore, included in the standard lib, it works
>similar to an hash, but gets saved on disk and supports ''transactions''
>for data integrity.
>
>

You could also use YAML:

require ''yaml''
one = {"Name" => "Smith", "Surname" => "John"}
two = {"Name" => "Dupont", "Surname" => "Jean"}

myFriends = [one, two]

File.open("myfriends.db", "w") {|file| file.write(myFriends.to_yaml)}
myFriends = File.open("myfriends.db") {|file| YAML.load(file)}


--
Dean saor, dean saor an spiorad. Is seinn d''orain beo.

http://www.joey...
http://www.joey.../blog/life/Wisdom.html




yvon.thoravallist

9/17/2003 12:51:00 PM

0

Joey Gibson <joey@joeygibson.com> wrote:

>
> You could also use YAML:
>
> require ''yaml''
> one = {"Name" => "Smith", "Surname" => "John"}
> two = {"Name" => "Dupont", "Surname" => "Jean"}
>
> myFriends = [one, two]
>
> File.open("myfriends.db", "w") {|file| file.write(myFriends.to_yaml)}
> myFriends = File.open("myfriends.db") {|file| YAML.load(file)}

fine, i should say i''ve other versions of what i plan to do in :

- perlCocoa (CamelBones specific to MacOS X)
- php + xml
- php + mySQL

--
Yvon

Jason Creighton

9/17/2003 7:54:00 PM

0

On Wed, 17 Sep 2003 21:22:13 +0900
Joey Gibson <joey@joeygibson.com> wrote:

> On 9/17/2003 6:34 AM, gabriele renzi wrote:
>
> >Marshal::dump
> > dump( anObject [, anIO] , limit=--1 ) -> anIO
> >
> >BTW you could even use PStore, included in the standard lib, it works
> >similar to an hash, but gets saved on disk and supports ''transactions''
> >for data integrity.
> >
> >
>
> You could also use YAML:
>
> require ''yaml''
> one = {"Name" => "Smith", "Surname" => "John"}
> two = {"Name" => "Dupont", "Surname" => "Jean"}
>
> myFriends = [one, two]
>
> File.open("myfriends.db", "w") {|file| file.write(myFriends.to_yaml)}
> myFriends = File.open("myfriends.db") {|file| YAML.load(file)}

Yes, I was just about to mention YAML. Also note that you can use
YAML::Store as a drop-in PStore replacement. (In fact, this example is
the example given in pstore.rb, I just require''d yaml/store, and changed
the db = line to YAML::Store)

~/prog/ruby$ cat yaml-store-example.rb
require ''yaml/store''
db = YAML::Store.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
~/prog/ruby$ ruby yaml-store-example.rb
[]
[[1, 1.5], 2, 3, 4]
~/prog/ruby$ cat /tmp/foo
---
root:
-
- 1
- 1.5
- 2
- 3
- 4
~/prog/ruby$

Jason Creighton