forked from zerohistory/toystore
-
Notifications
You must be signed in to change notification settings - Fork 12
/
toy.rb
100 lines (85 loc) · 2.37 KB
/
toy.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
require 'set'
require 'pathname'
require 'forwardable'
require 'digest/sha1'
root_path = Pathname(__FILE__).dirname.join('..').expand_path
require 'adapter'
require 'simple_uuid'
require 'active_model'
require 'active_support/json'
require 'active_support/core_ext/object'
require 'active_support/core_ext/hash/keys'
require 'active_support/core_ext/class/inheritable_attributes'
require 'active_support/core_ext/string/conversions'
require 'active_support/core_ext/string/inflections'
extensions_path = root_path.join('lib', 'toy', 'extensions')
Dir[extensions_path + '**/*.rb'].each { |file| require(file) }
module Toy
extend self
# Resets all tracking of things in memory. Useful for running
# before each request in development mode with Rails and such.
def reset
identity_map.clear
plugins.clear
models.clear
end
# Clears all the adapters for all the models. Useful in specs/tests/etc.
# Do not use in production, harty harr harr.
#
# Note: that if your models are auto-loaded like in Rails, you will need
# to make sure they are loaded in order to clear them or ToyStore will
# not be aware of their existence.
def clear
models.each do |model|
model.adapter.clear if model.has_adapter?
model.identity_map.clear if model.identity_map_on?
end
end
def logger
@logger
end
def logger?
@logger.present?
end
def logger=(logger)
@logger = logger
end
def key_factory=(key_factory)
@key_factory = key_factory
end
def key_factory
@key_factory ||= Toy::Identity::UUIDKeyFactory.new
end
module Middleware
autoload 'IdentityMap', 'toy/middleware/identity_map'
end
end
require 'toy/exceptions'
require 'toy/attribute'
require 'toy/attributes'
require 'toy/callbacks'
require 'toy/dirty'
require 'toy/dolly'
require 'toy/equality'
require 'toy/inspect'
require 'toy/persistence'
require 'toy/mass_assignment_security'
require 'toy/plugins'
require 'toy/store'
require 'toy/serialization'
require 'toy/timestamps'
require 'toy/validations'
require 'toy/querying'
require 'toy/identity_map'
require 'toy/collection'
require 'toy/embedded_list'
require 'toy/embedded_lists'
require 'toy/list'
require 'toy/lists'
require 'toy/reference'
require 'toy/references'
require 'toy/identity/abstract_key_factory'
require 'toy/identity/uuid_key_factory'
require 'toy/identity'
require 'toy/caching'
require 'toy/logger'