purgatory 2.1.0 → 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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDk2M2Q4ODkzMTE1NDM4YzRjNGFjZTVmNDg3ZDI0MTE2YzI5NjkzOA==
4
+ ZThjNmYwNzUxOTAyNWY4Nzg5YjViOGViMmU0NTE5ZTg4MmJhZWQ2Mw==
5
5
  data.tar.gz: !binary |-
6
- MjgzNTkxZWM0NzJiNDQyYzY3YzI4NmQ3NmEzNWMwMzZhYjhjNDk5ZQ==
7
- !binary "U0hBNTEy":
6
+ NzE1MmNmNzkzZTgxZDY2Y2IxNTgzZmQ1YmI3NjRhYjBhMTY4Nzk1Nw==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- MTJlOTU1NDRiNjgzZjM5ODgzZWY1NjExZTg1YzAxMWVkZTI1OTdkZTA2NGQ5
10
- NmQ2NmIwYjMyZDI2OWFlNDM0ZDcwODI5OWU0ZTMxMThhYTkwYjFiM2U2NzIy
11
- NDEzZTNmMWQ0MTliZDVhMzk2OTJlYmUyNDY0ZDUxNjVhZWE1ODc=
9
+ OTE1N2FiNmUwMjEzYTFlNWU3M2M3MmZiYmRiOTU2MzIzODQ4NjNlMjI5ZTFm
10
+ YzkxZjc4ZWI1OWFhZWQ3NThhY2EzZTM5ZGI4M2NlN2JjMWQ3MjA5YTEwMTQy
11
+ MDdmNmFmNzYwMDE2YzEzODU3ZTU1N2RiZDMzZDU5NjNjNTRlMzQ=
12
12
  data.tar.gz: !binary |-
13
- MTJlMmE3ZWEwNjM0NDQyNGYxNjNmYjE5NzVmOTE3ZGFmNDI1ZTFhZjgwYzdh
14
- YzFhMjkwZDlkZmYyN2JjMThhNmIzNjIzYmZjYTFjNzFjMjAzZjhiZDFjOGFj
15
- ZGQxN2E3Mjc5NDJjMmJjNWJmZTA0OTE0ZDJkZmQ2NmE2Yjg0Mjk=
13
+ NDg5MjZlYTA3ZDY1NTQyOTE3MDE4MzczMjNlNGE5NWVhMTRmMzMxYzU4ZmEz
14
+ ZjQyOGFkYTE0N2RlOWM0MmU5NzI0NmFmNmNlYTAzMDRhOWU0M2JkYWE1MjY4
15
+ YTg3NjNmOGI0NTcxNmM5YjY0YTE3MWI0M2EyODM5Mjk1MTk3ODU=
data/Gemfile CHANGED
@@ -6,14 +6,13 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "shoulda", ">= 0"
10
9
  gem "rdoc", "~> 3.12"
11
10
  gem "bundler", "~> 1.0"
12
11
  gem "jeweler", "~> 1.8.7"
13
12
  end
14
13
 
15
14
  group :test do
16
- gem "activerecord"
15
+ gem "activerecord", ">= 4"
17
16
  gem "rspec"
18
17
  gem "sqlite3"
19
18
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,15 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activerecord (1.6.0)
4
+ activemodel (4.0.1)
5
+ activesupport (= 4.0.1)
6
+ builder (~> 3.1.0)
7
+ activerecord (4.0.1)
8
+ activemodel (= 4.0.1)
9
+ activerecord-deprecated_finders (~> 1.0.2)
10
+ activesupport (= 4.0.1)
11
+ arel (~> 4.0.0)
12
+ activerecord-deprecated_finders (1.0.3)
5
13
  activesupport (4.0.1)
6
14
  i18n (~> 0.6, >= 0.6.4)
7
15
  minitest (~> 4.2)
@@ -9,9 +17,10 @@ GEM
9
17
  thread_safe (~> 0.1)
10
18
  tzinfo (~> 0.3.37)
11
19
  addressable (2.3.5)
20
+ arel (4.0.1)
12
21
  atomic (1.1.14)
13
- builder (3.2.2)
14
- diff-lcs (1.1.3)
22
+ builder (3.1.4)
23
+ diff-lcs (1.2.5)
15
24
  faraday (0.8.8)
