safe_attributes 1.0.6 → 1.0.7

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.
data/NEWS.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ = Version 1.0.6
2
+
3
+ * Updated gemspec after verifying gem works with ActiveRecord 3.1.
4
+
1
5
  = Version 1.0.5
2
6
 
3
7
  * Resolved issues with columns named 'changed' and 'errors'
@@ -54,7 +54,7 @@ attempt to install it for you. This can result in an error like below.
54
54
  ERROR: Error installing safe_attributes:
55
55
  activemodel requires activesupport (= 3.0.3, runtime)
56
56
 
57
- You can use this gem with activerecord and activesupport >= 3.0 and < 3.1.
57
+ You can use this gem with activerecord and activesupport >= 3.0.
58
58
  If you already have an appropriate version of activerecord and
59
59
  activesupport installed then use --ignore-dependencies to avoid this
60
60
  error. If you have the latest version already then the gem should install
@@ -64,11 +64,15 @@ without issue using the recommended approach above.
64
64
 
65
65
  === Ruby
66
66
 
67
- This gem has been tested to work with:
67
+ This gem has been tested with:
68
68
 
69
69
  * Ruby 1.8.7
70
70
  * Ruby 1.9.2
71
- * JRuby 1.5.6
71
+ * JRuby 1.6.4
72
+
73
+ Note that as of Sept. 25, 2011, jruby 1.6.4 failed some tests when using
74
+ ActiveRecord 3.1. Google indicates others have seen these issues so I
75
+ expect it will be addressed in the near future by a new jruby release.
72
76
 
73
77
  === Rails
74
78
  Add safe_attributes to your Gemfile.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.6
1
+ 1.0.7
@@ -54,7 +54,11 @@ module SafeAttributes
54
54
 
55
55
  module InstanceMethods
56
56
  def read_attribute_for_validation(attr)
57
- self[attr.to_sym]
57
+ if (self.attributes.include?(attr.to_s))
58
+ self[attr.to_sym]
59
+ else
60
+ self.send(attr.to_s) if (self.respond_to?(attr.to_sym))
61
+ end
58
62
  end
59
63
  end
60
64
 
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{safe_attributes}
8
- s.version = "1.0.6"
7
+ s.name = "safe_attributes"
8
+ s.version = "1.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Jones"]
12
- s.date = %q{2011-09-25}
13
- s.description = %q{Better support for legacy database schemas for ActiveRecord, such as columns named class, or any other name that conflicts with an instance method of ActiveRecord.}
14
- s.email = %q{cbj@gnu.org}
12
+ s.date = "2011-11-18"
13
+ s.description = "Better support for legacy database schemas for ActiveRecord, such as columns named class, or any other name that conflicts with an instance method of ActiveRecord."
14
+ s.email = "cbj@gnu.org"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.rdoc"
@@ -31,11 +31,11 @@ Gem::Specification.new do |s|
31
31
  "spec/safe_attributes/safe_attributes_spec.rb",
32
32
  "spec/spec_helper.rb"
33
33
  ]
34
- s.homepage = %q{http://github.com/bjones/safe_attributes}
34
+ s.homepage = "http://github.com/bjones/safe_attributes"
35
35
  s.licenses = ["MIT"]
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.5.1}
38
- s.summary = %q{Useful for legacy database support, adds support for reserved word column names with ActiveRecord}
37
+ s.rubygems_version = "1.8.11"
38
+ s.summary = "Useful for legacy database support, adds support for reserved word column names with ActiveRecord"
39
39
 
40
40
  if s.respond_to? :specification_version then
41
41
  s.specification_version = 3
@@ -12,6 +12,7 @@ ActiveRecord::Base.connection.create_table(:my_models) do |t|
12
12
  t.string :errors
13
13
  # support hyphenated column names
14
14
  t.string :"comment-frequency"
15
+ t.string :attribute
15
16
  end
16
17
 
17
18
  class MyModel < ActiveRecord::Base
@@ -20,7 +21,23 @@ class MyModel < ActiveRecord::Base
20
21
  validates_presence_of :class
21
22
  end
