crypt_keeper 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/crypt_keeper.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_runtime_dependency 'activerecord', '>= 3.0'
19
19
  gem.add_runtime_dependency 'activesupport', '>= 3.0'
20
- gem.add_runtime_dependency 'appraisal', '~> 0.4.1'
20
+ gem.add_runtime_dependency 'appraisal', '~> 0.5.1'
21
21
 
22
22
  gem.add_development_dependency 'rspec', '~> 2.11.0'
23
23
  gem.add_development_dependency 'guard', '~> 1.3.0'
@@ -1,10 +1,10 @@
1
1
  PATH
2
- remote: /home/justin/work/ruby/crypt_keeper
2
+ remote: /Users/justin/work/Personal/crypt_keeper
3
3
  specs:
4
- crypt_keeper (0.5.0)
4
+ crypt_keeper (0.6.1)
5
5
  activerecord (>= 3.0)
6
6
  activesupport (>= 3.0)
7
- appraisal (~> 0.4.1)
7
+ appraisal (~> 0.5.1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -20,7 +20,7 @@ GEM
20
20
  activesupport (3.2.7)
21
21
  i18n (~> 0.6)
22
22
  multi_json (~> 1.0)
23
- appraisal (0.4.1)
23
+ appraisal (0.5.1)
24
24
  bundler
25
25
  rake
26
26
  arel (3.0.2)
@@ -1,10 +1,10 @@
1
1
  PATH
2
- remote: /home/justin/work/ruby/crypt_keeper
2
+ remote: /Users/justin/work/Personal/crypt_keeper
3
3
  specs:
4
- crypt_keeper (0.5.0)
4
+ crypt_keeper (0.6.1)
5
5
  activerecord (>= 3.0)
6
6
  activesupport (>= 3.0)
7
- appraisal (~> 0.4.1)
7
+ appraisal (~> 0.5.1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -20,7 +20,7 @@ GEM
20
20
  activesupport (3.2.7)
21
21
  i18n (~> 0.6)
22
22
  multi_json (~> 1.0)
23
- appraisal (0.4.1)
23
+ appraisal (0.5.1)
24
24
  bundler
25
25
  rake
26
26
  arel (3.0.2)
@@ -1,10 +1,10 @@
1
1
  PATH
2
- remote: /home/justin/work/ruby/crypt_keeper
2
+ remote: /Users/justin/work/Personal/crypt_keeper
3
3
  specs:
4
- crypt_keeper (0.5.0)
4
+ crypt_keeper (0.6.1)
5
5
  activerecord (>= 3.0)
6
6
  activesupport (>= 3.0)
7
- appraisal (~> 0.4.1)
7
+ appraisal (~> 0.5.1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -20,7 +20,7 @@ GEM
20
20
  activesupport (3.2.7)
21
21
  i18n (~> 0.6)
22
22
  multi_json (~> 1.0)
23
- appraisal (0.4.1)
23
+ appraisal (0.5.1)
24
24
  bundler
25
25
  rake
26
26
  arel (3.0.2)
@@ -5,6 +5,16 @@ module CryptKeeper
5
5
  module Model
6
6
  extend ActiveSupport::Concern
7
7
 
8
+ # Public: Ensures that each field exist and is of type text. This prevents
9
+ # encrypted data from being truncated.
10
+ def ensure_valid_field!(field)
11
+ if self.class.columns_hash["#{field}"].nil?
12
+ raise ArgumentError, "Column :#{field} does not exist"
13
+ elsif self.class.columns_hash["#{field}"].type != :text
14
+ raise ArgumentError, "Column :#{field} must be of type 'text' to be used for encryption"
15
+ end
16
+ end
17
+
8
18
  private
9
19
 
10
20
  # Private: Encrypt each crypt_keeper_fields
@@ -25,6 +35,13 @@ module CryptKeeper
25
35
  end
26
36
  end
27
37
 
38
+ # Private: Run each crypt_keeper_fields through ensure_valid_field!
39
+ def enforce_column_types_callback
40
+ crypt_keeper_fields.each do |field|
41
+ ensure_valid_field! field
42
+ end
43
+ end
44
+
28
45
  module ClassMethods
29
46
  # Public: Setup fields for encryption
30
47
  #
@@ -86,20 +103,7 @@ module CryptKeeper
86
103
  after_save :decrypt_callback
87
104
  after_find :decrypt_callback
88
105
  before_save :encrypt_callback
89
-
90
- crypt_keeper_fields.each do |field|
91
- ensure_valid_field! field
92
- end
93
- end
94
-
95
- # Private: Ensures that each field exist and is of type text. This prevents
96
- # encrypted data from being truncated.
97
- def ensure_valid_field!(field)
98
- if columns_hash["#{field}"].nil?
99
- raise ArgumentError, "Column :#{field} does not exist"
100
- elsif columns_hash["#{field}"].type != :text
101
- raise ArgumentError, "Column :#{field} must be of type 'text' to be used for encryption"
102
- end
106
+ before_save :enforce_column_types_callback
103
107
  end
104
108
  end
105
109
  end
@@ -1,3 +1,3 @@
1
1
  module CryptKeeper
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
data/spec/model_spec.rb CHANGED
@@ -20,12 +20,14 @@ module CryptKeeper
20
20
 
21
21
  it "should raise an exception with missing field" do
22
22
  msg = "Column :none does not exist"
23
- expect { subject.crypt_keeper :none, encryptor: :fake_encryptor }.to raise_error(ArgumentError, msg)
23
+ subject.crypt_keeper :none, encryptor: :fake_encryptor
24
+ expect { subject.new.save }.to raise_error(ArgumentError, msg)
24
25
  end
25
26
 
26
27
  it "should raise an exception with wrong field type" do
27
28
  msg = "Column :name must be of type 'text' to be used for encryption"
28
- expect { subject.crypt_keeper :name, encryptor: :fake_encryptor }.to raise_error(ArgumentError, msg)
29
+ subject.crypt_keeper :name, encryptor: :fake_encryptor
30
+ expect { subject.new.save }.to raise_error(ArgumentError, msg)
29
31
  end
30
32
  end
31
33
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crypt_keeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 0.4.1
53
+ version: 0.5.1
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 0.4.1
61
+ version: 0.5.1
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: rspec
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -227,7 +227,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
227
  version: '0'
228
228
  segments:
229
229
  - 0
230
- hash: 722237911978539307
230
+ hash: 1508799386363054050
231
231
  required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  none: false
233
233
  requirements:
@@ -236,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
236
  version: '0'
237
237
  segments:
238
238
  - 0
239
- hash: 722237911978539307
239
+ hash: 1508799386363054050
240
240
  requirements: []
241
241
  rubyforge_project:
242
242
  rubygems_version: 1.8.23