active_model_persistence 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Dockerfile.changelog-rs +12 -0
- data/lib/active_model_persistence/persistence.rb +23 -0
- data/lib/active_model_persistence/version.rb +1 -1
- data/lib/active_model_persistence.rb +29 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c9021a01608e4ac248001eafc0a7c2265ab82666bc33add62e9a3f3586f6bbf
|
4
|
+
data.tar.gz: 4225a766baeb076abce4a27cbde7d8c742f02e660632855198ba6dda7a20434f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8499b0d13d3acafcd5b45df2d8c3d22a171f2f428f7b1d6de961855af7d18b839c0be9c40163bbf74bb91fa5f9956e62e37a7bcfe691eeac3eb6057508abb412
|
7
|
+
data.tar.gz: fa9bab5a614c233c7c505f7f66f181abf87787d51902322c88408fe8802334f701ef5b7742e01bfa80ab3352a4765e9b811da1ba6ee145e3a80496e80a3fbaa6
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
FROM rust
|
2
|
+
|
3
|
+
# Build the docker image (from this project's root directory):
|
4
|
+
# docker build --file Dockerfile.changelog-rs --tag changelog-rs .
|
5
|
+
#
|
6
|
+
# Use this image to output a changelog (from this project's root directory):
|
7
|
+
# docker run --rm --volume "$PWD:/worktree" changelog-rs v1.9.1 v1.10.0
|
8
|
+
|
9
|
+
RUN cargo install changelog-rs
|
10
|
+
WORKDIR /worktree
|
11
|
+
|
12
|
+
ENTRYPOINT ["/usr/local/cargo/bin/changelog-rs", "/worktree"]
|
@@ -14,6 +14,7 @@ module ActiveModelPersistence
|
|
14
14
|
# attribute :id, :integer
|
15
15
|
# attribute :name, :string
|
16
16
|
# index :id, unique: true
|
17
|
+
# validates :id, presence: true
|
17
18
|
# end
|
18
19
|
#
|
19
20
|
# # Creating a model instance with `.new` does not save it to the object store
|
@@ -274,6 +275,28 @@ module ActiveModelPersistence
|
|
274
275
|
result != false
|
275
276
|
end
|
276
277
|
|
278
|
+
# Calls #save and raises an error if #save returns false
|
279
|
+
#
|
280
|
+
# @example
|
281
|
+
# object = ModelExample.new(id: nil, name: 'James')
|
282
|
+
# object.save! #=> raises ObjectNotSavedError
|
283
|
+
#
|
284
|
+
# @param _options [Hash] save options (currently unused)
|
285
|
+
#
|
286
|
+
# @param block [Proc] a block to call after the save
|
287
|
+
#
|
288
|
+
# @yield [self] a block to call after the save
|
289
|
+
# @yieldparam saved_model [self] the model object after it was saved
|
290
|
+
# @yieldreturn [void]
|
291
|
+
#
|
292
|
+
# @raise [ObjectNotSavedError] if the model object was not saved
|
293
|
+
#
|
294
|
+
# @return [Boolean] returns true or raises an error
|
295
|
+
#
|
296
|
+
def save!(**options, &block)
|
297
|
+
save(**options, &block) || raise(ObjectNotSavedError.new('Failed to save the object', self))
|
298
|
+
end
|
299
|
+
|
277
300
|
# Deletes the object from the object store
|
278
301
|
#
|
279
302
|
# This model object is frozen to reflect that no changes should be made
|
@@ -5,6 +5,8 @@ require 'active_model'
|
|
5
5
|
|
6
6
|
# A set of mixins to add to ActiveModel classes to support persistence
|
7
7
|
#
|
8
|
+
# @api public
|
9
|
+
#
|
8
10
|
module ActiveModelPersistence
|
9
11
|
# A base class for all ActiveModelPersistence errors
|
10
12
|
class ModelError < StandardError; end
|
@@ -14,6 +16,33 @@ module ActiveModelPersistence
|
|
14
16
|
|
15
17
|
# Raised when trying to add an object to an index when the key already exists in the index for another object
|
16
18
|
class UniqueConstraintError < ModelError; end
|
19
|
+
|
20
|
+
# Raised when trying to save an invalid object
|
21
|
+
class ObjectNotSavedError < ModelError
|
22
|
+
# The object that was not saved
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# object = Object.new
|
26
|
+
# error = ObjectNotSavedError.new('Invalid object', object)
|
27
|
+
# error.object == object #=> true
|
28
|
+
#
|
29
|
+
# @return [Object] The object that was not saved
|
30
|
+
#
|
31
|
+
attr_reader :object
|
32
|
+
|
33
|
+
# Create a new error
|
34
|
+
#
|
35
|
+
# @example
|
36
|
+
# ObjectNotSavedError.new('Invalid object', self)
|
37
|
+
#
|
38
|
+
# @param message [String] The error message
|
39
|
+
# @param object [Object] The object that was not saved
|
40
|
+
#
|
41
|
+
def initialize(message = nil, object = nil)
|
42
|
+
@object = object
|
43
|
+
super(message)
|
44
|
+
end
|
45
|
+
end
|
17
46
|
end
|
18
47
|
|
19
48
|
require_relative 'active_model_persistence/index'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_model_persistence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Couball
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -189,6 +189,8 @@ extra_rdoc_files: []
|
|
189
189
|
files:
|
190
190
|
- ".rspec"
|
191
191
|
- ".rubocop.yml"
|
192
|
+
- CHANGELOG.md
|
193
|
+
- Dockerfile.changelog-rs
|
192
194
|
- Gemfile
|
193
195
|
- LICENSE.txt
|
194
196
|
- README.md
|
@@ -227,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
229
|
- !ruby/object:Gem::Version
|
228
230
|
version: '0'
|
229
231
|
requirements: []
|
230
|
-
rubygems_version: 3.
|
232
|
+
rubygems_version: 3.1.6
|
231
233
|
signing_key:
|
232
234
|
specification_version: 4
|
233
235
|
summary: Adds in-memory persistence to ActiveModel models
|