22
23
 
23
- describe MyModel do
24
+ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'my_users'")
25
+ ActiveRecord::Base.connection.create_table(:my_users) do |t|
26
+ t.string :encrypted_password
27
+ end
28
+
29
+ class MyUser < ActiveRecord::Base
30
+ include SafeAttributes
31
+ attr_reader :password
32
+ def password=(p)
33
+ @password = p
34
+ self.encrypted_password = p
35
+ end
36
+
37
+ validates_presence_of :password
38
+ end
39
+
40
+ describe "models" do
24
41
 
25
42
  before(:each) do
26
43
  ActiveRecord::Base.connection.increment_open_transactions
@@ -75,6 +92,16 @@ describe MyModel do
75
92
  (@model.methods.include?('id') || @model.methods.include?(:id)).should be_true
76
93
  end
77
94
 
95
+ it "does not defined attribute()" do
96
+ @model.respond_to?(:attribute) # to force method generation
97
+ (@model.methods.include?('attribute') || @model.methods.include?(:attribute)).should be_false
98
+ end
99
+
100
+ it "does not defined attribute=()" do
101
+ @model.respond_to?(:attribute=) # to force method generation
102
+ (@model.methods.include?('attribute=') || @model.methods.include?(:attribute=)).should be_false
103
+ end
104
+
78
105
  it "can create instance in database with special attribute name" do
79
106
  m = MyModel.create!(:class => 'Foo')
80
107
  m = MyModel.find(m.id)
@@ -114,7 +141,7 @@ describe MyModel do
114
141
  m.size.should == 0
115
142
  end
116
143
 
117
- it "validates presence of class" do
144
+ it "validates presence of bad attribute name" do
118
145
  @model.valid?.should be_false
119
146
  Array(@model.errors[:class]).include?("can't be blank").should be_true
120
147
 
@@ -132,5 +159,12 @@ describe MyModel do
132
159
  m.changed?.should be_true
133
160
  end
134
161
 
162
+ it "validates presence of non-attribute" do
163
+ m = MyUser.new()
164
+ m.valid?.should be_false
165
+ m = MyUser.new({:password => 'foobar'})
166
+ m.valid?.should be_true
167
+ end
168
+
135
169
  end
136
170
 
metadata CHANGED
@@ -1,181 +1,176 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: safe_attributes
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.7
4
5
  prerelease:
5
- version: 1.0.6
6
6
  platform: ruby
