active_model_persistence 0.1.0 → 0.2.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.
- 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
|