supermodel 0.0.8 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/supermodel/base.rb +1 -9
- data/lib/supermodel/dirty.rb +24 -0
- data/lib/supermodel/timestamp.rb +24 -0
- data/lib/supermodel.rb +2 -0
- data/supermodel.gemspec +4 -2
- metadata +4 -2
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0
|
|
1
|
+
0.1.0
|
data/lib/supermodel/base.rb
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module SuperModel
|
|
2
2
|
class Base
|
|
3
|
-
include ActiveModel::Dirty
|
|
4
3
|
class_inheritable_array :known_attributes
|
|
5
4
|
self.known_attributes = []
|
|
6
5
|
|
|
@@ -224,7 +223,6 @@ module SuperModel
|
|
|
224
223
|
self.id ||= generate_id
|
|
225
224
|
self.new_record = false
|
|
226
225
|
raw_create
|
|
227
|
-
save_previous_changes
|
|
228
226
|
self.id
|
|
229
227
|
end
|
|
230
228
|
|
|
@@ -235,14 +233,8 @@ module SuperModel
|
|
|
235
233
|
|
|
236
234
|
def update
|
|
237
235
|
raw_update
|
|
238
|
-
save_previous_changes
|
|
239
236
|
true
|
|
240
237
|
end
|
|
241
|
-
|
|
242
|
-
def save_previous_changes
|
|
243
|
-
@previously_changed = changes
|
|
244
|
-
changed_attributes.clear
|
|
245
|
-
end
|
|
246
238
|
|
|
247
239
|
private
|
|
248
240
|
|
|
@@ -270,6 +262,6 @@ module SuperModel
|
|
|
270
262
|
include ActiveModel::Conversion
|
|
271
263
|
include ActiveModel::Serializers::JSON
|
|
272
264
|
include ActiveModel::Serializers::Xml
|
|
273
|
-
include Observing, Validations, Callbacks
|
|
265
|
+
include Dirty, Observing, Validations, Callbacks
|
|
274
266
|
end
|
|
275
267
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module SuperModel
|
|
2
|
+
module Dirty
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
include ActiveModel::Dirty
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
%w( create update ).each do |method|
|
|
8
|
+
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
|
9
|
+
def #{method}_with_dirty(*args, &block)
|
|
10
|
+
result = #{method}_without_dirty(*args, &block)
|
|
11
|
+
save_previous_changes
|
|
12
|
+
result
|
|
13
|
+
end
|
|
14
|
+
EOS
|
|
15
|
+
alias_method_chain(method, :dirty)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def save_previous_changes
|
|
20
|
+
@previously_changed = changes
|
|
21
|
+
changed_attributes.clear
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module SuperModel
|
|
2
|
+
module Timestamp
|
|
3
|
+
module Model
|
|
4
|
+
def self.included(base)
|
|
5
|
+
base.class_eval do
|
|
6
|
+
attributes :created_at, :updated_at
|
|
7
|
+
|
|
8
|
+
before_create :set_created_at
|
|
9
|
+
before_save :set_updated_at
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def set_created_at
|
|
15
|
+
self.created_at = Time.now
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def set_updated_at
|
|
19
|
+
self.updated_at = Time.now
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
data/lib/supermodel.rb
CHANGED
|
@@ -28,6 +28,8 @@ require "supermodel/callbacks"
|
|
|
28
28
|
require "supermodel/observing"
|
|
29
29
|
require "supermodel/marshal"
|
|
30
30
|
require "supermodel/random_id"
|
|
31
|
+
require "supermodel/timestamp"
|
|
31
32
|
require "supermodel/validations"
|
|
33
|
+
require "supermodel/dirty"
|
|
32
34
|
require "supermodel/base"
|
|
33
35
|
require "supermodel/redis"
|
data/supermodel.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{supermodel}
|
|
8
|
-
s.version = "0.0
|
|
8
|
+
s.version = "0.1.0"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Alex MacCaw"]
|
|
12
|
-
s.date = %q{2010-02-
|
|
12
|
+
s.date = %q{2010-02-16}
|
|
13
13
|
s.description = %q{In memory DB using ActiveModel}
|
|
14
14
|
s.email = %q{info@eribium.org}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -24,10 +24,12 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
"lib/supermodel.rb",
|
|
25
25
|
"lib/supermodel/base.rb",
|
|
26
26
|
"lib/supermodel/callbacks.rb",
|
|
27
|
+
"lib/supermodel/dirty.rb",
|
|
27
28
|
"lib/supermodel/marshal.rb",
|
|
28
29
|
"lib/supermodel/observing.rb",
|
|
29
30
|
"lib/supermodel/random_id.rb",
|
|
30
31
|
"lib/supermodel/redis.rb",
|
|
32
|
+
"lib/supermodel/timestamp.rb",
|
|
31
33
|
"lib/supermodel/validations.rb",
|
|
32
34
|
"supermodel.gemspec"
|
|
33
35
|
]
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: supermodel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex MacCaw
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2010-02-
|
|
12
|
+
date: 2010-02-16 00:00:00 +00:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -39,10 +39,12 @@ files:
|
|
|
39
39
|
- lib/supermodel.rb
|
|
40
40
|
- lib/supermodel/base.rb
|
|
41
41
|
- lib/supermodel/callbacks.rb
|
|
42
|
+
- lib/supermodel/dirty.rb
|
|
42
43
|
- lib/supermodel/marshal.rb
|
|
43
44
|
- lib/supermodel/observing.rb
|
|
44
45
|
- lib/supermodel/random_id.rb
|
|
45
46
|
- lib/supermodel/redis.rb
|
|
47
|
+
- lib/supermodel/timestamp.rb
|
|
46
48
|
- lib/supermodel/validations.rb
|
|
47
49
|
- supermodel.gemspec
|
|
48
50
|
has_rdoc: true
|