deep_cloneable 2.1.1 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a46bed34f911cca97e8fe88efc9ef0e97e1fb79a
4
- data.tar.gz: 586392f6649eac040160ff9a4ace0a90b1ec0fa6
3
+ metadata.gz: e942e18b8b8a7bbcd53d9bcc0323316216a4605f
4
+ data.tar.gz: b3e1250b6d10ff291bcf5b6ca93670a98d2e762c
5
5
  SHA512:
6
- metadata.gz: 71276b8f86c654dd257a4cc32f501f350e4f648b5d648210d97ab88e2c58844f996e1a56a2327eea4febb53c5b07239402caced58089783794eae6e71924030a
7
- data.tar.gz: ddf3a7a9a1302f2eb0fc413fb874b88c919c4756e5ce5910281c999a1e5bdb51244c166e6a5ee5661b64dbee87619275d86cb6dee3d4313de1a1c9b2f240198b
6
+ metadata.gz: 84638e643bd06868cecde89005007160d11f10c35f390f0f7357bfce432409dea6d3a4eba6929786ee2bf6fac0eff7cac257fe7dd9a348c71b50483d4e043213
7
+ data.tar.gz: 414302546e5ffe0c85ad47daf5d1d6d275c13736ef6668d406b2ff66be9104d16ee2c2960cebc3a5275dedbd36669b6c400c77f37bdb71f0471d21e44fc0d7e2
data/Appraisals CHANGED
@@ -1,9 +1,11 @@
1
1
  appraise '3.1' do
2
2
  gem 'activerecord', '~> 3.1.0'
3
+ gem "addressable", "~> 2.3.8"
3
4
  end
4
5
 
5
6
  appraise '3.2' do
6
7
  gem 'activerecord', '~> 3.2.0'
8
+ gem "addressable", "~> 2.3.8"
7
9
  end
8
10
 
9
11
  appraise '4.0' do
@@ -15,6 +17,6 @@ appraise '4.1' do
15
17
  end
16
18
 
17
19
  appraise '4.2' do
18
- gem 'activerecord', '~> 4.2.0'
20
+ gem 'activerecord', '~> 4.2.3'
19
21
  gem 'i18n', '~> 0.7.0'
20
22
  end
data/Gemfile.lock CHANGED
@@ -1,41 +1,41 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (4.0.3)
5
- activesupport (= 4.0.3)
6
- builder (~> 3.1.0)
7
- activerecord (4.0.3)
8
- activemodel (= 4.0.3)
9
- activerecord-deprecated_finders (~> 1.0.2)
10
- activesupport (= 4.0.3)
11
- arel (~> 4.0.0)
12
- activerecord-deprecated_finders (1.0.3)
13
- activesupport (4.0.3)
14
- i18n (~> 0.6, >= 0.6.4)
15
- minitest (~> 4.2)
16
- multi_json (~> 1.3)
4
+ activemodel (4.1.14)
5
+ activesupport (= 4.1.14)
6
+ builder (~> 3.1)
7
+ activerecord (4.1.14)
8
+ activemodel (= 4.1.14)
9
+ activesupport (= 4.1.14)
10
+ arel (~> 5.0.0)
11
+ activesupport (4.1.14)
12
+ i18n (~> 0.6, >= 0.6.9)
13
+ json (~> 1.7, >= 1.7.7)
14
+ minitest (~> 5.1)
17
15
  thread_safe (~> 0.1)
18
- tzinfo (~> 0.3.37)
19
- addressable (2.3.7)
20
- appraisal (1.0.2)
16
+ tzinfo (~> 1.1)
17
+ addressable (2.4.0)
18
+ appraisal (2.1.0)
21
19
  bundler
22
20
  rake
23
21
  thor (>= 0.14.0)
24
- arel (4.0.2)
25
- builder (3.1.4)
26
- faraday (0.8.9)
27
- multipart-post (~> 1.2.0)
22
+ arel (5.0.1.20140414130214)
23
+ builder (3.2.2)
24
+ descendants_tracker (0.0.4)
25
+ thread_safe (~> 0.3, >= 0.3.1)
26
+ faraday (0.9.2)
27
+ multipart-post (>= 1.2, < 3)
28
28
  git (1.2.9.1)
29
- github_api (0.10.1)
30
- addressable
31
- faraday (~> 0.8.1)
32
- hashie (>= 1.2)
33
- multi_json (~> 1.4)
34
- nokogiri (~> 1.5.2)
29
+ github_api (0.13.1)
30
+ addressable (~> 2.4.0)
31
+ descendants_tracker (~> 0.0.4)
32
+ faraday (~> 0.8, < 0.10)
33
+ hashie (>= 3.4)
34
+ multi_json (>= 1.7.5, < 2.0)
35
35
  oauth2
36
- hashie (3.4.0)
36
+ hashie (3.4.3)
37
37
  highline (1.6.21)
38
- i18n (0.6.5)
38
+ i18n (0.6.11)
39
39
  jeweler (2.0.1)
40
40
  builder
41
41
  bundler (>= 1.0)
@@ -45,12 +45,12 @@ GEM
45
45
  nokogiri (>= 1.5.10)
46
46
  rake
47
47
  rdoc
48
- json (1.8.2)
49
- jwt (1.2.1)
50
- minitest (4.7.5)
51
- multi_json (1.10.1)
48
+ json (1.8.3)
49
+ jwt (1.5.2)
50
+ minitest (5.8.3)
51
+ multi_json (1.11.2)
52
52
  multi_xml (0.5.5)
