requires_approval_rails_2 1.0.3 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8a4b7bd4c275b86b2b16aa1de9dbdc8ed41a7b7e
4
+ data.tar.gz: 27891b68e190c130107655d46277ed09b919a07d
5
+ SHA512:
6
+ metadata.gz: 89c9161b544d25ded4c4dd9b8829e7fea8d85c7318b3110cfc0beb20b9030179091b720fd0a9b4c9ee27be8b165254db2817ed555dfe1cdf14a3eb5a632331e1
7
+ data.tar.gz: 2b933bb51777f10b0cbff0f836fa282b4b7889956b7813c29f81d2ee6cb7352d36f8db4362f8aec26b378fe0e472b70eb1b85283eaa272b17a0c0a586b83e8eb
data/Gemfile CHANGED
@@ -3,21 +3,4 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem "activerecord", "~> 2.3"
7
- gem "activesupport", "~> 2.3"
8
-
9
- # Add dependencies to develop your gem here.
10
- # Include everything needed to run rake, tests, features, etc.
11
- group :development do
12
- gem "bundler"
13
- gem "guard-rspec"
14
- gem "guard-bundler"
15
- gem "guard-spork"
16
- gem "jeweler", "~> 1.8.3"
17
- gem "mocha"
18
- gem "rdoc"
19
- gem "rspec"
20
- gem "ruby-debug19", :require => "ruby-debug"
21
- gem "sqlite3"
22
- gem "yard"
23
- end
6
+ gemspec :name => "requires_approval"
data/Gemfile.lock CHANGED
@@ -1,40 +1,55 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ requires_approval (1.0.8)
5
+ activerecord
6
+ requires_approval
7
+
1
8
  GEM
2
9
  remote: http://rubygems.org/
3
10
  specs:
4
- activerecord (2.3.12)
5
- activesupport (= 2.3.12)
6
- activesupport (2.3.12)
7
- archive-tar-minitar (0.5.2)
8
- columnize (0.3.6)
11
+ activemodel (3.2.14)
12
+ activesupport (= 3.2.14)
13
+ builder (~> 3.0.0)
14
+ activerecord (3.2.14)
15
+ activemodel (= 3.2.14)
16
+ activesupport (= 3.2.14)
17
+ arel (~> 3.0.2)
18
+ tzinfo (~> 0.3.29)
19
+ activesupport (3.2.14)
20
+ i18n (~> 0.6, >= 0.6.4)
21
+ multi_json (~> 1.0)
22
+ arel (3.0.2)
23
+ builder (3.0.4)
9
24
  diff-lcs (1.1.3)
10
- ffi (1.1.0)
25
+ ffi (1.1.5)
11
26
  git (1.2.5)
12
- guard (1.2.3)
27
+ guard (1.3.2)
13
28
  listen (>= 0.4.2)
14
29
  thor (>= 0.14.6)
15
30
  guard-bundler (1.0.0)
16
31
  bundler (~> 1.0)
17
32
  guard (~> 1.1)
18
- guard-rspec (1.2.0)
33
+ guard-rspec (1.2.1)
19
34
  guard (>= 1.1)
20
35
  guard-spork (1.1.0)
21
36
  guard (>= 1.1)
22
37
  spork (>= 0.8.4)
38
+ i18n (0.6.5)
23
39
  jeweler (1.8.4)
24
40
  bundler (~> 1.0)
25
41
  git (>= 1.2.5)
26
42
  rake
27
43
  rdoc
28
- json (1.7.4)
29
- linecache19 (0.5.12)
30
- ruby_core_source (>= 0.1.4)
44
+ json (1.7.5)
31
45
  listen (0.4.7)
32
46
  rb-fchange (~> 0.0.5)
33
47
  rb-fsevent (~> 0.9.1)
34
48
  rb-inotify (~> 0.8.8)
35
49
  metaclass (0.0.1)
36
- mocha (0.12.1)
50
+ mocha (0.12.3)
37
51
  metaclass (~> 0.0.1)
52
+ multi_json (1.8.0)
38
53
  rake (0.9.2.2)
39
54
  rb-fchange (0.0.5)
40
55
  ffi
@@ -48,30 +63,19 @@ GEM
48
63
  rspec-expectations (~> 2.11.0)
49
64
  rspec-mocks (~> 2.11.0)