7
- authors:
8
- - Brian Jones
7
+ authors:
8
+ - Brian Jones
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-25 00:00:00 -04:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: activesupport
18
- version_requirements: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 3.0.0
24
- requirement: *id001
25
- prerelease: false
26
- type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: activerecord
29
- version_requirements: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: 3.0.0
35
- requirement: *id002
36
- prerelease: false
37
- type: :runtime
38
- - !ruby/object:Gem::Dependency
39
- name: jeweler
40
- version_requirements: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: 1.5.2
46
- requirement: *id003
47
- prerelease: false
48
- type: :development
49
- - !ruby/object:Gem::Dependency
50
- name: rake
51
- version_requirements: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 0.8.7
57
- requirement: *id004
58
- prerelease: false
59
- type: :development
60
- - !ruby/object:Gem::Dependency
61
- name: rdoc
62
- version_requirements: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- requirement: *id005
69
- prerelease: false
70
- type: :development
71
- - !ruby/object:Gem::Dependency
72
- name: rspec
73
- version_requirements: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 2.3.0
79
- requirement: *id006
80
- prerelease: false
81
- type: :development
82
- - !ruby/object:Gem::Dependency
83
- name: rcov
84
- version_requirements: &id007 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
90
- requirement: *id007
91
- prerelease: false
92
- type: :development
93
- - !ruby/object:Gem::Dependency
94
- name: sqlite3
95
- version_requirements: &id008 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: 1.3.4
101
- requirement: *id008
102
- prerelease: false
103
- type: :development
104
- - !ruby/object:Gem::Dependency
105
- name: activerecord-jdbcsqlite3-adapter
106
- version_requirements: &id009 !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: "0"
112
- requirement: *id009
113
- prerelease: false
114
- type: :development
115
- - !ruby/object:Gem::Dependency
116
- name: jruby-openssl
117
- version_requirements: &id010 !ruby/object:Gem::Requirement
118
- none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: "0"
123
- requirement: *id010
124
- prerelease: false
125
- type: :development
126
- description: Better support for legacy database schemas for ActiveRecord, such as columns named class, or any other name that conflicts with an instance method of ActiveRecord.
12
+ date: 2011-11-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: &70339699350360 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70339699350360
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ requirement: &70339699349880 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70339699349880
36
+ - !ruby/object:Gem::Dependency
37
+ name: jeweler
38
+ requirement: &70339699349380 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 1.5.2
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70339699349380
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &70339699348900 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.7
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70339699348900
58
+ - !ruby/object:Gem::Dependency
59
+ name: rdoc
60
+ requirement: &70339699364800 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70339699364800
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &70339699364320 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 2.3.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70339699364320
80
+ - !ruby/object:Gem::Dependency
81
+ name: rcov
82
+ requirement: &70339699363840 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70339699363840
91
+ - !ruby/object:Gem::Dependency
92
+ name: sqlite3
93
+ requirement: &70339699363360 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: 1.3.4
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70339699363360
102
+ - !ruby/object:Gem::Dependency
103
+ name: activerecord-jdbcsqlite3-adapter
104
+ requirement: &70339699362880 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70339699362880
113
+ - !ruby/object:Gem::Dependency
114
+ name: jruby-openssl
115
+ requirement: &70339699362360 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *70339699362360
124
+ description: Better support for legacy database schemas for ActiveRecord, such as
125
+ columns named class, or any other name that conflicts with an instance method of
126
+ ActiveRecord.
127
127
  email: cbj@gnu.org
128
128
  executables: []
129
-
130
129
  extensions: []
131
-
132
- extra_rdoc_files:
133
- - LICENSE
134
- - README.rdoc
135
- files:
136
- - .document
137
- - .rspec
138
- - Gemfile
139
- - LICENSE
140
- - NEWS.rdoc
141
- - README.rdoc
142
- - Rakefile
143
- - VERSION
144
- - lib/safe_attributes.rb
145
- - lib/safe_attributes/railtie.rb
146
- - safe_attributes.gemspec
147
- - spec/safe_attributes/safe_attributes_spec.rb
148
- - spec/spec_helper.rb
149
- has_rdoc: true
130
+ extra_rdoc_files:
131
+ - LICENSE
132
+ - README.rdoc
133
+ files:
134
+ - .document
135
+ - .rspec
136
+ - Gemfile
137
+ - LICENSE
138
+ - NEWS.rdoc
139
+ - README.rdoc
140
+ - Rakefile
141
+ - VERSION
142
+ - lib/safe_attributes.rb
143
+ - lib/safe_attributes/railtie.rb
144
+ - safe_attributes.gemspec
145
+ - spec/safe_attributes/safe_attributes_spec.rb
146
+ - spec/spec_helper.rb
150
147
  homepage: http://github.com/bjones/safe_attributes
151
- licenses:
152
- - MIT
148
+ licenses:
149
+ - MIT
153
150
  post_install_message:
154
151
  rdoc_options: []
155
-
156
- require_paths:
157
- - lib
158
- required_ruby_version: !ruby/object:Gem::Requirement
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
159
155
  none: false
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- hash: 2
164
- segments:
165
- - 0
166
- version: "0"
167
- required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ segments:
161
+ - 0
162
+ hash: -2431963502241220399
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
164
  none: false
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: "0"
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
173
169
  requirements: []
174
-
175
170
  rubyforge_project:
176
- rubygems_version: 1.5.1
171
+ rubygems_version: 1.8.11
177
172
  signing_key:
178
173
  specification_version: 3
179
- summary: Useful for legacy database support, adds support for reserved word column names with ActiveRecord
174
+ summary: Useful for legacy database support, adds support for reserved word column
175
+ names with ActiveRecord
180
176
  test_files: []
181
-