ar_default_values 0.5.1 → 0.5.2
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/README.md +5 -0
- data/ar_default_values.gemspec +1 -0
- data/lib/default_values/dsl.rb +4 -3
- data/lib/default_values/version.rb +1 -1
- data/spec/ar_default_values_spec.rb +22 -8
- data/spec/rails_helper.rb +2 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d55e9df77a2a59d4cc1a067eb18ea9415fd32cfc
|
4
|
+
data.tar.gz: 7d0d006e65dd9b081bbbadb88683d0fa71519508
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2978528bc59894e319565b9344dac52b555fb2a39da7912b0f79180026509f403ac48ec7cfede0fe57a8d98f7d44913c201441abb0c78ea6a569d857f6b7ece3
|
7
|
+
data.tar.gz: e1dc8a6d6aff438d737195281b762138a46ab95239271971c60c6d7c134aedde4be4e547607aa1ab8fa5f3d694ea1911518b3b53887ed0e3bc220f3a0439b3bd
|
data/README.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
[](https://travis-ci.org/masarakki/ar_default_values)
|
2
|
+
[](https://gemnasium.com/masarakki/ar_default_values)
|
3
|
+
[](https://scrutinizer-ci.com/g/masarakki/ar_default_values/?branch=master)
|
4
|
+
[](https://coveralls.io/r/masarakki/ar_default_values?branch=master)
|
5
|
+
|
1
6
|
# DefaultValues
|
2
7
|
|
3
8
|
initialize with default_values
|
data/ar_default_values.gemspec
CHANGED
data/lib/default_values/dsl.rb
CHANGED
@@ -5,12 +5,13 @@ module DefaultValues
|
|
5
5
|
module ClassMethods
|
6
6
|
def default_values(defaults = {}, &block)
|
7
7
|
define_method(:initialize_with_default_values) do |*attributes, &inner_block|
|
8
|
-
|
9
|
-
|
8
|
+
values = defaults
|
9
|
+
values = values.merge(block.call) if block_given?
|
10
|
+
values = Hash[values.each_pair.map { |key, value| [key, value.is_a?(Proc) ? value.call : value] }]
|
10
11
|
|
11
12
|
initialize_without_default_values(*attributes, &inner_block)
|
12
13
|
|
13
|
-
|
14
|
+
values.each_pair do |key, value|
|
14
15
|
write_attribute(key, value) unless attribute_present?(key)
|
15
16
|
end
|
16
17
|
end
|
@@ -7,7 +7,6 @@ class Book1 < Book
|
|
7
7
|
end
|
8
8
|
|
9
9
|
class Book2 < Book
|
10
|
-
self.table_name = :books
|
11
10
|
attr_protected :edition if Rails.version.to_i < 4
|
12
11
|
default_values price: 0, edition: 1 do
|
13
12
|
t = Time.now
|
@@ -16,17 +15,20 @@ class Book2 < Book
|
|
16
15
|
end
|
17
16
|
|
18
17
|
class Book3 < Book
|
19
|
-
self.table_name = :books
|
20
18
|
attr_accessible :price if Rails.version.to_i < 4
|
21
19
|
default_values price: 0, edition: 1, released_at: -> { Time.now }
|
22
20
|
end
|
23
21
|
|
22
|
+
class Book4 < Book
|
23
|
+
default_values released_at: Time.now
|
24
|
+
end
|
25
|
+
|
24
26
|
describe DefaultValues do
|
25
27
|
let!(:now) { Time.at(Time.now.to_i) }
|
26
28
|
|
27
|
-
subject { @sample }
|
28
29
|
describe 'fixed default_values' do
|
29
30
|
before { allow(Time).to receive(:now).and_return(now) }
|
31
|
+
|
30
32
|
context 'without attributes' do
|
31
33
|
subject { Book1.new }
|
32
34
|
its(:title) { is_expected.to be_nil }
|
@@ -42,6 +44,7 @@ describe DefaultValues do
|
|
42
44
|
its(:edition) { is_expected.to eq 1 }
|
43
45
|
its(:released_at) { is_expected.to eq now }
|
44
46
|
end
|
47
|
+
|
45
48
|
context 'with block' do
|
46
49
|
subject do
|
47
50
|
Book1.new do |t|
|
@@ -66,12 +69,23 @@ describe DefaultValues do
|
|
66
69
|
end
|
67
70
|
|
68
71
|
describe 'instance values with block' do
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
72
|
+
context 'released_at: -> { Time.now }' do
|
73
|
+
subject { Book2.new }
|
74
|
+
before do
|
75
|
+
@target = Book2.new
|
76
|
+
sleep 1
|
77
|
+
end
|
78
|
+
its(:released_at) { is_expected.not_to eq @target.released_at }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'released_at: Time.now' do
|
82
|
+
subject { Book4.new }
|
83
|
+
before do
|
84
|
+
@target = Book4.new
|
85
|
+
sleep 1
|
86
|
+
end
|
87
|
+
its(:released_at) { is_expected.to eq @target.released_at }
|
73
88
|
end
|
74
|
-
its(:released_at) { is_expected.not_to eq @target.released_at }
|
75
89
|
end
|
76
90
|
|
77
91
|
context 'both attr_accessible and attr_protected' do
|
data/spec/rails_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ar_default_values
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- masarakki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -206,6 +206,20 @@ dependencies:
|
|
206
206
|
- - '>='
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: coveralls
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - '>='
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
209
223
|
description: ActiveRecord with default values
|
210
224
|
email:
|
211
225
|
- masaki@hisme.net
|