whiny-mass-assignment 0.1.1 → 0.1.3
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/Gemfile +0 -1
- data/Manifest +2 -0
- data/README.md +14 -8
- data/Rakefile +2 -2
- data/lib/whiny-mass-assignment/color_escapes.rb +22 -0
- data/lib/whiny-mass-assignment/configuration.rb +0 -1
- data/lib/whiny-mass-assignment/sanitizer.rb +4 -2
- data/lib/whiny-mass-assignment.rb +6 -0
- data/spec/config_spec.rb +10 -0
- data/spec/sanitizer_spec.rb +1 -0
- data/whiny-mass-assignment.gemspec +5 -9
- metadata +24 -50
data/Gemfile
CHANGED
data/Manifest
CHANGED
@@ -5,6 +5,7 @@ Manifest
|
|
5
5
|
README.md
|
6
6
|
Rakefile
|
7
7
|
lib/whiny-mass-assignment.rb
|
8
|
+
lib/whiny-mass-assignment/color_escapes.rb
|
8
9
|
lib/whiny-mass-assignment/configuration.rb
|
9
10
|
lib/whiny-mass-assignment/sanitizer.rb
|
10
11
|
lib/whiny_mass_assignment.rb
|
@@ -13,3 +14,4 @@ spec/config_spec.rb
|
|
13
14
|
spec/sanitizer_spec.rb
|
14
15
|
spec/spec_helper.rb
|
15
16
|
tasks/spec.rake
|
17
|
+
whiny-mass-assignment.gemspec
|
data/README.md
CHANGED
@@ -7,16 +7,22 @@ not a warning and should be treated as such. During development rails should rai
|
|
7
7
|
it's obvious you're doing something you shouldn't. In production it is a security violation and should be
|
8
8
|
available in an audit log.
|
9
9
|
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
gem "whiny-mass-assignment"
|
13
|
+
|
14
|
+
or as a plugin
|
15
|
+
|
16
|
+
rails plugin install git://github.com/appsinyourpants/whiny-mass-assignment.git
|
10
17
|
|
11
18
|
## Usage
|
12
19
|
|
13
|
-
To enable whiny mass assignment errors simply
|
14
|
-
|
20
|
+
To enable whiny mass assignment errors simply add the gem to your project. Once enabled, attempts to use
|
21
|
+
mass assignment on protected attributes will result in an exception.
|
15
22
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
If you want to suppress the exceptions and only use the highlighted logging, add an initializer to the
|
24
|
+
project and set set `mode` to `:log`
|
25
|
+
|
26
|
+
# config/initializers/whiny-mass-assignment.rb
|
20
27
|
|
21
|
-
|
22
|
-
add a generic error message to the model validation errors in addition to the default log.
|
28
|
+
WhinyMassAssignment::Config.mode = :log
|
data/Rakefile
CHANGED
@@ -2,13 +2,13 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new( 'whiny-mass-assignment', '0.1.
|
5
|
+
Echoe.new( 'whiny-mass-assignment', '0.1.3', ) do |p|
|
6
6
|
p.description = "Complain loudly when protected attributes are set through mass assignment."
|
7
7
|
p.url = "https://github.com/appsinyourpants/whiny-mass-assignment"
|
8
8
|
p.author = "Paul Alexander"
|
9
9
|
p.email = "paul@appsinyourpants.com"
|
10
10
|
p.ignore_pattern = [ "tmp/*" ]
|
11
|
-
p.development_dependencies = ["rspec"]
|
11
|
+
# p.development_dependencies = ["rspec"]
|
12
12
|
end
|
13
13
|
|
14
14
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
COLOR_ESCAPES = {
|
2
|
+
:none => 0,
|
3
|
+
:bright => 1,
|
4
|
+
:black => 30,
|
5
|
+
:red => 31,
|
6
|
+
:green => 32,
|
7
|
+
:yellow => 33,
|
8
|
+
:blue => 34,
|
9
|
+
:magenta => 35,
|
10
|
+
:cyan => 36,
|
11
|
+
:white => 37,
|
12
|
+
:default => 39,
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
def c( clr, text = nil )
|
17
|
+
"\x1B[" + ( COLOR_ESCAPES[ clr ] || 0 ).to_s + 'm' + ( text ? text + "\x1B[0m" : "" )
|
18
|
+
end
|
19
|
+
|
20
|
+
def bc( clr, text = nil )
|
21
|
+
"\x1B[" + ( ( COLOR_ESCAPES[ clr ] || 0 ) + 10 ).to_s + 'm' + ( text ? text + "\x1B[0m" : "" )
|
22
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'whiny-mass-assignment/color_escapes'
|
2
|
+
|
1
3
|
module WhinyMassAssignment
|
2
4
|
module Sanitizer
|
3
5
|
|
@@ -6,8 +8,8 @@ module WhinyMassAssignment
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def warn!(attrs)
|
9
|
-
|
10
|
-
whine!
|
11
|
+
self.logger.debug "#{bc :yellow}Can't mass-assign protected attributes: #{attrs.join(', ')}#{bc :default}" if self.logger
|
12
|
+
whine!(attrs) if WhinyMassAssignment::Config.mode == :raise
|
11
13
|
end
|
12
14
|
|
13
15
|
end
|
@@ -6,6 +6,12 @@ module WhinyMassAssignment
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.mode=(value)
|
9
|
+
value = case value when true then :raise
|
10
|
+
when false then :log
|
11
|
+
else value
|
12
|
+
end
|
13
|
+
raise ArgumentError.new("invalid configuration value") unless %w{ log raise invalidate }.index(value.to_s)
|
14
|
+
|
9
15
|
@mode = value
|
10
16
|
end
|
11
17
|
|
data/spec/config_spec.rb
CHANGED
@@ -28,6 +28,16 @@ describe WhinyMassAssignment::Config do
|
|
28
28
|
lambda{ Whiny::Application.whiny_mass_assignment = :none }.should raise_error
|
29
29
|
end
|
30
30
|
|
31
|
+
it "should coerce false to :log" do
|
32
|
+
lambda{ Whiny::Application.whiny_mass_assignment = false }.should_not raise_error
|
33
|
+
Whiny::Application.whiny_mass_assignment.should be :log
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should coerce true to :raise" do
|
37
|
+
lambda{ Whiny::Application.whiny_mass_assignment = true }.should_not raise_error
|
38
|
+
Whiny::Application.whiny_mass_assignment.should be :raise
|
39
|
+
end
|
40
|
+
|
31
41
|
end
|
32
42
|
|
33
43
|
end
|
data/spec/sanitizer_spec.rb
CHANGED
@@ -2,32 +2,28 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{whiny-mass-assignment}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Paul Alexander"]
|
9
|
-
s.date = %q{2011-02-
|
9
|
+
s.date = %q{2011-02-23}
|
10
10
|
s.description = %q{Complain loudly when protected attributes are set through mass assignment.}
|
11
11
|
s.email = %q{paul@appsinyourpants.com}
|
12
|
-
s.extra_rdoc_files = ["LICENSE", "README.md", "lib/whiny-mass-assignment.rb", "lib/whiny-mass-assignment/configuration.rb", "lib/whiny-mass-assignment/sanitizer.rb", "lib/whiny_mass_assignment.rb", "tasks/spec.rake"]
|
13
|
-
s.files = ["Gemfile", "Gemfile.lock", "LICENSE", "Manifest", "README.md", "Rakefile", "lib/whiny-mass-assignment.rb", "lib/whiny-mass-assignment/configuration.rb", "lib/whiny-mass-assignment/sanitizer.rb", "lib/whiny_mass_assignment.rb", "rails/init.rb", "spec/config_spec.rb", "spec/sanitizer_spec.rb", "spec/spec_helper.rb", "tasks/spec.rake", "whiny-mass-assignment.gemspec"]
|
12
|
+
s.extra_rdoc_files = ["LICENSE", "README.md", "lib/whiny-mass-assignment.rb", "lib/whiny-mass-assignment/color_escapes.rb", "lib/whiny-mass-assignment/configuration.rb", "lib/whiny-mass-assignment/sanitizer.rb", "lib/whiny_mass_assignment.rb", "tasks/spec.rake"]
|
13
|
+
s.files = ["Gemfile", "Gemfile.lock", "LICENSE", "Manifest", "README.md", "Rakefile", "lib/whiny-mass-assignment.rb", "lib/whiny-mass-assignment/color_escapes.rb", "lib/whiny-mass-assignment/configuration.rb", "lib/whiny-mass-assignment/sanitizer.rb", "lib/whiny_mass_assignment.rb", "rails/init.rb", "spec/config_spec.rb", "spec/sanitizer_spec.rb", "spec/spec_helper.rb", "tasks/spec.rake", "whiny-mass-assignment.gemspec"]
|
14
14
|
s.homepage = %q{https://github.com/appsinyourpants/whiny-mass-assignment}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Whiny-mass-assignment", "--main", "README.md"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = %q{whiny-mass-assignment}
|
18
|
-
s.rubygems_version = %q{1.
|
18
|
+
s.rubygems_version = %q{1.5.2}
|
19
19
|
s.summary = %q{Complain loudly when protected attributes are set through mass assignment.}
|
20
20
|
|
21
21
|
if s.respond_to? :specification_version then
|
22
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
22
|
s.specification_version = 3
|
24
23
|
|
25
24
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
-
s.add_development_dependency(%q<rspec>, [">= 0"])
|
27
25
|
else
|
28
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
29
26
|
end
|
30
27
|
else
|
31
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
32
28
|
end
|
33
29
|
end
|
metadata
CHANGED
@@ -1,50 +1,31 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: whiny-mass-assignment
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
version: 0.1.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Paul Alexander
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
date: 2011-02-22 00:00:00 -08:00
|
12
|
+
date: 2011-02-23 00:00:00.000000000 -08:00
|
18
13
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
name: rspec
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
version: "0"
|
31
|
-
type: :development
|
32
|
-
version_requirements: *id001
|
14
|
+
dependencies: []
|
33
15
|
description: Complain loudly when protected attributes are set through mass assignment.
|
34
16
|
email: paul@appsinyourpants.com
|
35
17
|
executables: []
|
36
|
-
|
37
18
|
extensions: []
|
38
|
-
|
39
|
-
extra_rdoc_files:
|
19
|
+
extra_rdoc_files:
|
40
20
|
- LICENSE
|
41
21
|
- README.md
|
42
22
|
- lib/whiny-mass-assignment.rb
|
23
|
+
- lib/whiny-mass-assignment/color_escapes.rb
|
43
24
|
- lib/whiny-mass-assignment/configuration.rb
|
44
25
|
- lib/whiny-mass-assignment/sanitizer.rb
|
45
26
|
- lib/whiny_mass_assignment.rb
|
46
27
|
- tasks/spec.rake
|
47
|
-
files:
|
28
|
+
files:
|
48
29
|
- Gemfile
|
49
30
|
- Gemfile.lock
|
50
31
|
- LICENSE
|
@@ -52,6 +33,7 @@ files:
|
|
52
33
|
- README.md
|
53
34
|
- Rakefile
|
54
35
|
- lib/whiny-mass-assignment.rb
|
36
|
+
- lib/whiny-mass-assignment/color_escapes.rb
|
55
37
|
- lib/whiny-mass-assignment/configuration.rb
|
56
38
|
- lib/whiny-mass-assignment/sanitizer.rb
|
57
39
|
- lib/whiny_mass_assignment.rb
|
@@ -64,40 +46,32 @@ files:
|
|
64
46
|
has_rdoc: true
|
65
47
|
homepage: https://github.com/appsinyourpants/whiny-mass-assignment
|
66
48
|
licenses: []
|
67
|
-
|
68
49
|
post_install_message:
|
69
|
-
rdoc_options:
|
50
|
+
rdoc_options:
|
70
51
|
- --line-numbers
|
71
52
|
- --inline-source
|
72
53
|
- --title
|
73
54
|
- Whiny-mass-assignment
|
74
55
|
- --main
|
75
56
|
- README.md
|
76
|
-
require_paths:
|
57
|
+
require_paths:
|
77
58
|
- lib
|
78
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
60
|
none: false
|
80
|
-
requirements:
|
81
|
-
- -
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
|
85
|
-
version: "0"
|
86
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
66
|
none: false
|
88
|
-
requirements:
|
89
|
-
- -
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
|
92
|
-
- 1
|
93
|
-
- 2
|
94
|
-
version: "1.2"
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '1.2'
|
95
71
|
requirements: []
|
96
|
-
|
97
72
|
rubyforge_project: whiny-mass-assignment
|
98
|
-
rubygems_version: 1.
|
73
|
+
rubygems_version: 1.5.2
|
99
74
|
signing_key:
|
100
75
|
specification_version: 3
|
101
76
|
summary: Complain loudly when protected attributes are set through mass assignment.
|
102
77
|
test_files: []
|
103
|
-
|