Module: SuperModel::Marshal
Defined Under Namespace
Modules: Model
Instance Method Summary collapse
Instance Method Details
#dump ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/supermodel/marshal.rb', line 40 def dump return unless path tmp_file = Tempfile.new("rbdump") tmp_file.binmode data = klasses.inject({}) {|hash, klass| hash[klass] = klass.marshal_records hash } ::Marshal.dump(data, tmp_file) tmp_file.close # Atomic serialization - so we never corrupt the db FileUtils.mv(tmp_file.path, path) true end |
#klasses ⇒ Object
14 15 16 |
# File 'lib/supermodel/marshal.rb', line 14 def klasses @klasses ||= [] end |
#load ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/supermodel/marshal.rb', line 18 def load return unless path return unless File.exist?(path) data = [] File.open(path, "rb") do |file| begin data = ::Marshal.load(file) rescue => e if defined?(Bowline) Bowline::Logging.log_error(e) end # Lots of errors can occur during # marshaling - such as EOF etc return false end end data.each do |klass, records| klass.marshal_records = records end true end |
#path ⇒ Object
6 7 8 |
# File 'lib/supermodel/marshal.rb', line 6 def path @path || raise("Provide a path") end |
#path=(p) ⇒ Object
10 11 12 |
# File 'lib/supermodel/marshal.rb', line 10 def path=(p) @path = p end |