50
65
  rspec-core (2.11.1)
51
- rspec-expectations (2.11.1)
66
+ rspec-expectations (2.11.2)
52
67
  diff-lcs (~> 1.1.3)
53
- rspec-mocks (2.11.1)
54
- ruby-debug-base19 (0.11.25)
55
- columnize (>= 0.3.1)
56
- linecache19 (>= 0.5.11)
57
- ruby_core_source (>= 0.1.4)
58
- ruby-debug19 (0.11.6)
59
- columnize (>= 0.3.1)
60
- linecache19 (>= 0.5.11)
61
- ruby-debug-base19 (>= 0.11.19)
62
- ruby_core_source (0.1.5)
63
- archive-tar-minitar (>= 0.5.2)
68
+ rspec-mocks (2.11.2)
64
69
  spork (0.9.2)
65
70
  sqlite3 (1.3.6)
66
- thor (0.15.4)
71
+ thor (0.16.0)
72
+ tzinfo (0.3.37)
67
73
  yard (0.8.2.1)
68
74
 
69
75
  PLATFORMS
70
76
  ruby
71
77
 
72
78
  DEPENDENCIES
73
- activerecord (~> 2.3)
74
- activesupport (~> 2.3)
75
79
  bundler
76
80
  guard-bundler
77
81
  guard-rspec
@@ -79,7 +83,7 @@ DEPENDENCIES
79
83
  jeweler (~> 1.8.3)
80
84
  mocha
81
85
  rdoc
86
+ requires_approval!
82
87
  rspec
83
- ruby-debug19
84
88
  sqlite3
85
89
  yard
data/Rakefile CHANGED
@@ -1,5 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
+ Dir.glob('lib/tasks/*.rake').each {|r| import r}
4
+ require 'rake'
5
+
3
6
  require 'rubygems'
4
7
  require 'bundler'
5
8
  begin
@@ -9,12 +12,12 @@ rescue Bundler::BundlerError => e
9
12
  $stderr.puts "Run `bundle install` to install missing gems"
10
13
  exit e.status_code
11
14
  end
12
- require 'rake'
15
+
13
16
 
14
17
  require 'jeweler'
15
18
  Jeweler::Tasks.new do |gem|
16
19
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "requires_approval_rails_2"
20
+ gem.name = "requires_approval"
18
21
  gem.homepage = "http://github.com/LifebookerInc/requires_approval"
19
22
  gem.license = "MIT"
20
23
  gem.summary = %Q{Gem to handle versioning and things that require approval}
@@ -25,18 +28,5 @@ Jeweler::Tasks.new do |gem|
25
28
  end
26
29
  Jeweler::RubygemsDotOrgTasks.new
27
30
 
28
- require 'rspec/core'
29
- require 'rspec/core/rake_task'
30
- RSpec::Core::RakeTask.new(:spec) do |spec|
31
- spec.pattern = FileList['spec/**/*_spec.rb']
32
- end
33
-
34
- RSpec::Core::RakeTask.new(:rcov) do |spec|
35
- spec.pattern = 'spec/**/*_spec.rb'
36
- spec.rcov = true
37
- end
38
-
39
- task :default => :spec
40
-
41
31
  require 'yard'
42
32
  YARD::Rake::YardocTask.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.3
1
+ 1.0.8
@@ -4,8 +4,9 @@ require 'errors'
4
4
 
5
5
  module RequiresApproval
6
6
 
7
-
8
- def self.included(klass)
7
+ extend ActiveSupport::Concern
8
+
9
+ included do |klass|
9
10
  klass.send(:extend, ClassMethods)
10
11
  end
11
12
 
@@ -15,10 +16,10 @@ module RequiresApproval
15
16
 
16
17
  # # approve a list of attributes
17
18
  def approve_attributes(*attributes)
18
-
19
+
19
20
  return true unless self.has_pending_changes?
20
21
 
21
- # validate an normalize our attributes
22
+ # validate an normalize our attributes
22
23
  attributes = self.check_attributes_for_approval(attributes)
23
24
 
24
25
  # make sure that all attributes are provided if we have never
@@ -27,7 +28,7 @@ module RequiresApproval
27
28
 
28
29
  if fields_not_being_approved.present? && self.never_approved?
