Slide 1

Slide 1 text

pstore ! not dead

Slide 2

Slide 2 text

filesystem data ruby script #1

Slide 3

Slide 3 text

MySQL? Redis? LevelDB? database.txt?

Slide 4

Slide 4 text

JSON? YAML? CSV?

Slide 5

Slide 5 text

format is irrelevant

Slide 6

Slide 6 text

your data is

Slide 7

Slide 7 text

Int egr i ty

Slide 8

Slide 8 text

lock filesystem data ruby script #1 ruby script #2 ruby script #3

Slide 9

Slide 9 text

require "pstore" ! pstore = PStore.new("filename.pstore") ! pstore.transaction do pstore["foo"] # reading pstore["zig"] = "zag" # writing end

Slide 10

Slide 10 text

fuck dependencies

Slide 11

Slide 11 text

ruby stdlib

Slide 12

Slide 12 text

class HotelBar ! @pstore = PStore.new("hotelbar.pstore") ! def self.pstore return @pstore unless block_given? @pstore.transaction { yield @pstore } end ! end

Slide 13

Slide 13 text

def self.find(name) pstore do |db| new(db[name]) if db.root?(name) end end

Slide 14

Slide 14 text

def self.all pstore do |db| db.roots.map { |name| new(db[name]) } end end

Slide 15

Slide 15 text

Bonus Round

Slide 16

Slide 16 text

require "pstore" require "json" ! class JSON::Store < PStore ! def dump(table) JSON::pretty_generate(table) end ! def load(content) JSON::parse(content) end ! end

Slide 17

Slide 17 text

Overbryd