16
25
  multipart-post (~> 1.2.0)
17
26
  git (1.2.6)
@@ -54,21 +63,15 @@ GEM
54
63
  rake (10.1.0)
55
64
  rdoc (3.12.2)
56
65
  json (~> 1.4)
57
- rspec (2.11.0)
58
- rspec-core (~> 2.11.0)
59
- rspec-expectations (~> 2.11.0)
60
- rspec-mocks (~> 2.11.0)
61
- rspec-core (2.11.1)
62
- rspec-expectations (2.11.3)
63
- diff-lcs (~> 1.1.3)
64
- rspec-mocks (2.11.3)
65
- shoulda (3.5.0)
66
- shoulda-context (~> 1.0, >= 1.0.1)
67
- shoulda-matchers (>= 1.4.1, < 3.0)
68
- shoulda-context (1.1.6)
69
- shoulda-matchers (2.4.0)
70
- activesupport (>= 3.0.0)
71
- sqlite3 (1.3.7)
66
+ rspec (2.14.1)
67
+ rspec-core (~> 2.14.0)
68
+ rspec-expectations (~> 2.14.0)
69
+ rspec-mocks (~> 2.14.0)
70
+ rspec-core (2.14.7)
71
+ rspec-expectations (2.14.4)
72
+ diff-lcs (>= 1.1.3, < 2.0)
73
+ rspec-mocks (2.14.4)
74
+ sqlite3 (1.3.8)
72
75
  thread_safe (0.1.3)
73
76
  atomic
74
77
  tzinfo (0.3.38)
@@ -77,10 +80,9 @@ PLATFORMS
77
80
  ruby
78
81
 
79
82
  DEPENDENCIES
80
- activerecord
83
+ activerecord (>= 4)
81
84
  bundler (~> 1.0)
82
85
  jeweler (~> 1.8.7)
83
86
  rdoc (~> 3.12)
84
87
  rspec
85
- shoulda
86
88
  sqlite3
data/README.markdown CHANGED
@@ -37,6 +37,7 @@ The following are some attributes of a purgatory:
37
37
  purgatory.soul # The ActiveRecord model instance whose changes are in purgatory
38
38
  purgatory.requester # The user who created the purgatory
39
39
  purgatory.created_at # The time when the purgatory was created
40
+ purgatory.requested_changes # A hash of the proposed changes. The keys are the attribute names and the values are 2-element arrays where the 1st element is the old value and the 2nd element is the new value
40
41
  purgatory.approver # The user who approved the purgatory
41
42
  purgatory.approved_at # The time when the purgatory was approved
42
43
 
@@ -49,7 +50,6 @@ Here are some handy scopes and methods available to you:
49
50
  ### Methods
50
51
  purgatory.pending? # Returns true if the purgatory is pending, false otherwise
51
52
  purgatory.approved? # Returns true if the purgatory has been approved, false otherwise
52
- purgatory.changes_hash # Returns a hash of the proposed changes. The keys are the attribute names and the values are 2-element arrays where the 1st element is the old value and the 2nd element is the new value
53
53
 
54
54
  ## Contributing to Purgatory
55
55
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.0
1
+ 2.2.0
@@ -6,7 +6,7 @@ class CreatePurgatories < ActiveRecord::Migration
6
6
  t.integer :requester_id
7
7
  t.integer :approver_id
8
8
  t.datetime :approved_at
9
- t.string :changes_json
9
+ t.string :requested_changes
10
10
 
11
11
  t.timestamps
12
12
  end
@@ -6,6 +6,8 @@ class Purgatory < ActiveRecord::Base
6
6
 
7
7
  validates :soul_type, presence: true
8
8
 
9
+ serialize :requested_changes
10
+
9
11
  def self.pending
10
12
  where(approved_at: nil)
11
13
  end
@@ -22,17 +24,13 @@ class Purgatory < ActiveRecord::Base
22
24
  approved_at.nil?
23
25
  end
24
26
 
25
- def changes_hash
26
- ActiveSupport::JSON.decode(changes_json)
27
- end
28
-
29
27
  def soul
30
28
  @soul ||= (super || soul_type.constantize.new)
31
29
  end
32
30
 
33
31
  def approve!(approver = nil)
34
32
  return false if approved?