53
- multipart-post (1.2.0)
53
+ multipart-post (2.0.0)
54
54
  nokogiri (1.5.11)
55
55
  oauth2 (1.0.0)
56
56
  faraday (>= 0.8, < 0.10)
@@ -58,14 +58,15 @@ GEM
58
58
  multi_json (~> 1.3)
59
59
  multi_xml (~> 0.5)
60
60
  rack (~> 1.2)
61
- rack (1.6.0)
61
+ rack (1.6.4)
62
62
  rake (10.4.2)
63
- rdoc (4.2.0)
63
+ rdoc (4.2.1)
64
64
  json (~> 1.4)
65
- sqlite3 (1.3.10)
65
+ sqlite3 (1.3.11)
66
66
  thor (0.19.1)
67
- thread_safe (0.3.4)
68
- tzinfo (0.3.43)
67
+ thread_safe (0.3.5)
68
+ tzinfo (1.2.2)
69
+ thread_safe (~> 0.1)
69
70
 
70
71
  PLATFORMS
71
72
  ruby
@@ -80,3 +81,6 @@ DEPENDENCIES
80
81
  nokogiri (~> 1.5.0)
81
82
  rdoc (>= 2.4.2)
82
83
  sqlite3
84
+
85
+ BUNDLED WITH
86
+ 1.10.6
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 Reinier de Lange
1
+ Copyright (c) 2016 Reinier de Lange
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ begin
7
7
  Jeweler::Tasks.new do |gem|
8
8
  gem.name = "deep_cloneable"
9
9
  gem.summary = %Q{This gem gives every ActiveRecord::Base object the possibility to do a deep clone.}