29
30
  raise PartialApprovalForNewObject.new(
30
- "You must approve #{self.fields_requiring_approval.join(", ")} " +
31
+ "You must approve #{self.fields_requiring_approval.join(", ")} " +
31
32
  "for a new #{self.class.name}"
32
33
  )
33
34
  end
@@ -36,24 +37,26 @@ module RequiresApproval
36
37
  write_attribute(attr, self.latest_unapproved_version.send(attr))
37
38
  end
38
39
 
39
- # if we have approved all requested changes, make our latest
40
- # unapproved version approved -
41
- # this is ALWAYS true for a new record even though its pending_changes
42
- # hash is forced to have values
43
- if self.is_first_version? || self.no_pending_changes?
44
- self.latest_unapproved_version.update_attribute(:is_approved, true)
40
+ if self.save
41
+ # if we have approved all requested changes, make our latest
42
+ # unapproved version approved -
43
+ # this is ALWAYS true for a new record even though its pending_changes
44
+ # hash is forced to have values
45
+ if self.is_first_version? || self.no_pending_changes?
46
+ self.latest_unapproved_version.update_attribute(:is_approved, true)
47
+ else
48
+ # makes our latest_unapproved_version approved and
49
+ # creates another unapproved version with any remaining
50
+ # attributes
51
+ self.create_approval_version_record
52
+ end
53
+
54
+ self.update_attributes(:is_frozen => false)
55
+ self.reload
56
+ return true
45
57
  else
46
- # makes our latest_unapproved_version approved and
47
- # creates another unapproved version with any remaining
48
- # attributes
49
- self.create_approval_version_record
58
+ return false
50
59
  end
51
-
52
- self.is_frozen = false
53
-
54
- self.save
55
- self.reload
56
- true
57
60
  end
58
61
 
59
62
  def deny_attributes(*attributes)
@@ -69,20 +72,33 @@ module RequiresApproval
69
72
  true
70
73
  end
71
74
 
72
- # if we have denied all changes, remove the record
75
+ # if we have denied all changes, remove the record and
76
+ # make sure it isn't frozen
73
77
  unless self.has_pending_changes?
74
78
  self.latest_unapproved_version.destroy
79
+ self.update_attribute(:is_frozen, false)
75
80
  else
76
81
  self.latest_unapproved_version.save
77
82
  end
78
-
83
+
79
84
  self.reload
80
85
  true
81
86
  end
82
87
 
88
+ def reload(*args)
89
+ if instance_variable_defined?(:@has_approved_version)
90
+ remove_instance_variable(:@has_approved_version)
91
+ end
92
+ super(*args)
93
+ end
94
+
83
95
  # have any of our versions ever been approved?
84
96
  def has_approved_version?
85
- self.versions.count(:conditions => {:is_approved => true}) > 0
97
+ unless instance_variable_defined?(:@has_approved_version)
98
+ @has_approved_version = (self.versions.where(:is_approved => true).count > 0)
99
+ end
100
+
101
+ @has_approved_version
86
102
  end
87
103
 
88
104
  # have we already approved all outstanding changes?
@@ -103,21 +119,21 @@ module RequiresApproval
103
119
  # the changes users have requested since the last approval
104
120
  def pending_changes
105
121
  return {} if self.latest_unapproved_version.blank?
106
-
122
+
107
123
  ret = {}
108
124
  # check each field requiring approval
109
125
  self.fields_requiring_approval.each do |field|
110
-
126
+
111
127
  # if it is the same in the unapproved as in the parent table
112
128
  # we skip it
113
- if self.is_first_version? ||
129
+ if self.is_first_version? ||
114
130
  self.send(field) != self.latest_unapproved_version.send(field)
115
-
131
+
116
132
  # otherwise we get the change set
117
133
  ret[field] = {
118
- # our first version is always nil, regardless of the
134
+ # our first version is always nil, regardless of the
119
135
  # defaults in that table
120
- "was" => self.is_first_version? ? nil : self.send(field),
136
+ "was" => self.is_first_version? ? nil : self.send(field),
121
137
  "became" => self.latest_unapproved_version.send(field)
122
138
  }
123
139
  end
@@ -155,7 +171,7 @@ module RequiresApproval
155
171
  self.latest_unapproved_version.update_attributes(
156
172
  self.attributes_requiring_approval.merge(:is_approved => true)
157
173
  )