35
- changes_hash.each{|k,v| soul.send "#{k}=", v[1]}
33
+ requested_changes.each{|k,v| soul.send "#{k}=", v[1]}
36
34
  if soul.save
37
35
  self.approver = approver
38
36
  self.approved_at = Time.now
@@ -45,6 +43,6 @@ class Purgatory < ActiveRecord::Base
45
43
  private
46
44
 
47
45
  def store_changes
48
- self.changes_json = ActiveSupport::JSON.encode(soul.changes)
46
+ self.requested_changes = soul.changes
49
47
  end
50
48
  end
data/purgatory.gemspec CHANGED
@@ -2,14 +2,15 @@
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: purgatory 2.2.0 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "purgatory"
8
- s.version = "2.1.0"
9
+ s.version = "2.2.0"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
12
  s.authors = ["Elan Dubrofsky"]
12
- s.date = "2013-11-24"
13
+ s.date = "2013-11-25"
13
14
  s.description = "Put your model changes in purgatory and allow them to remain lost souls until they are approved"
14
15
  s.email = "elan.dubrofsky@gmail.com"
15
16
  s.extra_rdoc_files = [
@@ -39,25 +40,22 @@ Gem::Specification.new do |s|
39
40
  s.homepage = "http://github.com/financeit/purgatory"
40
41
  s.licenses = ["MIT"]
41
42
  s.require_paths = ["lib"]
42
- s.rubygems_version = "2.0.3"
43
+ s.rubygems_version = "2.1.11"
43
44
  s.summary = "Allow changes to a model to be put in purgatory until they are approved"
44
45
 
45
46
  if s.respond_to? :specification_version then
46
47
  s.specification_version = 4
47
48
 
48
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_development_dependency(%q<shoulda>, [">= 0"])
50
50
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
51
51
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
52
52
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
53
53
  else
54
- s.add_dependency(%q<shoulda>, [">= 0"])
55
54
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
56
55
  s.add_dependency(%q<bundler>, ["~> 1.0"])
57
56
  s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
58
57
  end
59
58
  else
60
- s.add_dependency(%q<shoulda>, [">= 0"])
61
59
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
62
60
  s.add_dependency(%q<bundler>, ["~> 1.0"])
63
61
  s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
@@ -23,10 +23,10 @@ describe Purgatory do
23
23
  it "should store the soul, requester and requested changes" do
24
24
  @purgatory.soul.should == @widget
25
25
  @purgatory.requester.should == user1
26
- @purgatory.changes_hash['name'].first.should == 'foo'
27
- @purgatory.changes_hash['name'].last.should == 'bar'
28
- @purgatory.changes_hash['price'].first.should == 100
29
- @purgatory.changes_hash['price'].last.should == 200
26
+ @purgatory.requested_changes['name'].first.should == 'foo'
27
+ @purgatory.requested_changes['name'].last.should == 'bar'
28
+ @purgatory.requested_changes['price'].first.should == 100
29
+ @purgatory.requested_changes['price'].last.should == 200
30
30
  end
31
31
 
32
32
  it "should not change the widget" do
@@ -71,10 +71,10 @@ describe Purgatory do
71
71
 
72
72
  it "should store the requester and requested changes" do
73
73
  @purgatory.requester.should == user1
74
- @purgatory.changes_hash['name'].first.should == nil
75
- @purgatory.changes_hash['name'].last.should == 'foo'
76
- @purgatory.changes_hash['price'].first.should == nil
77
- @purgatory.changes_hash['price'].last.should == 100
74
+ @purgatory.requested_changes['name'].first.should == nil
75
+ @purgatory.requested_changes['name'].last.should == 'foo'
76
+ @purgatory.requested_changes['price'].first.should == nil
77
+ @purgatory.requested_changes['price'].last.should == 100
78
78
  end
79
79
 
80
80
  it "should not create a widget" do
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: purgatory
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elan Dubrofsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-24 00:00:00.000000000 Z
11
+ date: 2013-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: shoulda
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ! '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ! '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rdoc
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
99
  version: '0'
114
100
  requirements: []
115
101
  rubyforge_project:
116
- rubygems_version: 2.0.3
102
+ rubygems_version: 2.1.11
117
103
  signing_key:
118
104
  specification_version: 4
119
105
  summary: Allow changes to a model to be put in purgatory until they are approved