10
- gem.description = %Q{Extends the functionality of ActiveRecord::Base#clone to perform a deep clone that includes user specified associations. }
10
+ gem.description = %Q{Extends the functionality of ActiveRecord::Base#dup to perform a deep clone that includes user specified associations. }
11
11
  gem.email = "r.j.delange@nedforce.nl"
12
12
  gem.homepage = "http://github.com/moiristo/deep_cloneable"
13
13
  gem.authors = ["Reinier de Lange"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.1
1
+ 2.2.0
@@ -2,21 +2,21 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: deep_cloneable 2.1.1 ruby lib
5
+ # stub: deep_cloneable 2.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "deep_cloneable"
9
- s.version = "2.1.1"
9
+ s.version = "2.2.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Reinier de Lange"]
14
- s.date = "2015-03-10"
15
- s.description = "Extends the functionality of ActiveRecord::Base#clone to perform a deep clone that includes user specified associations. "
14
+ s.date = "2016-01-11"
15
+ s.description = "Extends the functionality of ActiveRecord::Base#dup to perform a deep clone that includes user specified associations. "
16
16
  s.email = "r.j.delange@nedforce.nl"
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.rdoc"
19
+ "readme.md"
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
@@ -25,7 +25,6 @@ Gem::Specification.new do |s|
25
25
  "Gemfile",
26
26
  "Gemfile.lock",
27
27
  "LICENSE",
28
- "README.rdoc",
29
28
  "Rakefile",
30
29
  "VERSION",
31
30
  "deep_cloneable.gemspec",
@@ -41,6 +40,7 @@ Gem::Specification.new do |s|
41
40
  "gemfiles/4.2.gemfile.lock",
42
41
  "init.rb",
43
42
  "lib/deep_cloneable.rb",
43
+ "readme.md",
44
44
  "test/database.yml",
45
45
  "test/models.rb",
46
46
  "test/schema.rb",
@@ -49,7 +49,7 @@ Gem::Specification.new do |s|
49
49
  ]
50
50
  s.homepage = "http://github.com/moiristo/deep_cloneable"
51
51
  s.licenses = ["MIT"]
52
- s.rubygems_version = "2.4.3"
52
+ s.rubygems_version = "2.4.8"
53
53
  s.summary = "This gem gives every ActiveRecord::Base object the possibility to do a deep clone."
54
54
 
55
55
  if s.respond_to? :specification_version then
data/gemfiles/3.1.gemfile CHANGED
@@ -10,6 +10,7 @@ gem "appraisal", :group => :test
10
10
  gem "sqlite3", :group => :test
11
11
  gem "rdoc", ">= 2.4.2", :group => :test
12
12
  gem "nokogiri", "~> 1.5.0", :group => :test
13
+ gem "addressable", "~> 2.3.8"
13
14
 
14
15
  group :test do
15
16
  gem "jeweler"
@@ -12,8 +12,8 @@ GEM
12
12
  tzinfo (~> 0.3.29)
13
13
  activesupport (3.1.12)
14
14
  multi_json (~> 1.0)
15
- addressable (2.3.7)
16
- appraisal (1.0.2)
15
+ addressable (2.3.8)
16
+ appraisal (2.1.0)
17
17
  bundler
18
18
  rake
19
19
  thor (>= 0.14.0)
@@ -29,7 +29,7 @@ GEM
29
29
  multi_json (~> 1.4)
30
30
  nokogiri (~> 1.5.2)
31
31
  oauth2
32
- hashie (3.4.0)
32
+ hashie (3.4.3)
33
33
  highline (1.6.21)
34
34
  i18n (0.6.11)
35
35
  jeweler (2.0.1)
@@ -41,10 +41,10 @@ GEM
41
41
  nokogiri (>= 1.5.10)
42
42
  rake
43
43
  rdoc
44
- json (1.8.2)
45
- jwt (1.2.1)
46
- minitest (5.5.1)
47
- multi_json (1.11.0)
44
+ json (1.8.3)
45
+ jwt (1.5.2)
46
+ minitest (5.8.3)
47
+ multi_json (1.11.2)
48
48
  multi_xml (0.5.5)
49
49
  multipart-post (1.2.0)
50
50
  nokogiri (1.5.11)
@@ -54,19 +54,20 @@ GEM
54
54
  multi_json (~> 1.3)
55
55
  multi_xml (~> 0.5)
56
56
  rack (~> 1.2)
57
- rack (1.6.0)
57
+ rack (1.6.4)
58
58
  rake (10.4.2)
59
- rdoc (4.2.0)
59
+ rdoc (4.2.1)
60
60
  json (~> 1.4)
61
- sqlite3 (1.3.10)
61
+ sqlite3 (1.3.11)
62
62
  thor (0.19.1)
63
- tzinfo (0.3.43)
63
+ tzinfo (0.3.46)
64
64
 
65
65
  PLATFORMS
66
66
  ruby
67
67
 
68
68
  DEPENDENCIES
69
69
  activerecord (~> 3.1.0)
70
+ addressable (~> 2.3.8)
70
71
  appraisal
71
72
  highline (~> 1.6.0)
72
73
  i18n (~> 0.6.5)
@@ -75,3 +76,6 @@ DEPENDENCIES
75
76
  nokogiri (~> 1.5.0)
76
77
  rdoc (>= 2.4.2)
77
78
  sqlite3
79
+
80
+ BUNDLED WITH
81
+ 1.10.6
data/gemfiles/3.2.gemfile CHANGED
@@ -10,6 +10,7 @@ gem "appraisal", :group => :test
10
10
  gem "sqlite3", :group => :test
11
11
  gem "rdoc", ">= 2.4.2", :group => :test
12
12
  gem "nokogiri", "~> 1.5.0", :group => :test
13
+ gem "addressable", "~> 2.3.8"
13
14
 
14
15
  group :test do
15
16
  gem "jeweler"
@@ -1,19 +1,19 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (3.2.21)
5
- activesupport (= 3.2.21)
4
+ activemodel (3.2.22)
5
+ activesupport (= 3.2.22)
6
6
  builder (~> 3.0.0)
7
- activerecord (3.2.21)
8
- activemodel (= 3.2.21)
9
- activesupport (= 3.2.21)
7
+ activerecord (3.2.22)
8
+ activemodel (= 3.2.22)
9
+ activesupport (= 3.2.22)
10
10
  arel (~> 3.0.2)
11
11
  tzinfo (~> 0.3.29)
12
- activesupport (3.2.21)
12
+ activesupport (3.2.22)
13
13
  i18n (~> 0.6, >= 0.6.4)
14
14
  multi_json (~> 1.0)
15
- addressable (2.3.7)
16
- appraisal (1.0.2)
15
+ addressable (2.3.8)
16
+ appraisal (2.1.0)
17
17
  bundler
18
18
  rake
19
19
  thor (>= 0.14.0)
@@ -29,7 +29,7 @@ GEM
29
29
  multi_json (~> 1.4)
30
30
  nokogiri (~> 1.5.2)
31
31
  oauth2
32
- hashie (3.4.0)
32
+ hashie (3.4.3)
33
33
  highline (1.6.21)
34
34
  i18n (0.6.11)
35
35
  jeweler (2.0.1)
@@ -41,10 +41,10 @@ GEM
41
41
  nokogiri (>= 1.5.10)
42
42
  rake
43
43
  rdoc
44
- json (1.8.2)
45
- jwt (1.2.1)
46
- minitest (5.5.1)
47
- multi_json (1.11.0)
44
+ json (1.8.3)
45
+ jwt (1.5.2)
46
+ minitest (5.8.3)
47
+ multi_json (1.11.2)
48
48
  multi_xml (0.5.5)
49
49
  multipart-post (1.2.0)
50
50
  nokogiri (1.5.11)
@@ -54,19 +54,20 @@ GEM
54
54
  multi_json (~> 1.3)
55
55
  multi_xml (~> 0.5)
56
56
  rack (~> 1.2)
57
- rack (1.6.0)
57
+ rack (1.6.4)
58
58
  rake (10.4.2)
59
- rdoc (4.2.0)
59
+ rdoc (4.2.1)
60
60
  json (~> 1.4)
61
- sqlite3 (1.3.10)
61
+ sqlite3 (1.3.11)
62
62
  thor (0.19.1)
63
- tzinfo (0.3.43)
63
+ tzinfo (0.3.46)
64
64
 
65
65
  PLATFORMS
66
66
  ruby
67
67
 
68
68
  DEPENDENCIES
69
69
  activerecord (~> 3.2.0)
70
+ addressable (~> 2.3.8)
70
71
  appraisal
71
72
  highline (~> 1.6.0)
72
73
  i18n (~> 0.6.5)
@@ -75,3 +76,6 @@ DEPENDENCIES
75
76
  nokogiri (~> 1.5.0)
76
77
  rdoc (>= 2.4.2)
77
78
  sqlite3
79
+
80
+ BUNDLED WITH
81
+ 1.10.6
@@ -1,39 +1,41 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (4.0.8)
5
- activesupport (= 4.0.8)
4
+ activemodel (4.0.13)
5
+ activesupport (= 4.0.13)
6
6
  builder (~> 3.1.0)
7
- activerecord (4.0.8)
8
- activemodel (= 4.0.8)
7
+ activerecord (4.0.13)
8
+ activemodel (= 4.0.13)
9
9
  activerecord-deprecated_finders (~> 1.0.2)
10
- activesupport (= 4.0.8)
10
+ activesupport (= 4.0.13)
11
11
  arel (~> 4.0.0)
12
- activerecord-deprecated_finders (1.0.3)
13
- activesupport (4.0.8)
12
+ activerecord-deprecated_finders (1.0.4)
13
+ activesupport (4.0.13)
14
14
  i18n (~> 0.6, >= 0.6.9)
15
15
  minitest (~> 4.2)
16
16
  multi_json (~> 1.3)
17
17
  thread_safe (~> 0.1)
18
18
  tzinfo (~> 0.3.37)
19
- addressable (2.3.7)
20
- appraisal (1.0.2)
19
+ addressable (2.4.0)
20
+ appraisal (2.1.0)
21
21
  bundler
22
22
  rake
23
23
  thor (>= 0.14.0)
24
24
  arel (4.0.2)
25
25
  builder (3.1.4)
26
- faraday (0.8.9)
27
- multipart-post (~> 1.2.0)
26
+ descendants_tracker (0.0.4)
27
+ thread_safe (~> 0.3, >= 0.3.1)
28
+ faraday (0.9.2)
29
+ multipart-post (>= 1.2, < 3)
28
30
  git (1.2.9.1)
29
- github_api (0.10.1)
30
- addressable
31
- faraday (~> 0.8.1)
32
- hashie (>= 1.2)
33
- multi_json (~> 1.4)
34
- nokogiri (~> 1.5.2)
31
+ github_api (0.13.1)
32
+ addressable (~> 2.4.0)
33
+ descendants_tracker (~> 0.0.4)
34
+ faraday (~> 0.8, < 0.10)
35
+ hashie (>= 3.4)
36
+ multi_json (>= 1.7.5, < 2.0)
35
37
  oauth2
36
- hashie (3.4.0)
38
+ hashie (3.4.3)
37
39
  highline (1.6.21)
38
40
  i18n (0.6.11)
39
41
  jeweler (2.0.1)
@@ -45,12 +47,12 @@ GEM
45
47
  nokogiri (>= 1.5.10)
46
48
  rake
47
49
  rdoc
48
- json (1.8.2)
49
- jwt (1.2.1)
50
+ json (1.8.3)
51
+ jwt (1.5.2)
50
52
  minitest (4.7.5)
51
- multi_json (1.11.0)
53
+ multi_json (1.11.2)
52
54
  multi_xml (0.5.5)
53
- multipart-post (1.2.0)
55
+ multipart-post (2.0.0)
54
56
  nokogiri (1.5.11)
55
57
  oauth2 (1.0.0)
56
58
  faraday (>= 0.8, < 0.10)
@@ -58,14 +60,14 @@ GEM
58
60
  multi_json (~> 1.3)
59
61
  multi_xml (~> 0.5)
60
62
  rack (~> 1.2)
61
- rack (1.6.0)
63
+ rack (1.6.4)
62
64
  rake (10.4.2)
63
- rdoc (4.2.0)
65
+ rdoc (4.2.1)
64
66
  json (~> 1.4)
65
- sqlite3 (1.3.10)
67
+ sqlite3 (1.3.11)
66
68
  thor (0.19.1)
67
- thread_safe (0.3.4)
68
- tzinfo (0.3.43)
69
+ thread_safe (0.3.5)
70
+ tzinfo (0.3.46)
69
71
 
70
72
  PLATFORMS
71
73
  ruby
@@ -80,3 +82,6 @@ DEPENDENCIES
80
82
  nokogiri (~> 1.5.0)
81
83
  rdoc (>= 2.4.2)
82
84
  sqlite3
85
+
86
+ BUNDLED WITH
87
+ 1.10.6
@@ -1,37 +1,39 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (4.1.9)
5
- activesupport (= 4.1.9)
4
+ activemodel (4.1.14)
5
+ activesupport (= 4.1.14)
6
6
  builder (~> 3.1)
7
- activerecord (4.1.9)
8
- activemodel (= 4.1.9)
9
- activesupport (= 4.1.9)
7
+ activerecord (4.1.14)
8
+ activemodel (= 4.1.14)
9
+ activesupport (= 4.1.14)
10
10
  arel (~> 5.0.0)
11
- activesupport (4.1.9)
11
+ activesupport (4.1.14)
12
12
  i18n (~> 0.6, >= 0.6.9)
13
13
  json (~> 1.7, >= 1.7.7)
14
14
  minitest (~> 5.1)
15
15
  thread_safe (~> 0.1)
16
16
  tzinfo (~> 1.1)
17
- addressable (2.3.7)
18
- appraisal (1.0.2)
17
+ addressable (2.4.0)
18
+ appraisal (2.1.0)
19
19
  bundler
20
20
  rake
21
21
  thor (>= 0.14.0)
22
22
  arel (5.0.1.20140414130214)
23
23
  builder (3.2.2)
24
- faraday (0.8.9)
25
- multipart-post (~> 1.2.0)
24
+ descendants_tracker (0.0.4)
25
+ thread_safe (~> 0.3, >= 0.3.1)
26
+ faraday (0.9.2)
27
+ multipart-post (>= 1.2, < 3)
26
28
  git (1.2.9.1)
27
- github_api (0.10.1)
28
- addressable
29
- faraday (~> 0.8.1)
30
- hashie (>= 1.2)
31
- multi_json (~> 1.4)
32
- nokogiri (~> 1.5.2)
29
+ github_api (0.13.1)
30
+ addressable (~> 2.4.0)
31
+ descendants_tracker (~> 0.0.4)
32
+ faraday (~> 0.8, < 0.10)
33
+ hashie (>= 3.4)
34
+ multi_json (>= 1.7.5, < 2.0)
33
35
  oauth2
34
- hashie (3.4.0)
36
+ hashie (3.4.3)
35
37
  highline (1.6.21)
36
38
  i18n (0.6.11)
37
39
  jeweler (2.0.1)
@@ -43,12 +45,12 @@ GEM
43
45
  nokogiri (>= 1.5.10)
44
46
  rake
45
47
  rdoc
46
- json (1.8.2)
47
- jwt (1.2.1)
48
- minitest (5.5.1)
49
- multi_json (1.11.0)
48
+ json (1.8.3)
49
+ jwt (1.5.2)
50
+ minitest (5.8.3)
51
+ multi_json (1.11.2)
50
52
  multi_xml (0.5.5)
51
- multipart-post (1.2.0)
53
+ multipart-post (2.0.0)
52
54
  nokogiri (1.5.11)
53
55
  oauth2 (1.0.0)
54
56
  faraday (>= 0.8, < 0.10)
@@ -56,13 +58,13 @@ GEM
56
58
  multi_json (~> 1.3)
57
59
  multi_xml (~> 0.5)
58
60
  rack (~> 1.2)
59
- rack (1.6.0)
61
+ rack (1.6.4)
60
62
  rake (10.4.2)
61
- rdoc (4.2.0)
63
+ rdoc (4.2.1)
62
64
  json (~> 1.4)
63
- sqlite3 (1.3.10)
65
+ sqlite3 (1.3.11)
64
66
  thor (0.19.1)
65
- thread_safe (0.3.4)
67
+ thread_safe (0.3.5)
66
68
  tzinfo (1.2.2)
67
69
  thread_safe (~> 0.1)
68
70
 
@@ -79,3 +81,6 @@ DEPENDENCIES
79
81
  nokogiri (~> 1.5.0)
80
82
  rdoc (>= 2.4.2)
81
83
  sqlite3
84
+
85
+ BUNDLED WITH
86
+ 1.10.6
data/gemfiles/4.2.gemfile CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "http://rubygems.org"
4
4
 
5
- gem "activerecord", "~> 4.2.0"
5
+ gem "activerecord", "~> 4.2.3"
6
6
  gem "i18n", "~> 0.7.0"
7
7
  gem "highline", "~> 1.6.0", :group => :test
8
8
  gem "minitest", :group => :test
@@ -1,37 +1,39 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (4.2.0)
5
- activesupport (= 4.2.0)
4
+ activemodel (4.2.4)
5
+ activesupport (= 4.2.4)
6
6
  builder (~> 3.1)
7
- activerecord (4.2.0)
8
- activemodel (= 4.2.0)
9
- activesupport (= 4.2.0)
7
+ activerecord (4.2.4)
8
+ activemodel (= 4.2.4)
9
+ activesupport (= 4.2.4)
10
10
  arel (~> 6.0)
11
- activesupport (4.2.0)
11
+ activesupport (4.2.4)
12
12
  i18n (~> 0.7)
13
13
  json (~> 1.7, >= 1.7.7)
14
14
  minitest (~> 5.1)
15
15
  thread_safe (~> 0.3, >= 0.3.4)
16
16
  tzinfo (~> 1.1)
17
- addressable (2.3.7)
18
- appraisal (1.0.2)
17
+ addressable (2.4.0)
18
+ appraisal (2.1.0)
19
19
  bundler
20
20
  rake
21
21
  thor (>= 0.14.0)
22
- arel (6.0.0)
22
+ arel (6.0.3)
23
23
  builder (3.2.2)
24
- faraday (0.8.9)
25
- multipart-post (~> 1.2.0)
24
+ descendants_tracker (0.0.4)
25
+ thread_safe (~> 0.3, >= 0.3.1)
26
+ faraday (0.9.2)
27
+ multipart-post (>= 1.2, < 3)
26
28
  git (1.2.9.1)
27
- github_api (0.10.1)
28
- addressable
29
- faraday (~> 0.8.1)
30
- hashie (>= 1.2)
31
- multi_json (~> 1.4)
32
- nokogiri (~> 1.5.2)
29
+ github_api (0.13.1)
30
+ addressable (~> 2.4.0)
31
+ descendants_tracker (~> 0.0.4)
32
+ faraday (~> 0.8, < 0.10)
33
+ hashie (>= 3.4)
34
+ multi_json (>= 1.7.5, < 2.0)
33
35
  oauth2
34
- hashie (3.4.0)
36
+ hashie (3.4.3)
35
37
  highline (1.6.21)
36
38
  i18n (0.7.0)
37
39
  jeweler (2.0.1)
@@ -43,12 +45,12 @@ GEM
43
45
  nokogiri (>= 1.5.10)
44
46
  rake
45
47
  rdoc
46
- json (1.8.2)
47
- jwt (1.2.1)
48
- minitest (5.5.1)
49
- multi_json (1.11.0)
48
+ json (1.8.3)
49
+ jwt (1.5.2)
50
+ minitest (5.8.3)
51
+ multi_json (1.11.2)
50
52
  multi_xml (0.5.5)
51
- multipart-post (1.2.0)
53
+ multipart-post (2.0.0)
52
54
  nokogiri (1.5.11)
53
55
  oauth2 (1.0.0)
54
56
  faraday (>= 0.8, < 0.10)
@@ -56,13 +58,13 @@ GEM
56
58
  multi_json (~> 1.3)
57
59
  multi_xml (~> 0.5)
58
60
  rack (~> 1.2)
59
- rack (1.6.0)
61
+ rack (1.6.4)
60
62
  rake (10.4.2)
61
- rdoc (4.2.0)
63
+ rdoc (4.2.1)
62
64
  json (~> 1.4)
63
- sqlite3 (1.3.10)
65
+ sqlite3 (1.3.11)
64
66
  thor (0.19.1)
65
- thread_safe (0.3.4)
67
+ thread_safe (0.3.5)
66
68
  tzinfo (1.2.2)
67
69
  thread_safe (~> 0.1)
68
70
 
@@ -70,7 +72,7 @@ PLATFORMS
70
72
  ruby
71
73
 
72
74
  DEPENDENCIES
73
- activerecord (~> 4.2.0)
75
+ activerecord (~> 4.2.3)
74
76
  appraisal
75
77
  highline (~> 1.6.0)
76
78
  i18n (~> 0.7.0)
@@ -79,3 +81,6 @@ DEPENDENCIES
79
81
  nokogiri (~> 1.5.0)
80
82
  rdoc (>= 2.4.2)
81
83
  sqlite3
84
+
85
+ BUNDLED WITH
86
+ 1.10.6
@@ -48,6 +48,8 @@ class ActiveRecord::Base
48
48
  if conditions_or_deep_associations.kind_of?(Hash)
49
49
  conditions[:if] = conditions_or_deep_associations.delete(:if) if conditions_or_deep_associations[:if]
50
50
  conditions[:unless] = conditions_or_deep_associations.delete(:unless) if conditions_or_deep_associations[:unless]
51
+ elsif conditions_or_deep_associations.kind_of?(Array)
52
+ conditions_or_deep_associations.delete_if {|entry| conditions.merge!(entry) if entry.is_a?(Hash) && (entry.key?(:if) || entry.key?(:unless)) }
51
53
  end
52
54
 
53
55
  dup_options = conditions_or_deep_associations.blank? ? {} : {:include => conditions_or_deep_associations}
data/readme.md ADDED
@@ -0,0 +1,127 @@
1
+ # deep_cloneable
2
+
3
+ [![Build Status](https://travis-ci.org/moiristo/deep_cloneable.svg?branch=master)](https://travis-ci.org/moiristo/deep_cloneable)
4
+
5
+ This gem gives every ActiveRecord::Base object the possibility to do a deep clone that includes user specified associations. It is a rails 3+ upgrade of the [deep_cloning plugin](http://github.com/openminds/deep_cloning).
6
+
7
+ ## Requirements
8
+
9
+ * Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.5 (tested)
10
+ * Activerecord 3.1, 3.2, 4.0, 4.1, 4.2 (tested)
11
+ * Rails 2.x/3.0 users, please check out the 'rails2.x-3.0' branch
12
+
13
+ ## Installation
14
+
15
+ * Add deep_cloneable to your Gemfile:
16
+
17
+ ```ruby
18
+ gem 'deep_cloneable', '~> 2.2.0'
19
+ ```
20
+
21
+ ## Upgrading from v1
22
+
23
+ The `dup` method with arguments has been replaced in deep_cloneable 2 by the method `deep_clone`. Please update your sources accordingly.
24
+
25
+ ## Usage
26
+
27
+ The `deep_clone` method supports a couple options that can be specified by passing an options hash. Without options, the behaviour is the same as ActiveRecord's [`dup`](http://apidock.com/rails/ActiveRecord/Core/dup) method.
28
+
29
+ ### Association inclusion
30
+
31
+ Associations to be included in the dup can be specified with the `include` option:
32
+
33
+ ```ruby
34
+ # Single include
35
+ pirate.deep_clone include: :mateys
36
+
37
+ # Multiple includes
38
+ pirate.deep_clone include: [ :mateys, :treasures ]
39
+
40
+ # Deep includes
41
+ pirate.deep_clone include: { treasures: :gold_pieces }
42
+ pirate.deep_clone include: [ :mateys, { treasures: :gold_pieces } ]
43
+
44
+ # Disable validation for a performance speedup when saving the dup
45
+ pirate.deep_clone include: { treasures: :gold_pieces }, validate: false
46
+
47
+ # Conditional includes
48
+ pirate.deep_clone include: [
49
+ {
50
+ treasures: { gold_pieces: { if: lambda{|piece| piece.is_a?(Parrot) } } } },
51
+ mateys: { unless: lambda{|matey| matey.is_a?(GoldPiece) }
52
+ }
53
+ ]
54
+
55
+ ship.deep_clone include: [
56
+ pirates: [ :treasures, :mateys, if: lambda {|pirate| pirate.name == 'Jack Sparrow' } ]
57
+ ]
58
+ ```
59
+
60
+ #### The Dictionary (Object Reusage)
61
+
62
+ The dictionary ensures that models are not duped multiple times when it is associated to nested models. It does this by storing a mapping of the original object to its duped object. It can be used as follows:
63
+
64
+ ```ruby
65
+ # Enables the dictionary (empty on initialization)
66
+ pirate.deep_clone include: [ :mateys, { treasures: [ :matey, :gold_pieces ] } ], use_dictionary: true
67
+
68
+ # Deep clones with a prefilled dictionary
69
+ dictionary = { mateys: {} }
70
+ pirate.mateys.each{|m| dict[:mateys][m] = m.deep_clone }
71
+ pirate.deep_clone include: [ :mateys, { treasures: [ :matey, :gold_pieces ] } ], dictionary: dictionary
72
+ ```
73
+
74
+ ### Attribute Exceptions & Inclusions
75
+
76
+ The `deep_clone` method supports both `except` and `only` for specifying which attributes should be duped:
77
+
78
+ #### Exceptions
79
+ ```ruby
80
+ # Single exception
81
+ pirate.deep_clone except: :name
82
+
83
+ # Multiple exceptions
84
+ pirate.deep_clone except: [ :name, :nick_name ]
85
+
86
+ # Nested exceptions
87
+ pirate.deep_clone include: :parrot, except: [ :name, { parrot: [ :name ] } ]
88
+ ```
89
+
90
+ #### Inclusions
91
+ ```ruby
92
+ # Single attribute inclusion
93
+ pirate.deep_clone only: :name
94
+
95
+ # Multiple attribute inclusions
96
+ pirate.deep_clone only: [ :name, :nick_name ]
97
+
98
+ # Nested attribute inclusions
99
+ pirate.deep_clone include: :parrot, only: [ :name, { parrot: [ :name ] } ]
100
+
101
+ ```
102
+
103
+ ### Optional Block
104
+
105
+ Pass a block to `deep_clone` to modify a duped object after duplication:
106
+
107
+ ```ruby
108
+ pirate.deep_clone include: :parrot do |original, kopy|
109
+ kopy.cloned_from_id = original.id if kopy.respond_to?(:cloned_from_id)
110
+ end
111
+ ```
112
+
113
+ *Note*: Using `deep_clone` with a block will also pass the associated objects that are being cloned to the block, so be sure to check whether the object actually responds to your method of choice.
114
+
115
+ ### Note on Patches/Pull Requests
116
+
117
+ * Fork the project.
118
+ * Make your feature addition or bug fix.
119
+ * Add tests for it. This is important so I don't break it in a
120
+ future version unintentionally.
121
+ * Commit, do not mess with rakefile, version, or history.
122
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
123
+ * Send me a pull request. Bonus points for topic branches.
124
+
125
+ ### Copyright
126
+
127
+ Copyright &copy; 2016 Reinier de Lange. See LICENSE for details.
@@ -358,7 +358,19 @@ class TestDeepCloneable < MiniTest::Unit::TestCase
358
358
  assert_equal 1, deep_clone.treasures.size
359
359
  assert_equal 1, deep_clone.gold_pieces.size
360
360
  assert_equal 0, deep_clone.mateys.size
361
+ end
362
+
363
+ def test_should_reject_copies_if_conditionals_are_passed_with_associations
364
+ deep_clone = @ship.deep_clone(:include => [:pirates => [:treasures, :mateys, { :unless => lambda {|pirate| pirate.name == 'Jack Sparrow'} }]])
365
+
366
+ assert deep_clone.new_record?
367
+ assert deep_clone.save
368
+ assert_equal 0, deep_clone.pirates.size
361
369
 
370
+ deep_clone = @ship.deep_clone(:include => [:pirates => [:treasures, :mateys, { :if => lambda {|pirate| pirate.name == 'Jack Sparrow'} }]])
371
+ assert deep_clone.new_record?
372
+ assert deep_clone.save
373
+ assert_equal 1, deep_clone.pirates.size
362
374
  end
363
375
 
364
376
  def test_should_find_in_dict_for_habtm
@@ -378,10 +390,10 @@ class TestDeepCloneable < MiniTest::Unit::TestCase
378
390
  ]
379
391
  }
380
392
  ],
381
- :use_dictionary => true
382
- )
393
+ :use_dictionary => true)
394
+
383
395
  deep_clone.save!
384
-
396
+
385
397
  assert_equal deep_clone.contractors.first.apartments.first.id, deep_clone.apartments.first.id
386
398
  assert_equal deep_clone.apartments.first.contractors.first.id, deep_clone.contractors.first.id
387
399
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deep_cloneable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reinier de Lange
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-10 00:00:00.000000000 Z
11
+ date: 2016-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -30,14 +30,14 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.1.0
33
- description: 'Extends the functionality of ActiveRecord::Base#clone to perform a deep
33
+ description: 'Extends the functionality of ActiveRecord::Base#dup to perform a deep
34
34
  clone that includes user specified associations. '
35
35
  email: r.j.delange@nedforce.nl
36
36
  executables: []
37
37
  extensions: []
38
38
  extra_rdoc_files:
39
39
  - LICENSE
40
- - README.rdoc
40
+ - readme.md
41
41
  files:
42
42
  - ".document"
43
43
  - ".travis.yml"
@@ -45,7 +45,6 @@ files:
45
45
  - Gemfile
46
46
  - Gemfile.lock
47
47
  - LICENSE
48
- - README.rdoc
49
48
  - Rakefile
50
49
  - VERSION
51
50
  - deep_cloneable.gemspec
@@ -61,6 +60,7 @@ files:
61
60
  - gemfiles/4.2.gemfile.lock