158
- # reload so this unapproved version is out of our cache and will not
174
+ # reload so this unapproved version is out of our cache and will not
159
175
  # get its foreign key unassigned
160
176
  self.latest_unapproved_version(true)
161
177
 
@@ -176,7 +192,7 @@ module RequiresApproval
176
192
  !self.has_approved_version?
177
193
  end
178
194
 
179
- # ActiveRecord-style attribute hash for the
195
+ # ActiveRecord-style attribute hash for the
180
196
  # requested changes
181
197
  def pending_attributes
182
198
  ret = {}
@@ -204,7 +220,7 @@ module RequiresApproval
204
220
  # adds our versions table
205
221
  self.drop_versions_table
206
222
  self.create_versions_table
207
-
223
+
208
224
  end
209
225
 
210
226
  def requires_approval_for(*attrs)
@@ -219,13 +235,14 @@ module RequiresApproval
219
235
 
220
236
  # create a blank version before create to handle if no
221
237
  # attributes were ever set
222
- self.before_validation_on_create(
223
- :latest_unapproved_version_with_nil_check
238
+ self.before_validation(
239
+ :latest_unapproved_version_with_nil_check,
240
+ :on => :create
224
241
  )
225
-
242
+
226
243
  # create the versions class
227
244
  self.create_versions_class
228
- self.has_many :versions,
245
+ self.has_many :versions,
229
246
  :class_name => self.versions_class.name,
230
247
  :foreign_key => self.versions_foreign_key
231
248
 
@@ -236,10 +253,11 @@ module RequiresApproval
236
253
  :conditions => [
237
254
  "#{self.versions_table_name}.is_approved = ?", false
238
255
  ]
256
+ end
239
257
 
240
- self.set_up_scopes
241
-
242
-
258
+ def unapproved
259
+ includes(:latest_unapproved_version)
260
+ .where("#{self.versions_table_name}.id IS NOT NULL")
243
261
  end
244
262
 
245
263
  # the class which our versions are
@@ -268,9 +286,9 @@ module RequiresApproval
268
286
  # create a class
269
287
  def create_versions_class
270
288
  versions_table_name = self.versions_table_name
271
-
289
+
272
290
  self.const_set self.versions_class_name, Class.new(ActiveRecord::Base)
273
-
291
+
274
292
  self.versions_class.class_eval do
275
293
  self.table_name = versions_table_name
276
294
  end
@@ -309,27 +327,18 @@ module RequiresApproval
309
327
  @versions_table_name = opts.delete(:versions_table_name)
310
328
  end
311
329
 
312
- def set_up_scopes
313
- self.named_scope(:unapproved, {
314
- :include => [:latest_unapproved_version],
315
- :conditions => [
316
- "#{self.versions_table_name}.id IS NOT NULL"
317
- ]
318
- })
319
- end
320
-
321
330
  def set_up_version_delegates
322
331
  self.fields_requiring_approval.each do |f|
323
332
  define_method("#{f}=") do |val|
324
333
  # type cast our val so "0" changes to 'false'
325
334
  type_casted_val = self.column_for_attribute(f).type_cast(val)
326
-
335
+
327
336
  # if we have a latest_unapproved version already, let it handle
328
- # updates - if not, only create one if the type casted value is
337
+ # updates - if not, only create one if the type casted value is
329
338
  # not the same as what is in the parent value
330
- if self.latest_unapproved_version.present? ||
339
+ if self.latest_unapproved_version.present? ||
331
340
  type_casted_val != self.send(f)
332
-
341
+
333
342
  self.send("#{f}_will_change!")
334
343
  self.latest_unapproved_version_with_nil_check.send("#{f}=", val)
335
344
  end
@@ -337,6 +346,12 @@ module RequiresApproval
337
346
  end
338
347
  end
339
348
 
349
+ def validates_approved_field(*args)
350
+ self.versions_class.class_eval do
351
+ validates(*args)
352
+ end
353
+ end
354
+
340
355
  # class name for our versions
341
356
  def versions_class_name
342
357
  @versions_class_name ||= "Version"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "requires_approval_rails_2"
8
- s.version = "1.0.3"
8
+ s.version = "1.0.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dan Langevin"]
12
- s.date = "2012-10-12"
12
+ s.date = "2012-08-05"
13
13
  s.description = "Gem to handle versioning and things that require approval"
