Module: Ars::Familiar::Scribe

Defined in:
lib/ars/familiar/scribe.rb

Defined Under Namespace

Modules: Scribable Classes: Entry

Class Method Summary collapse

Class Method Details

.commitObject



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ars/familiar/scribe.rb', line 53

def self.commit
  register.each do |entry|
    dump = Marshal.dump(entry.to_class.scribe)

    filename = File.join(Ars::Medium.configuration.root, 'lib/portable_models', model.to_filename)
    dirname = File.dirname filename
    FileUtils.mkdir_p dirname
    File.open(filename, 'w') do |file|
      file << dump
    end

  end
end

.included(subclass) ⇒ Object



80
81
82
# File 'lib/ars/familiar/scribe.rb', line 80

def self.included(subclass)
  subclass.extend Scribable
end

.read_for(model) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/ars/familiar/scribe.rb', line 67

def self.read_for(model)
  model = Entry.new(model.class.name)

  filename = File.join(Ars::Medium.configuration.root, 'lib/portable_models', model.to_filename)
  dirname = File.dirname filename
  FileUtils.mkdir_p dirname
  if File.exist? filename
    File.open(filename, 'r') do |file|
      model.scribe Marshal.load(file)
    end
  end
end

.register(class_name = nil) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/ars/familiar/scribe.rb', line 44

def self.register(class_name = nil)
  return @register # bypass
  return @register unless class_name
  return @register if @register.member?(class_name)
  return @register unless class_name.builder.respond_to? :scribe
  @register << Entry.new(class_name)
  @register
end