u-attributes 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -1
- data/Gemfile +23 -1
- data/Gemfile.lock +2 -2
- data/README.md +37 -11
- data/lib/micro/attributes.rb +2 -1
- data/lib/micro/attributes/features.rb +31 -2
- data/lib/micro/attributes/features/activemodel_validations.rb +34 -0
- data/lib/micro/attributes/version.rb +1 -1
- data/run-tests.sh +22 -0
- data/u-attributes.gemspec +0 -1
- metadata +3 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72e9cbaceb087cd97c5cf3a46b705f52d3664d96018851fda83d455dc59aaa36
|
4
|
+
data.tar.gz: 36238187591d0662c2212ea7fd3e1e5192d5785c2f1f59f57731d2f704e2a78b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f00dd1f663f7364c28743e33c8812f683a8a4837c42636b2289a179ca9a11a3935f4c7a443e688d0ecd57181f970afb4d37c7b06c823100a79c481ecc6cabae4
|
7
|
+
data.tar.gz: d86e8e5b6689e524fdfb72133e1f209d946726a109574df20a2aaa92a239fd123e973636c50bb4ca45c0de72533b107ca95b197f95bcde6520afeb37deaa7e42
|
data/.travis.yml
CHANGED
@@ -3,7 +3,7 @@ sudo: false
|
|
3
3
|
language: ruby
|
4
4
|
cache: bundler
|
5
5
|
rvm:
|
6
|
-
- 2.2.
|
6
|
+
- 2.2.2
|
7
7
|
- 2.3.0
|
8
8
|
- 2.4.0
|
9
9
|
- 2.5.0
|
@@ -11,5 +11,8 @@ rvm:
|
|
11
11
|
before_install:
|
12
12
|
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
|
13
13
|
- gem install bundler -v '< 2'
|
14
|
+
install: bundle install --jobs=3 --retry=3
|
14
15
|
env:
|
15
16
|
- DISABLE_SIMPLECOV=true
|
17
|
+
script: ./run-tests.sh
|
18
|
+
|
data/Gemfile
CHANGED
@@ -1,6 +1,28 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gem 'simplecov', require: false, group: :test
|
4
4
|
|
5
|
+
activemodel_version = ENV.fetch('ACTIVEMODEL_VERSION', '6.1')
|
6
|
+
|
7
|
+
activemodel = case activemodel_version
|
8
|
+
when '3.2' then '3.2.22'
|
9
|
+
when '4.0' then '4.0.13'
|
10
|
+
when '4.1' then '4.1.16'
|
11
|
+
when '4.2' then '4.2.11'
|
12
|
+
when '5.0' then '5.0.7'
|
13
|
+
when '5.1' then '5.1.7'
|
14
|
+
when '5.2' then '5.2.3'
|
15
|
+
when '6.0' then '6.0.0.rc1'
|
16
|
+
end
|
17
|
+
|
18
|
+
if activemodel_version < '6.1'
|
19
|
+
gem 'activemodel', activemodel
|
20
|
+
gem 'activesupport', activemodel
|
21
|
+
end
|
22
|
+
|
23
|
+
minitest = activemodel_version < '4.1' ? '~> 4.2' : '~> 5.0'
|
24
|
+
|
25
|
+
gem 'minitest', minitest
|
26
|
+
|
5
27
|
# Specify your gem's dependencies in u-attributes.gemspec
|
6
28
|
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
u-attributes (0.
|
4
|
+
u-attributes (0.11.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -10,7 +10,7 @@ GEM
|
|
10
10
|
json (2.2.0)
|
11
11
|
minitest (5.11.3)
|
12
12
|
rake (10.5.0)
|
13
|
-
simplecov (0.
|
13
|
+
simplecov (0.17.0)
|
14
14
|
docile (~> 1.1)
|
15
15
|
json (>= 1.8, < 3)
|
16
16
|
simplecov-html (~> 0.10.0)
|
data/README.md
CHANGED
@@ -270,11 +270,7 @@ You can use the method `Micro::Attributes.features()` to combine and require onl
|
|
270
270
|
|
271
271
|
Note: The method `Micro::Attributes.with()` is an alias for `Micro::Attributes.features()`.
|
272
272
|
|
273
|
-
###
|
274
|
-
|
275
|
-
Provides a way to track changes in your object attributes.
|
276
|
-
|
277
|
-
#### How to enable?
|
273
|
+
### Usage
|
278
274
|
|
279
275
|
```ruby
|
280
276
|
#----------------------------------#
|
@@ -283,17 +279,17 @@ Provides a way to track changes in your object attributes.
|
|
283
279
|
class Job
|
284
280
|
include Micro::Attributes.features(:diff)
|
285
281
|
|
286
|
-
|
282
|
+
attribute :id
|
283
|
+
attribute :state, 'sleeping'
|
287
284
|
|
288
285
|
def initialize(options)
|
289
|
-
self.
|
286
|
+
self.attributes = options
|
290
287
|
end
|
291
288
|
end
|
292
289
|
|
293
290
|
# --------------------------------------------------------------------#
|
294
291
|
# Using the .with() method alias and adding the initialize extension. #
|
295
292
|
# --------------------------------------------------------------------#
|
296
|
-
|
297
293
|
class Job
|
298
294
|
include Micro::Attributes.with(:initialize, :diff)
|
299
295
|
|
@@ -304,19 +300,49 @@ end
|
|
304
300
|
# Via Micro::Attributes.to_initialize() #
|
305
301
|
#---------------------------------------#
|
306
302
|
class Job
|
307
|
-
include Micro::Attributes.to_initialize(diff: true)
|
303
|
+
include Micro::Attributes.to_initialize(diff: false, activemodel_validations: true)
|
308
304
|
|
309
|
-
|
310
|
-
|
305
|
+
attributes :id, state: 'sleeping'
|
306
|
+
validates! :id, :state, presence: true
|
311
307
|
end
|
312
308
|
```
|
313
309
|
|
310
|
+
### ActiveModel::Validations extension
|
311
|
+
|
312
|
+
If your application uses ActiveModel as a dependency (like a regular Rails app). You will be enabled to use the `actimodel_validations` extension.
|
313
|
+
|
314
|
+
#### Usage
|
315
|
+
|
316
|
+
```ruby
|
317
|
+
class Job
|
318
|
+
# include Micro::Attributes.with(:initialize, :activemodel_validations)
|
319
|
+
# include Micro::Attributes.features(:initialize, :activemodel_validations)
|
320
|
+
include Micro::Attributes.to_initialize(activemodel_validations: true)
|
321
|
+
|
322
|
+
attributes :id, state: 'sleeping'
|
323
|
+
validates! :id, :state, presence: true
|
324
|
+
end
|
325
|
+
|
326
|
+
Job.new({}) # ActiveModel::StrictValidationFailed (Id can't be blank)
|
327
|
+
|
328
|
+
job = Job.new(id: 1)
|
329
|
+
|
330
|
+
p job.id # 1
|
331
|
+
p job.state # "sleeping"
|
332
|
+
```
|
333
|
+
|
334
|
+
### Diff extension
|
335
|
+
|
336
|
+
Provides a way to track changes in your object attributes.
|
337
|
+
|
314
338
|
#### Usage
|
315
339
|
|
316
340
|
```ruby
|
317
341
|
require 'securerandom'
|
318
342
|
|
319
343
|
class Job
|
344
|
+
# include Micro::Attributes.with(:initialize, :diff)
|
345
|
+
# include Micro::Attributes.to_initialize(diff: true)
|
320
346
|
include Micro::Attributes.features(:initialize, :diff)
|
321
347
|
|
322
348
|
attributes :id, state: 'sleeping'
|
data/lib/micro/attributes.rb
CHANGED
@@ -22,9 +22,10 @@ module Micro
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.to_initialize(diff: false)
|
25
|
+
def self.to_initialize(diff: false, activemodel_validations: false)
|
26
26
|
options = [:initialize]
|
27
27
|
options << :diff if diff
|
28
|
+
options << :activemodel_validations if activemodel_validations
|
28
29
|
features(*options)
|
29
30
|
end
|
30
31
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require "micro/attributes/features/diff"
|
4
4
|
require "micro/attributes/features/initialize"
|
5
|
+
require "micro/attributes/features/activemodel_validations"
|
5
6
|
|
6
7
|
module Micro
|
7
8
|
module Attributes
|
@@ -13,10 +14,38 @@ module Micro
|
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
17
|
+
module ActiveModelValidationsAndDiff
|
18
|
+
def self.included(base)
|
19
|
+
base.send(:include, ::Micro::Attributes::Features::Diff)
|
20
|
+
base.send(:include, ::Micro::Attributes::Features::ActiveModelValidations)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
module ActiveModelValidationsAndInitialize
|
25
|
+
def self.included(base)
|
26
|
+
base.send(:include, ::Micro::Attributes::Features::Initialize)
|
27
|
+
base.send(:include, ::Micro::Attributes::Features::ActiveModelValidations)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module ActiveModelValidationsAndDiffAndInitialize
|
32
|
+
def self.included(base)
|
33
|
+
base.send(:include, ::Micro::Attributes::Features::Initialize)
|
34
|
+
base.send(:include, ::Micro::Attributes::Features::Diff)
|
35
|
+
base.send(:include, ::Micro::Attributes::Features::ActiveModelValidations)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
16
39
|
OPTIONS = {
|
40
|
+
# Features
|
17
41
|
'diff' => Diff,
|
18
42
|
'initialize' => Initialize,
|
19
|
-
'
|
43
|
+
'activemodel_validations' => ActiveModelValidations,
|
44
|
+
# Combinations
|
45
|
+
'diff:initialize' => InitializeAndDiff,
|
46
|
+
'activemodel_validations:diff' => ActiveModelValidationsAndDiff,
|
47
|
+
'activemodel_validations:initialize' => ActiveModelValidationsAndInitialize,
|
48
|
+
'activemodel_validations:diff:initialize' => ActiveModelValidationsAndDiffAndInitialize
|
20
49
|
}.freeze
|
21
50
|
|
22
51
|
private_constant :OPTIONS
|
@@ -24,7 +53,7 @@ module Micro
|
|
24
53
|
def self.fetch(names)
|
25
54
|
option = OPTIONS[names.map { |name| name.to_s.downcase }.sort.join(':')]
|
26
55
|
return option if option
|
27
|
-
raise ArgumentError, 'Invalid feature name! Available options: diff, initialize'
|
56
|
+
raise ArgumentError, 'Invalid feature name! Available options: diff, initialize, activemodel_validations'
|
28
57
|
end
|
29
58
|
end
|
30
59
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Micro::Attributes
|
4
|
+
module Features
|
5
|
+
module ActiveModelValidations
|
6
|
+
@@__active_model_load_error = false
|
7
|
+
@@__active_model_required = false
|
8
|
+
|
9
|
+
def self.included(base)
|
10
|
+
if !@@__active_model_load_error && !@@__active_model_required
|
11
|
+
begin
|
12
|
+
require 'active_model'
|
13
|
+
rescue LoadError => e
|
14
|
+
@@__active_model_load_error = true
|
15
|
+
end
|
16
|
+
@@__active_model_required = true
|
17
|
+
end
|
18
|
+
|
19
|
+
unless @@__active_model_load_error
|
20
|
+
base.send(:include, ::ActiveModel::Validations)
|
21
|
+
|
22
|
+
if ::ActiveModel::VERSION::STRING >= '3.2'
|
23
|
+
base.class_eval(<<-RUBY)
|
24
|
+
def initialize(options)
|
25
|
+
self.attributes=(options)
|
26
|
+
run_validations!
|
27
|
+
end
|
28
|
+
RUBY
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/run-tests.sh
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
ACTIVEMODEL_VERSION='3.2' bundle update
|
4
|
+
ACTIVEMODEL_VERSION='3.2' bundle exec rake test
|
5
|
+
|
6
|
+
ACTIVEMODEL_VERSION='4.0' bundle update
|
7
|
+
ACTIVEMODEL_VERSION='4.0' bundle exec rake test
|
8
|
+
|
9
|
+
ACTIVEMODEL_VERSION='4.1' bundle update
|
10
|
+
ACTIVEMODEL_VERSION='4.1' bundle exec rake test
|
11
|
+
|
12
|
+
ACTIVEMODEL_VERSION='4.2' bundle update
|
13
|
+
ACTIVEMODEL_VERSION='4.2' bundle exec rake test
|
14
|
+
|
15
|
+
ACTIVEMODEL_VERSION='5.0' bundle update
|
16
|
+
ACTIVEMODEL_VERSION='5.0' bundle exec rake test
|
17
|
+
|
18
|
+
ACTIVEMODEL_VERSION='5.1' bundle update
|
19
|
+
ACTIVEMODEL_VERSION='5.1' bundle exec rake test
|
20
|
+
|
21
|
+
ACTIVEMODEL_VERSION='5.2' bundle update
|
22
|
+
ACTIVEMODEL_VERSION='5.2' bundle exec rake test
|
data/u-attributes.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: u-attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Serradura
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '10.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: minitest
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '5.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '5.0'
|
41
27
|
description: This gem allows defining read-only attributes, that is, your objects
|
42
28
|
will have only getters to access their attributes data.
|
43
29
|
email:
|
@@ -59,11 +45,13 @@ files:
|
|
59
45
|
- lib/micro/attributes.rb
|
60
46
|
- lib/micro/attributes/attributes_utils.rb
|
61
47
|
- lib/micro/attributes/features.rb
|
48
|
+
- lib/micro/attributes/features/activemodel_validations.rb
|
62
49
|
- lib/micro/attributes/features/diff.rb
|
63
50
|
- lib/micro/attributes/features/initialize.rb
|
64
51
|
- lib/micro/attributes/macros.rb
|
65
52
|
- lib/micro/attributes/version.rb
|
66
53
|
- lib/u-attributes.rb
|
54
|
+
- run-tests.sh
|
67
55
|
- u-attributes.gemspec
|
68
56
|
homepage: https://github.com/serradura/u-attributes
|
69
57
|
licenses:
|