14
14
  s.email = "dan.langevin@lifebooker.com"
15
15
  s.extra_rdoc_files = [
@@ -235,12 +235,12 @@ describe RequiresApproval do
235
235
  user.reload
236
236
 
237
237
  user.latest_unapproved_version.should be nil
238
+
238
239
  user.update_attributes(
239
240
  :first_name => user.first_name,
240
241
  :last_name => user.last_name
241
242
  )
242
243
  user.reload
243
-
244
244
  user.latest_unapproved_version.should be nil
245
245
 
246
246
 
@@ -266,13 +266,12 @@ describe RequiresApproval do
266
266
 
267
267
  end
268
268
 
269
- context "validation" do
269
+ context ".validates_approved_field" do
270
270
 
271
271
  it "should delegate to the requires_approval field" do
272
272
  User.class_eval do
273
- self.versions_class.class_eval do
274
- validates_presence_of :first_name
275
- end
273
+ validates_approved_field :first_name,
274
+ :presence => true
276
275
  end
277
276
 
278
277
  user = User.new
@@ -333,8 +332,7 @@ describe RequiresApproval do
333
332
  })
334
333
 
335
334
  # should create an approved version
336
- count = user.versions.count(:conditions => {:is_approved => true})
337
- count.should be > 0
335
+ user.versions.where(:is_approved => true).count.should be > 0
338
336
 
339
337
  end
340
338
 
@@ -387,6 +385,19 @@ describe RequiresApproval do
387
385
 
388
386
  end
389
387
 
388
+ it "should not approve the latest unapproved version if it is invalid" do
389
+
390
+ user = User.new(
391
+ :first_name => "Dan",
392
+ :last_name => "Langevin",
393
+ :birthday => Date.today
394
+ )
395
+
396
+ user.stubs(:save => false)
397
+ user.approve_all_attributes.should eql false
398
+
399
+ end
400
+
390
401
  end
391
402
 
392
403
  context "#deny_attributes" do
@@ -464,6 +475,23 @@ describe RequiresApproval do
464
475
  )
465
476
  end
466
477
 
478
+ it "should set is_frozen to false when denying all attributes" do
479
+
480
+ u = User.create(
481
+ :first_name => "Dan",
482
+ :last_name => "Langevin",
483
+ :birthday => Date.today
484
+ )
485
+ u.approve_all_attributes
486
+
487
+ u.update_attributes(:first_name => "Changed!", :is_frozen => true)
488
+ u.is_frozen?.should eql(true)
489
+
490
+ u.deny_attributes(:first_name)
491
+ u.is_frozen?.should eql(false)
492
+
493
+ end
494
+
467
495
  end
468
496
 
469
497
  context "#has_approved_version?" do
data/spec/spec_helper.rb CHANGED
@@ -13,9 +13,6 @@ Spork.prefork do
13
13
  require 'rspec'
14
14
  require 'requires_approval'
15
15
 
16
- require 'ruby-debug'
17
- Debugger.start
18
-
19
16
  # Requires supporting files with custom matchers and macros, etc,
20
17
  # in ./support/ and its subdirectories.
21
18
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
metadata CHANGED
@@ -1,159 +1,197 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: requires_approval_rails_2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
5
- prerelease:
4
+ version: 1.0.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Langevin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-10-12 00:00:00.000000000 Z
11
+ date: 2012-08-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
- requirement: &2154973160 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
19
  version: '2.3'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *2154973160
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: activesupport
27
- requirement: &2154972680 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ~>
31
32
  - !ruby/object:Gem::Version
32
33
  version: '2.3'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *2154972680
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '2.3'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: bundler
38
- requirement: &2154972200 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *2154972200
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: guard-rspec
49
- requirement: &2154971720 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *2154971720
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: guard-bundler
60
- requirement: &2154971240 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - '>='
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *2154971240
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: guard-spork
71
- requirement: &2154970760 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
- - - ! '>='
87
+ - - '>='
75
88
  - !ruby/object:Gem::Version
76
89
  version: '0'
77
90
  type: :development
78
91
  prerelease: false
79
- version_requirements: *2154970760
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
80
97
  - !ruby/object:Gem::Dependency
81
98
  name: jeweler
