The Persist gem makes it really, really simple to persist Ruby objects to disk. Persist uses Ruby's PStore class to serialize Ruby objects with Marshal and transactionally save them for retrieval later.
Example in irb or Pry:
require 'persist' store = Persist.new store[:pie] = ['Key Lime', 'Strawberry Rhubarb', 'Blackberry Cobbler'] # => ["Key Lime", "Strawberry Rhubarb", "Blackberry Cobbler"]
You can now exit irb or Pry and your Ruby objects are still there:
require 'persist' store = Persist.new store[:pie] #=> ["Key Lime", "Strawberry Rhubarb", "Blackberry Cobbler"]
Transactions succeed or fail together to ensure that data is not left in a transitory state:
store.transaction do |db| db[:ice_cream] = ['chocolate', 'vanilla'] db.delete :pie end
Look up table keys:
store.keys #=> [:pie, :ice_cream] store.key? :pie #=> true store.key? :cake #=> false
store.delete :pie #=> nil
File Store Path
Set the path to the persistant store file upon initialization:
store = Persist.new "../.db.pstore" store.path #=> "../.db.pstore"
The default path is ".db.pstore" if one is not otherwise specified:
store = Persist.new store.path #=> ".db.pstore"
Install the gem from the command line:
gem install persist
Or add the gem to your app's Gemfile and
Persist takes advantage of PStore's ultra_safe attribute, which requires:
- Ruby 1.9 or higher.
- A POSIX compliant platform (such as OS X, GNU/Linux or a BSD).
- Fork it
- Commit changes (
git commit -am 'did something')
- Submit a Pull Request