Module: Ephemeron

Defined in:
lib/ephemeron.rb,
lib/ephemeron/errors.rb,
lib/ephemeron/railtie.rb,
lib/ephemeron/version.rb,
lib/ephemeron/settings.rb,
lib/ephemeron/store/update.rb,
lib/ephemeron/store/convert.rb,
lib/ephemeron/writers/store.rb,
lib/ephemeron/logger/convert.rb,
lib/ephemeron/logger/finders.rb,
lib/ephemeron/writers/logger.rb,
lib/ephemeron/validators/store.rb,
lib/ephemeron/writers/callbacks.rb,
lib/ephemeron/addons/model_addons.rb,
lib/ephemeron/writers/thread_store.rb,
lib/ephemeron/validators/before_save.rb,
lib/ephemeron/validators/store/unused.rb,
lib/ephemeron/addons/controller_addons.rb,
lib/ephemeron/validators/store_element.rb,
lib/ephemeron/validators/store/allowed_but_unsaved.rb

Defined Under Namespace

Modules: ControllerAddons, ModelAddons, Validators Classes: Callbacks, Logger, LoggerError, PersistenceError, Railtie, Settings, Store, StoreError, ThreadStore

Constant Summary collapse

VERSION =
'0.2.0'

Class Method Summary collapse

Class Method Details

.add(model, as: nil) ⇒ Object



43
44
45
# File 'lib/ephemeron.rb', line 43

def add(model, as: nil)
  Store.add model, as: as
end

.after_save!(&block) ⇒ Object



75
76
77
# File 'lib/ephemeron.rb', line 75

def after_save!(&block)
  Callbacks.add block
end

.allow_save!(model) ⇒ Object



67
68
69
# File 'lib/ephemeron.rb', line 67

def allow_save!(model)
  model.tap { |m| Logger.log m, :save_allowed }
end

.configureObject



28
29
30
31
32
33
# File 'lib/ephemeron.rb', line 28

def configure
  Ephemeron::Settings::CONFIG.new.tap do |config|
    yield config
    Ephemeron::Settings.configure config
  end
end

.finishObject



79
80
81
82
83
84
85
86
# File 'lib/ephemeron.rb', line 79

def finish
  if Store.aliases[nil] != :abort
    Store.validate
    Store.persist
    Callbacks.call
  end
  reset
end

.get(key) ⇒ Object



53
54
55
# File 'lib/ephemeron.rb', line 53

def get(key)
  Store.get key
end

.logsObject



39
40
41
# File 'lib/ephemeron.rb', line 39

def logs
  Logger.logs
end

.proxyObject



47
48
49
50
51
# File 'lib/ephemeron.rb', line 47

def proxy
  Logger.log nil, :proxy_start
  yield
  Logger.log nil, :proxy_end
end

.resetObject



92
93
94
95
96
97
# File 'lib/ephemeron.rb', line 92

def reset
  Store.reset
  Logger.reset
  Callbacks.reset
  true
end

.skip_save!(model) ⇒ Object



71
72
73
# File 'lib/ephemeron.rb', line 71

def skip_save!(model)
  Logger.log model, :skip_save
end

.stateObject



35
36
37
# File 'lib/ephemeron.rb', line 35

def state
  Store.store
end

.stopObject



88
89
90
# File 'lib/ephemeron.rb', line 88

def stop
  Store.aliases[nil] = :abort
end

.used(model_s) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'lib/ephemeron.rb', line 57

def used(model_s)
  log_used = ->(model) { Logger.log model, :used }
  if model_s.is_a? ActiveRecord::Base
    log_used.call model_s
  else
    model_s.each(&log_used)
  end
  model_s
end