82
- requirement: &2154970280 !ruby/object:Gem::Requirement
83
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
84
100
  requirements:
85
101
  - - ~>
86
102
  - !ruby/object:Gem::Version
87
103
  version: 1.8.3
88
104
  type: :development
89
105
  prerelease: false
90
- version_requirements: *2154970280
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.8.3
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: mocha
93
- requirement: &2154986160 !ruby/object:Gem::Requirement
94
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
95
114
  requirements:
96
- - - ! '>='
115
+ - - '>='
97
116
  - !ruby/object:Gem::Version
98
117
  version: '0'
99
118
  type: :development
100
119
  prerelease: false
101
- version_requirements: *2154986160
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
102
125
  - !ruby/object:Gem::Dependency
103
126
  name: rdoc
104
- requirement: &2154985680 !ruby/object:Gem::Requirement
105
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
106
128
  requirements:
107
- - - ! '>='
129
+ - - '>='
108
130
  - !ruby/object:Gem::Version
109
131
  version: '0'
110
132
  type: :development
111
133
  prerelease: false
112
- version_requirements: *2154985680
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
113
139
  - !ruby/object:Gem::Dependency
114
140
  name: rspec
115
- requirement: &2154985200 !ruby/object:Gem::Requirement
116
- none: false
141
+ requirement: !ruby/object:Gem::Requirement
117
142
  requirements:
118
- - - ! '>='
143
+ - - '>='
119
144
  - !ruby/object:Gem::Version
120
145
  version: '0'
121
146
  type: :development
122
147
  prerelease: false
123
- version_requirements: *2154985200
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
124
153
  - !ruby/object:Gem::Dependency
125
154
  name: ruby-debug19
126
- requirement: &2154984720 !ruby/object:Gem::Requirement
127
- none: false
155
+ requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
- - - ! '>='
157
+ - - '>='
130
158
  - !ruby/object:Gem::Version
131
159
  version: '0'
132
160
  type: :development
133
161
  prerelease: false
134
- version_requirements: *2154984720
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
135
167
  - !ruby/object:Gem::Dependency
136
168
  name: sqlite3
137
- requirement: &2154984240 !ruby/object:Gem::Requirement
138
- none: false
169
+ requirement: !ruby/object:Gem::Requirement
139
170
  requirements:
140
- - - ! '>='
171
+ - - '>='
141
172
  - !ruby/object:Gem::Version
142
173
  version: '0'
143
174
  type: :development
144
175
  prerelease: false
145
- version_requirements: *2154984240
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
146
181
  - !ruby/object:Gem::Dependency
147
182
  name: yard
148
- requirement: &2154983760 !ruby/object:Gem::Requirement
149
- none: false
183
+ requirement: !ruby/object:Gem::Requirement
150
184
  requirements:
151
- - - ! '>='
185
+ - - '>='
152
186
  - !ruby/object:Gem::Version
153
187
  version: '0'
154
188
  type: :development
155
189
  prerelease: false
156
- version_requirements: *2154983760
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
157
195
  description: Gem to handle versioning and things that require approval
158
196
  email: dan.langevin@lifebooker.com
159
197
  executables: []
@@ -180,27 +218,25 @@ files:
180
218
  homepage: http://github.com/LifebookerInc/requires_approval
181
219
  licenses:
182
220
  - MIT
221
+ metadata: {}
183
222
  post_install_message:
184
223
  rdoc_options: []
185
224
  require_paths:
186
225
  - lib
187
226
  required_ruby_version: !ruby/object:Gem::Requirement
188
- none: false
189
227
  requirements:
190
- - - ! '>='
228
+ - - '>='
191
229
  - !ruby/object:Gem::Version
192
230
  version: '0'
193
231
  required_rubygems_version: !ruby/object:Gem::Requirement
194
- none: false
195
232
  requirements:
196
- - - ! '>='
233
+ - - '>='
197
234
  - !ruby/object:Gem::Version
198
235
  version: '0'
199
236
  requirements: []
200
237
  rubyforge_project:
201
- rubygems_version: 1.8.11
238
+ rubygems_version: 2.0.3
202
239
  signing_key:
203
240
  specification_version: 3
204
241
  summary: Gem to handle versioning and things that require approval
205
242
  test_files: []
206
- has_rdoc: