conscript 0.2.1 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +10 -1
- data/lib/conscript/orm/activerecord.rb +13 -9
- data/lib/conscript/version.rb +1 -1
- metadata +14 -14
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
+
## v0.2.3
|
2
|
+
|
3
|
+
* Fixed a failing scenario where associated objects modified the parent object before the parent was destroyed
|
4
|
+
* Fixed a failing scenario where inverse relationship was not detected under certain conditions
|
5
|
+
|
6
|
+
## v0.2.2
|
7
|
+
|
8
|
+
* Fixed regression bug where attributes were sometimes not being copied over to the draft parent.
|
9
|
+
|
1
10
|
## v0.2.1
|
2
11
|
|
3
12
|
* Fixed bug where associated `has_many` records with CarrierWave uploads were not duplicated correctly - uploaded files are now copied
|
4
13
|
* Fixed bug where destroying a draft would remove an uploaded file from its draft parent if they shared the same file.
|
5
|
-
* Fixed bug where drafts were destroyed before
|
14
|
+
* Fixed bug where drafts were destroyed before `publish_draft` was successful
|
6
15
|
* Added an ActiveRecord error where `save` fails if drafts exist for an instance
|
7
16
|
|
8
17
|
## v0.2.0
|
@@ -21,7 +21,7 @@ module Conscript
|
|
21
21
|
self.conscript_options[:ignore_attributes].map!(&:to_s)
|
22
22
|
self.conscript_options.update options.slice(:allow_update_with_drafts, :destroy_drafts_on_publish)
|
23
23
|
|
24
|
-
belongs_to :draft_parent, class_name: self
|
24
|
+
belongs_to :draft_parent, class_name: self, inverse_of: :drafts
|
25
25
|
has_many :drafts, conditions: {is_draft: true}, class_name: self, foreign_key: :draft_parent_id, dependent: :destroy, inverse_of: :draft_parent
|
26
26
|
|
27
27
|
define_callbacks :publish_draft, :save_as_draft
|
@@ -64,25 +64,29 @@ module Conscript
|
|
64
64
|
run_callbacks :publish_draft do
|
65
65
|
raise Conscript::Exception::NotADraft unless is_draft?
|
66
66
|
return self.update_attribute(:is_draft, false) if !draft_parent_id
|
67
|
+
parent = self.draft_parent
|
67
68
|
::ActiveRecord::Base.transaction do
|
68
|
-
|
69
|
+
parent.assign_attributes attributes_to_publish, without_protection: true
|
69
70
|
|
70
71
|
self.class.conscript_options[:associations].each do |association|
|
71
72
|
case reflections[association].macro
|
72
73
|
when :has_many
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
dup.class.uploaders
|
74
|
+
parent.send(association.to_s + "=", self.send(association).collect do |child|
|
75
|
+
child.dup do |original, dup|
|
76
|
+
# Workaround for CarrierWave uploaders on associated records. Copy the uploaded files.
|
77
|
+
if dup.class.respond_to? :uploaders
|
78
|
+
dup.class.uploaders.keys.each {|uploader| dup.send(uploader.to_s + "=", original.send(uploader)) }
|
79
|
+
end
|
77
80
|
end
|
78
|
-
end
|
81
|
+
end)
|
79
82
|
end
|
80
83
|
end
|
81
84
|
|
85
|
+
self.reload
|
82
86
|
self.destroy
|
83
|
-
|
87
|
+
parent.save!
|
84
88
|
end
|
85
|
-
|
89
|
+
parent
|
86
90
|
end
|
87
91
|
end
|
88
92
|
|
data/lib/conscript/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conscript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-17 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement: &
|
16
|
+
requirement: &70300252198620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.3.5
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70300252198620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70300252198040 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70300252198040
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70300252195300 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70300252195300
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sqlite3
|
49
|
-
requirement: &
|
49
|
+
requirement: &70300252194860 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70300252194860
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: activerecord
|
60
|
-
requirement: &
|
60
|
+
requirement: &70300252194360 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 3.2.13
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70300252194360
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: deep_cloneable
|
71
|
-
requirement: &
|
71
|
+
requirement: &70300252193860 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: 1.5.2
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70300252193860
|
80
80
|
description: Provides ActiveRecord models with draft instances, including associations
|
81
81
|
email:
|
82
82
|
- steve@stevelorek.com
|