permitters 0.0.2 → 0.0.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.
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