permitters 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YTE2MWYzNGU3OWQ3NzllN2E1M2NjZDg5ZWQzMzY3YWM1ZmNjOTk2Yg==
5
- data.tar.gz: !binary |-
6
- YWM5ODEyZGFmMGJkOWUwNzYwMWI3MzVlOGY0MjEyY2ViMTYxZWY3ZA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MWQxZWU1YjIzNWYyOGY5OWQ5ODE5ZmRkNTllNzA2NmRkMDQwZTdhNzVkNTMy
10
- MzMzMDNkZWEyNWU2YzdlYjM3NjRlMzFmZDE0MDE5Mjg5NzdjOTQwOWIyMTU5
11
- MjE0MTc2YTJlYjVmZDdiMGZjYWFkZWNjMTU2N2UyM2E3ZGZmNTU=
12
- data.tar.gz: !binary |-
13
- NmNjMDMwYWJiODE1NjI2NGI4YTgwZDg3MDM1YmQ1ODYzOTc1OTU4NGFlMTFi
14
- NDAwMDQ3M2I4MDA0MDM2ODZmNjBiYTM3MWMzN2I5Y2UwNjJjZDY1OGZlODE3
15
- YTJlY2RjOTQyNDdkNGQ3Mjc5OTgzNzNhZDRlM2ExZjk0Y2U1Y2I=
2
+ SHA1:
3
+ metadata.gz: f351ee08b99b4cf2f20067b636ec23b480e36219
4
+ data.tar.gz: fda272a871a9ed928c5e299792b6991242c46906
5
+ SHA512:
6
+ metadata.gz: f02e98b29e0b14095d7a58d36640775bc4ac8c7376b1a883a906705c3938fcb80940d8148b0475d8e509c91bc17fe16edf5e9066e82c9c65f74a2828915e9cfd
7
+ data.tar.gz: 78c0568d329074e5745ed2936f1c647e2f80ccac7d1a983fa1a5d3dc785e9bce0b7fdd9f16f8973f8c147ff07815b136203735a965381354506a44b40ebb7d0a
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'bundler/gem_tasks'
3
3
  require 'appraisal'
4
4
 
5
5
  require 'rspec/core/rake_task'
6
- RSpec::Core::RakeTask.new(:spec)
6
+ RSpec::Core::RakeTask.new(:spec_for_appraisal)
7
7
 
8
8
  # Override the default task
9
9
  task :default => [] # Just in case it hasn't already been set
@@ -12,8 +12,12 @@ task :default => :appraise
12
12
 
13
13
  task :appraise do |t|
14
14
  if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
15
- Rake::Task[:spec].invoke
15
+ Rake::Task[:spec_for_appraisal].invoke
16
16
  else
17
17
  exec 'rake appraisal:install && rake appraisal'
18
18
  end
19
19
  end
20
+
21
+ task :spec do |t|
22
+ warn "To run the specs please use `rake` (or for faster tests, `rake appraise`)"
23
+ end
@@ -1,5 +1,7 @@
1
1
  module ActionController
2
2
  class PermitterAttribute < Struct.new(:name, :options); end
3
+ class PermitterError < StandardError #:nodoc:
4
+ end
3
5
  class Permitter
4
6
 
5
7
  # Application-wide configuration
@@ -12,17 +14,10 @@ module ActionController
12
14
  # To change this value, use the `resource` class method.
13
15
  def inherited(subclass)
14
16
  subclass.class_eval do
15
- class_attribute :permitted_attributes
16
- class_attribute :resource_name
17
+ class_attribute :permitted_attributes, :resource_name_override
18
+ private_class_method :resource_name_override, :resource_name_override=
17
19
 
18
20
  self.permitted_attributes = []
19
- name = self.name
20
-
21
- # in Rails 3.2+ could do:
22
- # name.demodulize.chomp('Permitter').underscore.to_sym
23
- # Rails < 3.2
24
- last_index = name.rindex('::')
25
- self.resource_name = (last_index ? name[(last_index+2)..-1] : name).chomp('Permitter').underscore.to_sym
26
21
  end
27
22
  end
28
23
 
@@ -41,7 +36,17 @@ module ActionController
41
36
  end
42
37
 
43
38
  def resource(name)
44
- self.resource_name = name
39
+ self.resource_name_override = name
40
+ end
41
+
42
+ def resource_name
43
+ name = self.name
44
+
45
+ # in Rails 3.2+ could do:
46
+ # name.demodulize.chomp('Permitter').underscore.to_sym
47
+ # Rails < 3.2
48
+ last_index = name.rindex('::')
49
+ resource_name_override || (last_index ? name[(last_index+2)..-1] : name).chomp('Permitter').underscore.to_sym
45
50
  end
46
51
  end
47
52
 
@@ -64,7 +69,9 @@ module ActionController
64
69
  permitted_attributes.select {|a| a.options[:authorize]}.each do |attribute|
65
70
  scope_name = attribute.options[:scope]
66
71
  values = scope_name ? Array.wrap(@filtered_params[scope_name]).collect {|hash| hash[attribute.name]}.compact : Array.wrap(@filtered_params[attribute.name])
67
- klass = (attribute.options[:as].try(:to_s) || attribute.name.to_s.split(/(.+)_ids?/)[1]).classify.constantize
72
+ klass_name = attribute.options[:as].try(:to_s) || attribute.name.to_s.split(/(.+)_ids?/)[1]
73
+ raise PermitterError.new("Cannot permit #{attribute.name.inspect} unless you specify the the attribute name (e.g. :something_id or :something_ids), or a class name via the :as option (e.g. :as => Something)") unless klass_name
74
+ klass = klass_name.classify.constantize
68
75
 
69
76
  values.each do |record_id|
70
77
  record = klass.find record_id
@@ -81,6 +88,9 @@ module ActionController
81
88
  authorizer ? authorizer.__send__(:authorize!, *args, &block) : nil
82
89
  end
83
90
 
91
+ def resource_name
92
+ self.class.resource_name
93
+ end
84
94
 
85
95
  private
86
96
 
@@ -1,3 +1,3 @@
1
1
  module Permitters
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: permitters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hawkins
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-15 00:00:00.000000000 Z
12
+ date: 2013-12-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Permitters are an object-oriented way of defining what request parameters
15
15
  are permitted. using Strong Parameters. It is to Strong Parameters what ActiveModel::Serializers
@@ -38,17 +38,17 @@ require_paths:
38
38
  - lib
39
39
  required_ruby_version: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - ! '>='
41
+ - - '>='
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
44
  required_rubygems_version: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ! '>='
46
+ - - '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  requirements: []
50
50
  rubyforge_project:
51
- rubygems_version: 2.0.6
51
+ rubygems_version: 2.1.11
52
52
  signing_key:
53
53
  specification_version: 4
54
54
  summary: Object-oriented parameter authorization with Strong Parameters