The main thing is that it's part of the standard library. If you import a gem anyway, often you'd be well off with sqlite.
As for storage format, there's also:
https://ruby-doc.org/stdlib-3.1.2/libdoc/yaml/rdoc/YAML/Stor...
The main thing is that it's part of the standard library. If you import a gem anyway, often you'd be well off with sqlite.
As for storage format, there's also:
https://ruby-doc.org/stdlib-3.1.2/libdoc/yaml/rdoc/YAML/Stor...
I even created a little gem when I was starting with Ruby, 10 years ago, that was a very thin wrapper around it so that I could play around using an ActiveRecord like syntax (https://github.com/brunnogomes/active_yaml). I used in some pet projects so I could do stuff like:
p = Post.new
p.title = "Great post!"
p.body = "Lorem ipsum..."
p.save
Post.all # => [#<Post:0x895bb38 @title="Great post!", @body="Lorem ipsum...", @id=1>]
Post.find(1) # => #<Post:0x954bc69 @title="Great post!", @body="Lorem ipsum...", @id=1>
Post.where(author: 'Brunno', visibility: 'public')
# => [#<Post:0x895bb38 @author="Brunno", @visibility="public", @id=1>, #<Post:0x457pa36 @author="Brunno", @visibility="public", @id=2>]
And have access to the data directly in the YAML files.Good times!
...
The problem with JSON is that the keys take up too much space because they are duplicated. I don't love BSON, but there's a reason why I recommend bson-ruby.
And I could keep going... ;)
The benefit of using YAML is precisely that there's meaningful whitespace. Different strokes for different folks.
Sure there are many things that "should" have been fixed above - but just having any old ruby version on hand was enough to help check for a memory leak and mitigate it - while taking the time to figure out if the leak could be plugged.
And offline support (a server in dmz/locked down wrt new software) is big too!