controlled_versioning 0.10.0 → 0.11.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 +8 -8
- data/MIT-LICENSE +1 -1
- data/app/models/controlled_versioning/version.rb +24 -6
- data/lib/controlled_versioning.rb +21 -0
- data/lib/controlled_versioning/version_number.rb +1 -1
- data/spec/dummy/app/models/handler_resource.rb +39 -8
- data/spec/dummy/db/migrate/20140118222842_create_handler_resources.rb +4 -0
- data/spec/dummy/db/schema.rb +3 -0
- data/spec/models/controlled_versioning/version_spec.rb +18 -0
- metadata +41 -41
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTg2ZTUxYzM1ZWU1NDM1YTllODA2NDE1NzFmYjBjNTI2YjMwMjg5NA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTFkMWMzMTZmNzNlZGQxNzc2OGM3YWI3YWUwZTgyOWU1ZGJjNjA0Mw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWRlNWJiMjUzMzk4YTkwODZiNTExZGZkZGMxMjliMjhhYmRkMzg0ZTE2MTI0
|
10
|
+
NWU4MWExMzMyYzY1NTgzZGE5ZGE3OThjZTNlN2RiMmY1NWVhZDJiZjc3YTlj
|
11
|
+
ZDFmMTkwZDg3NDZjMDgxMjIwNWQ3ZTdmODUyODc3YmYyODE4NTA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YmQ2NjQwYjY5YjIwMmQ4NGMwZTFiZWM4ZDYyNDhlY2E2NTM0MjIyYzg2ZGE0
|
14
|
+
NmJhMmQxNjEzODJiNmYxYTc2OTZiMmI0ODRhODc5ZTU3OWIzN2FhNTdiZjU3
|
15
|
+
MjMwOWM1ODVmMDQyZWJjZjAxNTRiMjIxMjA4ZTQ5YTkxZjkyNDE=
|
data/MIT-LICENSE
CHANGED
@@ -9,22 +9,26 @@ module ControlledVersioning
|
|
9
9
|
scope :accepted, -> { where(accepted: true) }
|
10
10
|
scope :declined, -> { where(declined: true) }
|
11
11
|
|
12
|
+
after_create :run_user_generated_create_callbacks
|
13
|
+
|
12
14
|
def accept
|
13
15
|
if pending?
|
16
|
+
versionable.reload
|
14
17
|
Revision::Publisher.new(self).accept_revision unless initial?
|
15
18
|
update_attributes(pending: false, accepted: true)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
+
trigger_callbacks(:general_accepting_callbacks)
|
20
|
+
trigger_callbacks(:initial_accepting_callbacks) if initial?
|
21
|
+
trigger_callbacks(:revision_accepting_callbacks) unless initial?
|
19
22
|
end
|
20
23
|
end
|
21
24
|
|
22
25
|
def decline
|
23
26
|
if pending?
|
27
|
+
versionable.reload
|
24
28
|
update_attributes(pending: false, declined: true)
|
25
|
-
|
26
|
-
|
27
|
-
|
29
|
+
trigger_callbacks(:general_declining_callbacks)
|
30
|
+
trigger_callbacks(:initial_declining_callbacks) if initial?
|
31
|
+
trigger_callbacks(:revision_declining_callbacks) unless initial?
|
28
32
|
end
|
29
33
|
end
|
30
34
|
|
@@ -35,5 +39,19 @@ module ControlledVersioning
|
|
35
39
|
def is_a_child?
|
36
40
|
false
|
37
41
|
end
|
42
|
+
|
43
|
+
private
|
44
|
+
def run_user_generated_create_callbacks
|
45
|
+
trigger_callbacks(:general_creating_callbacks)
|
46
|
+
trigger_callbacks(:initial_creating_callbacks) if initial?
|
47
|
+
trigger_callbacks(:revision_creating_callbacks) unless initial?
|
48
|
+
end
|
49
|
+
|
50
|
+
def trigger_callbacks(type)
|
51
|
+
if versionable.class.respond_to?(type)
|
52
|
+
callbacks = versionable.class.send(type)
|
53
|
+
callbacks.each { |callback| versionable.send(callback) }
|
54
|
+
end
|
55
|
+
end
|
38
56
|
end
|
39
57
|
end
|
@@ -31,6 +31,27 @@ module ControlledVersioning
|
|
31
31
|
|
32
32
|
send :include, InstanceMethods
|
33
33
|
|
34
|
+
def define_callbacks(*types)
|
35
|
+
types.each { |type| define_callback(type) }
|
36
|
+
end
|
37
|
+
|
38
|
+
def define_callback(type)
|
39
|
+
define_singleton_method("after_#{type}_a_version") do |*args|
|
40
|
+
options = args.extract_options!
|
41
|
+
options.merge!(only: :general) if options[:only].blank?
|
42
|
+
register_callback_methods(type, args, options)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def register_callback_methods(type, args, options)
|
47
|
+
restriction = options[:only].to_s
|
48
|
+
define_singleton_method("#{restriction}_#{type}_callbacks") do
|
49
|
+
args
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
define_callbacks :creating, :accepting, :declining
|
54
|
+
|
34
55
|
def set_versionable_attribute_names(nonversionables)
|
35
56
|
nonversionables = [] unless nonversionables.present?
|
36
57
|
ArrayConverter.to_s!(nonversionables)
|
@@ -1,30 +1,61 @@
|
|
1
1
|
class HandlerResource < ActiveRecord::Base
|
2
|
-
acts_as_versionable
|
3
|
-
|
4
|
-
|
2
|
+
acts_as_versionable nonversionable_attributes: [:create_count, :accept_count,
|
3
|
+
:decline_count, :created_revisions_count, :accepted_revisions_count,
|
4
|
+
:declined_revisions_count, :has_been_created, :accepted, :declined]
|
5
|
+
|
6
|
+
after_creating_a_version :increment_create_count
|
7
|
+
after_creating_a_version :created, only: :initial
|
8
|
+
after_creating_a_version :increment_created_revision_count,
|
9
|
+
only: :revision
|
10
|
+
|
11
|
+
after_accepting_a_version :increment_accept_count
|
12
|
+
after_accepting_a_version :accept, only: :initial
|
13
|
+
after_accepting_a_version :increment_accepted_revision_count,
|
14
|
+
only: :revision
|
15
|
+
|
16
|
+
after_declining_a_version :increment_decline_count
|
17
|
+
after_declining_a_version :decline, only: :initial
|
18
|
+
after_declining_a_version :increment_declined_revision_count,
|
19
|
+
only: :revision
|
20
|
+
|
21
|
+
def increment_create_count
|
22
|
+
increment(:create_count)
|
23
|
+
save
|
24
|
+
end
|
25
|
+
|
26
|
+
def created
|
27
|
+
update_attribute(:has_been_created, true)
|
28
|
+
end
|
29
|
+
|
30
|
+
def increment_created_revision_count
|
31
|
+
increment(:created_revisions_count)
|
32
|
+
save
|
33
|
+
end
|
34
|
+
|
35
|
+
def increment_accept_count
|
5
36
|
increment(:accept_count)
|
6
37
|
save
|
7
38
|
end
|
8
39
|
|
9
|
-
def
|
40
|
+
def accept
|
10
41
|
update_attribute(:accepted, true)
|
11
42
|
end
|
12
43
|
|
13
|
-
def
|
44
|
+
def increment_accepted_revision_count
|
14
45
|
increment(:accepted_revisions_count)
|
15
46
|
save
|
16
47
|
end
|
17
48
|
|
18
|
-
def
|
49
|
+
def increment_decline_count
|
19
50
|
increment(:decline_count)
|
20
51
|
save
|
21
52
|
end
|
22
53
|
|
23
|
-
def
|
54
|
+
def decline
|
24
55
|
update_attribute(:declined, true)
|
25
56
|
end
|
26
57
|
|
27
|
-
def
|
58
|
+
def increment_declined_revision_count
|
28
59
|
increment(:declined_revisions_count)
|
29
60
|
save
|
30
61
|
end
|
@@ -11,11 +11,15 @@ class CreateHandlerResources < ActiveRecord::Migration
|
|
11
11
|
t.text :r_text
|
12
12
|
t.time :r_time
|
13
13
|
|
14
|
+
t.integer :create_count, null: false, default: 0
|
14
15
|
t.integer :accept_count, null: false, default: 0
|
15
16
|
t.integer :decline_count, null: false, default: 0
|
17
|
+
|
18
|
+
t.integer :created_revisions_count, null: false, default: 0
|
16
19
|
t.integer :accepted_revisions_count, null: false, default: 0
|
17
20
|
t.integer :declined_revisions_count, null: false, default: 0
|
18
21
|
|
22
|
+
t.boolean :has_been_created, null: false, default: false
|
19
23
|
t.boolean :accepted, null: false, default: false
|
20
24
|
t.boolean :declined, null: false, default: false
|
21
25
|
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -98,10 +98,13 @@ ActiveRecord::Schema.define(version: 20140206204920) do
|
|
98
98
|
t.string "r_string"
|
99
99
|
t.text "r_text"
|
100
100
|
t.time "r_time"
|
101
|
+
t.integer "create_count", default: 0, null: false
|
101
102
|
t.integer "accept_count", default: 0, null: false
|
102
103
|
t.integer "decline_count", default: 0, null: false
|
104
|
+
t.integer "created_revisions_count", default: 0, null: false
|
103
105
|
t.integer "accepted_revisions_count", default: 0, null: false
|
104
106
|
t.integer "declined_revisions_count", default: 0, null: false
|
107
|
+
t.boolean "has_been_created", default: false, null: false
|
105
108
|
t.boolean "accepted", default: false, null: false
|
106
109
|
t.boolean "declined", default: false, null: false
|
107
110
|
t.datetime "created_at"
|
@@ -95,6 +95,24 @@ describe ControlledVersioning::Version do
|
|
95
95
|
@revision_two = @resource.submit_revision(r_string: "second revisions")
|
96
96
|
end
|
97
97
|
|
98
|
+
context 'creations of' do
|
99
|
+
before :each do
|
100
|
+
@resource.reload
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'any kind' do
|
104
|
+
expect(@resource.create_count).to eq 3
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'initial versions' do
|
108
|
+
expect(@resource.has_been_created).to be_true
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'revisions' do
|
112
|
+
expect(@resource.created_revisions_count).to eq 2
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
98
116
|
context 'acceptances of' do
|
99
117
|
before :each do
|
100
118
|
@resource.initial_version.accept
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: controlled_versioning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- timothythehuman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -229,71 +229,71 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
229
|
version: '0'
|
230
230
|
requirements: []
|
231
231
|
rubyforge_project:
|
232
|
-
rubygems_version: 2.2.
|
232
|
+
rubygems_version: 2.2.2
|
233
233
|
signing_key:
|
234
234
|
specification_version: 4
|
235
235
|
summary: Adds model versioning to a Rails app, with the ability to approve and declined
|
236
236
|
revisions.
|
237
237
|
test_files:
|
238
|
+
- spec/spec_helper.rb
|
238
239
|
- spec/factories/parent_resources.rb
|
239
|
-
- spec/factories/versionable_resources.rb
|
240
|
-
- spec/factories/grand_child_resources.rb
|
241
|
-
- spec/factories/handler_resources.rb
|
242
240
|
- spec/factories/partially_inclusive_versionable_resources.rb
|
243
|
-
- spec/factories/child_resources.rb
|
244
|
-
- spec/factories/partially_exclusive_versionable_resources.rb
|
245
241
|
- spec/factories/unversionable_resources.rb
|
242
|
+
- spec/factories/handler_resources.rb
|
243
|
+
- spec/factories/grand_child_resources.rb
|
246
244
|
- spec/factories/users.rb
|
247
|
-
- spec/
|
245
|
+
- spec/factories/versionable_resources.rb
|
246
|
+
- spec/factories/child_resources.rb
|
247
|
+
- spec/factories/partially_exclusive_versionable_resources.rb
|
248
248
|
- spec/models/controlled_versioning/version_spec.rb
|
249
249
|
- spec/controlled_versioning_spec.rb
|
250
|
-
- spec/dummy/
|
251
|
-
- spec/dummy/public/favicon.ico
|
252
|
-
- spec/dummy/public/422.html
|
253
|
-
- spec/dummy/public/500.html
|
254
|
-
- spec/dummy/public/404.html
|
255
|
-
- spec/dummy/bin/rake
|
256
|
-
- spec/dummy/bin/rails
|
257
|
-
- spec/dummy/bin/bundle
|
258
|
-
- spec/dummy/db/schema.rb
|
259
|
-
- spec/dummy/db/migrate/20140117222808_create_versionable_resources.rb
|
260
|
-
- spec/dummy/db/migrate/20140117222840_create_parent_resources.rb
|
261
|
-
- spec/dummy/db/migrate/20140117222800_create_users.rb
|
262
|
-
- spec/dummy/db/migrate/20140117222842_create_grand_child_resources.rb
|
263
|
-
- spec/dummy/db/migrate/20140117222815_create_partially_exclusive_versionable_resources.rb
|
264
|
-
- spec/dummy/db/migrate/20140117222828_create_nonversionable_resources.rb
|
265
|
-
- spec/dummy/db/migrate/20140117222841_create_child_resources.rb
|
266
|
-
- spec/dummy/db/migrate/20140117222814_create_partially_inclusive_versionable_resources.rb
|
267
|
-
- spec/dummy/db/migrate/20140118222842_create_handler_resources.rb
|
268
|
-
- spec/dummy/config.ru
|
269
|
-
- spec/dummy/config/boot.rb
|
270
|
-
- spec/dummy/config/initializers/wrap_parameters.rb
|
271
|
-
- spec/dummy/config/initializers/inflections.rb
|
250
|
+
- spec/dummy/config/database.yml
|
272
251
|
- spec/dummy/config/initializers/session_store.rb
|
273
|
-
- spec/dummy/config/initializers/backtrace_silencers.rb
|
274
|
-
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
275
252
|
- spec/dummy/config/initializers/secret_token.rb
|
253
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
254
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
255
|
+
- spec/dummy/config/initializers/inflections.rb
|
276
256
|
- spec/dummy/config/initializers/mime_types.rb
|
277
|
-
- spec/dummy/config/
|
257
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
278
258
|
- spec/dummy/config/application.rb
|
279
259
|
- spec/dummy/config/environment.rb
|
260
|
+
- spec/dummy/config/boot.rb
|
280
261
|
- spec/dummy/config/routes.rb
|
281
262
|
- spec/dummy/config/environments/development.rb
|
282
263
|
- spec/dummy/config/environments/test.rb
|
283
264
|
- spec/dummy/config/environments/production.rb
|
284
|
-
- spec/dummy/config/
|
265
|
+
- spec/dummy/config/locales/en.yml
|
266
|
+
- spec/dummy/Rakefile
|
267
|
+
- spec/dummy/bin/rake
|
268
|
+
- spec/dummy/bin/bundle
|
269
|
+
- spec/dummy/bin/rails
|
270
|
+
- spec/dummy/public/422.html
|
271
|
+
- spec/dummy/public/favicon.ico
|
272
|
+
- spec/dummy/public/404.html
|
273
|
+
- spec/dummy/public/500.html
|
285
274
|
- spec/dummy/app/controllers/application_controller.rb
|
286
|
-
- spec/dummy/app/
|
287
|
-
- spec/dummy/app/models/
|
288
|
-
- spec/dummy/app/models/parent_resource.rb
|
289
|
-
- spec/dummy/app/models/partially_exclusive_versionable_resource.rb
|
275
|
+
- spec/dummy/app/helpers/application_helper.rb
|
276
|
+
- spec/dummy/app/models/handler_resource.rb
|
290
277
|
- spec/dummy/app/models/child_resource.rb
|
291
278
|
- spec/dummy/app/models/nonversionable_resource.rb
|
292
|
-
- spec/dummy/app/models/
|
279
|
+
- spec/dummy/app/models/versionable_resource.rb
|
293
280
|
- spec/dummy/app/models/grand_child_resource.rb
|
281
|
+
- spec/dummy/app/models/partially_exclusive_versionable_resource.rb
|
282
|
+
- spec/dummy/app/models/parent_resource.rb
|
283
|
+
- spec/dummy/app/models/user.rb
|
294
284
|
- spec/dummy/app/models/partially_inclusive_versionable_resource.rb
|
295
285
|
- spec/dummy/app/views/layouts/application.html.erb
|
296
|
-
- spec/dummy/app/helpers/application_helper.rb
|
297
286
|
- spec/dummy/app/assets/javascripts/application.js
|
298
287
|
- spec/dummy/app/assets/stylesheets/application.css
|
288
|
+
- spec/dummy/config.ru
|
299
289
|
- spec/dummy/README.rdoc
|
290
|
+
- spec/dummy/db/schema.rb
|
291
|
+
- spec/dummy/db/migrate/20140117222815_create_partially_exclusive_versionable_resources.rb
|
292
|
+
- spec/dummy/db/migrate/20140117222808_create_versionable_resources.rb
|
293
|
+
- spec/dummy/db/migrate/20140117222840_create_parent_resources.rb
|
294
|
+
- spec/dummy/db/migrate/20140117222800_create_users.rb
|
295
|
+
- spec/dummy/db/migrate/20140117222842_create_grand_child_resources.rb
|
296
|
+
- spec/dummy/db/migrate/20140117222841_create_child_resources.rb
|
297
|
+
- spec/dummy/db/migrate/20140118222842_create_handler_resources.rb
|
298
|
+
- spec/dummy/db/migrate/20140117222814_create_partially_inclusive_versionable_resources.rb
|
299
|
+
- spec/dummy/db/migrate/20140117222828_create_nonversionable_resources.rb
|