ar_default_values 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://travis-ci.org/masarakki/ar_default_values.svg?branch=master)](https://travis-ci.org/masarakki/ar_default_values)
|
2
|
+
[![Dependency Status](https://gemnasium.com/masarakki/ar_default_values.svg)](https://gemnasium.com/masarakki/ar_default_values)
|
3
|
+
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/masarakki/ar_default_values/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/masarakki/ar_default_values/?branch=master)
|
4
|
+
[![Coverage Status](https://coveralls.io/repos/masarakki/ar_default_values/badge.png?branch=master)](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
|