62
61
  - init.rb
63
62
  - lib/deep_cloneable.rb
63
+ - readme.md
64
64
  - test/database.yml
65
65
  - test/models.rb
66
66
  - test/schema.rb
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  requirements: []
88
88
  rubyforge_project:
89
- rubygems_version: 2.4.3
89
+ rubygems_version: 2.4.8
90
90
  signing_key:
91
91
  specification_version: 4
92
92
  summary: This gem gives every ActiveRecord::Base object the possibility to do a deep
data/README.rdoc DELETED
@@ -1,98 +0,0 @@
1
- = Deep_cloneable
2
-
3
- {<img src="https://travis-ci.org/moiristo/deep_cloneable.png?branch=master" alt="Build Status" />}[https://travis-ci.org/moiristo/deep_cloneable]
4
-
5
- This gem gives every ActiveRecord::Base object the possibility to do a deep clone. It is a rails3 upgrade of the deep_cloning plugin (http://github.com/openminds/deep_cloning).
6
-
7
- == Requirements
8
-
9
- * Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.5 (tested)
10
-
11
- * Activerecord 3.1, 3.2, 4.0, 4.1, 4.2
12
-
13
- * Rails 2.x/3.0 users, please check out the 'rails2.x-3.0' branch.
14
-
15
- == Installation
16
-
17
- * In your Gemfile:
18
-
19
- gem 'deep_cloneable', '~> 2.1.1'
20
-
21
- == Upgrading from v1
22
-
23
- The 'dup' method with arguments has been replaced in deep_cloneable 2 by the method 'deep_clone'. Please update your sources accordingly.
24
-
25
- == Example
26
-
27
- === Cloning one single association
28
- pirate.deep_clone :include => :mateys
29
-
30
- === Cloning multiple associations
31
- pirate.deep_clone :include => [:mateys, :treasures]
32
-
33
- === Cloning really deep
34
- pirate.deep_clone :include => {:treasures => :gold_pieces}
35
-
36
- === Cloning really deep with multiple associations
37
- pirate.deep_clone :include => [:mateys, {:treasures => :gold_pieces}]
38
-
39
- === Cloning really deep with multiple associations and a dictionary
40
-
41
- A dictionary ensures that models are not cloned multiple times when it is associated to nested models.
42
- When using a dictionary, ensure recurring associations are cloned first:
43
-
44
- pirate.deep_clone :include => [:mateys, {:treasures => [:matey, :gold_pieces]}], :use_dictionary => true
45
-
46
- If this is not an option for you, it is also possible to populate the dictionary manually in advance:
47
-
48
- dict = { :mateys => {} }
49
- pirate.mateys.each{|m| dict[:mateys][m] = m.deep_clone }
50
- pirate.deep_clone :include => [:mateys, {:treasures => [:matey, :gold_pieces]}], :dictionary => dict
51
-
52
- When an object isn't found in the dictionary, it will be populated. By passing in an empty dictionary you can populate it automatically and reuse it in subsequent deep_clones to avoid creating multiples of the same object where you have overlapping associations.
53
-
54
- === Cloning a model without an attribute
55
- pirate.deep_clone :except => :name
56
-
57
- === Cloning a model without multiple attributes
58
- pirate.deep_clone :except => [:name, :nick_name]
59
-
60
- === Cloning a model without an attribute or nested multiple attributes
61
- pirate.deep_clone :include => :parrot, :except => [:name, { :parrot => [:name] }]
62
-
63
- === Cloning with a block
64
- pirate.deep_clone :include => :parrot do |original, kopy|
65
- kopy.cloned_from_id = original.id if kopy.respond_to?(:cloned_from_id)
66
- end
67
-
68
- *Note*: Using deep_clone with a block will also pass the associated objects that are being cloned to the block,
69
- so be sure to check whether the object actually responds to your method of choice.
70
-
71
- === Cloning without validations
72
- pirate.deep_clone :include => {:treasures => :gold_pieces}, :validate => false
73
-
74
- === Cloning a model with only explicitly assigned attribute
75
- pirate.deep_clone :only => :name
76
-
77
- === Cloning a model with only multiple explicitly assigned attributes
78
- pirate.deep_clone :only => [:name, :nick_name]
79
-
80
- === Cloning a model with explicitly assigned attributes or nested multiple attributes
81
- pirate.deep_clone :include => :parrot, :only => [:name, { :parrot => [:name] }]
82
-
83
- === Conditional cloning
84
- pirate.deep_clone(:include => [{:treasures => { :gold_pieces => { :if => lambda{|piece| piece.is_a?(Parrot) } } } }, :mateys => { :unless => lambda{|matey| matey.is_a?(GoldPiece) } } ])
85
-
86
- == Note on Patches/Pull Requests
87
-
88
- * Fork the project.
89
- * Make your feature addition or bug fix.
90
- * Add tests for it. This is important so I don't break it in a
91
- future version unintentionally.
92
- * Commit, do not mess with rakefile, version, or history.
93
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
94
- * Send me a pull request. Bonus points for topic branches.
95
-
96
- == Copyright
97
-
98
- Copyright (c) 2015 Reinier de Lange. See LICENSE for details.