module Godel

Constants

VERSION

Attributes

warnings[RW]

Public Class Methods

included(klass) click to toggle source
# File lib/godel.rb, line 6
def self.included(klass)
  klass.extend ClassMethods
  klass.cattr_accessor :_incomplete_methods, :_incomplete_attrs
  klass.after_save :clear_godel_cache
  klass.after_create :clear_godel_cache
  klass._incomplete_methods ||= []
  klass._incomplete_attrs ||= []
end

Public Instance Methods

complete?() click to toggle source
# File lib/godel.rb, line 15
def complete?
  !incomplete?
end
incomplete?() click to toggle source
# File lib/godel.rb, line 19
def incomplete?
  @_incomplete ||= begin
    return false if _incomplete_attrs.empty? && _incomplete_methods.empty?
      warnings.any?
  end
end

Private Instance Methods

_filter_incomplete_attributes() click to toggle source
# File lib/godel.rb, line 42
def _filter_incomplete_attributes
  _incomplete_attrs.each do |attr|
    value = self.send(attr)
    warnings.add(attr, "#{self.class} is incomplete without #{attr}") unless value.present?
  end
end
_filter_incomplete_methods() click to toggle source
# File lib/godel.rb, line 49
def _filter_incomplete_methods
  _incomplete_methods.each do |method|
    self.send(method)
  end
end
clear_godel_cache() click to toggle source
# File lib/godel.rb, line 35
def clear_godel_cache
  @_incomplete = nil
  warnings.clear!
  _filter_incomplete_attributes
  _filter_incomplete_methods
end