role_model 0.8.1 → 0.8.2

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NGIyYzhiNTFlOTRkZGZjOWQyMTVlM2I0Y2Y0Yjc3ZmU2MzYxY2M4OQ==
5
+ data.tar.gz: !binary |-
6
+ MDI3MjlhODc2NzJiNDVmNDZkNWM2MjU1YTc3NTJiZmY0ZTk3ZWY3Mg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NjgyZDdkNzE3ZDAzMjA0Mjg1YWUxMmFhYTEzZjg2OGQ5Y2NiYjhhOGJlOGUx
10
+ NDY2YzExNzNlMzIyODVjZTYyMjJkMDFlMDViNDlhMTFjYzRiMzQwOWY3Yzc2
11
+ OWUzOWYxYjJmY2UwNDVkNmYzMmFjNWYxZjA2YTVhNmU2ZmEzNTU=
12
+ data.tar.gz: !binary |-
13
+ YTAxNDA3NGVjNWNjMjcxOTUzM2NmYmNmMTIwNmJlNjRiZGUzNWJiMzA2NDli
14
+ YTFhZTIxMmNkYTNjYzIwZWQ2NDk0NGNiM2MzOWEzZmYyZjVjOWFkYmQxOTM1
15
+ ZDRmNjlkYjdmYTIyOWZkYTUyZTYxM2ZjNTJmOWYzM2VhMzI0NzU=
@@ -1,7 +1,8 @@
1
1
  rvm:
2
- - 1.8.7
3
2
  - 1.9.2
4
3
  - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.1
5
6
  - jruby
6
7
  notifications:
7
8
  recipients:
@@ -2,7 +2,7 @@
2
2
 
3
3
  RoleModel is the framework agnostic, efficient and declarative way to do
4
4
  (user) roles. Assigned roles will be efficiently stored as a bitmask
5
- directly into your model within an configurable attribute.
5
+ directly into your model within a configurable attribute.
6
6
 
7
7
  It works like this:
8
8
 
@@ -12,7 +12,7 @@ It works like this:
12
12
 
13
13
  class User
14
14
  attr_accessor :roles_mask # just for demo purposes
15
- # in real life this would usuallt be a persistent attribute,
15
+ # in real life this would usually be a persistent attribute,
16
16
  # e.g. if your User model is persisted in a SQL-DB add an integer
17
17
  # column named roles_mask to your users table -- just remove/replace
18
18
  # above attr_accessor line with whatever is needed for your
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ Jeweler::Tasks.new do |gem|
23
23
  # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
24
  # gem.add_runtime_dependency 'jabber4r', '> 0.1'
25
25
  # gem.add_development_dependency 'rspec', '> 1.2.3'
26
- gem.add_development_dependency "rspec", "~> 2"
26
+ # gem.add_development_dependency "rspec", "~> 2"
27
27
  end
28
28
  Jeweler::RubygemsDotOrgTasks.new
29
29
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.1
1
+ 0.8.2
@@ -23,7 +23,11 @@ module RoleModel
23
23
 
24
24
  (valid_roles & sanitized_roles).inject(0) { |sum, role| sum + 2**valid_roles.index(role) }
25
25
  end
26
-
26
+
27
+ def roles_from_mask(mask)
28
+ valid_roles.reject { |role| (mask.to_i & 2**valid_roles.index(role)).zero? }
29
+ end
30
+
27
31
  protected
28
32
 
29
33
  # :call-seq:
@@ -14,10 +14,15 @@ module RoleModel
14
14
  model_instance.roles = roles if model_instance
15
15
  self
16
16
  end
17
+
17
18
  alias_method :<<, :add
18
19
 
19
20
  def delete(role)
20
- model_instance.roles = super(role.to_sym)
21
+ if role.is_a? Array
22
+ model_instance.roles = subtract(role)
23
+ else
24
+ model_instance.roles = super(role.to_sym)
25
+ end
21
26
  self
22
27
  end
23
28
 
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: role_model 0.8.2 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "role_model"
8
- s.version = "0.8.1"
9
+ s.version = "0.8.2"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Martin Rehfeld"]
12
- s.date = "2012-10-29"
14
+ s.date = "2015-02-12"
13
15
  s.description = "Ever needed to assign roles to a model, say a User, and build conditional behaviour on top of that? Enter RoleModel -- roles have never been easier! Just declare your roles and you are done. Assigned roles will be stored as a bitmask."
14
16
  s.email = "martin.rehfeld@glnetworks.de"
15
17
  s.extra_rdoc_files = [
@@ -38,32 +40,28 @@ Gem::Specification.new do |s|
38
40
  ]
39
41
  s.homepage = "http://github.com/martinrehfeld/role_model"
40
42
  s.licenses = ["MIT"]
41
- s.require_paths = ["lib"]
42
- s.rubygems_version = "1.8.23"
43
+ s.rubygems_version = "2.2.2"
43
44
  s.summary = "Declare, assign and query roles with ease"
44
45
 
45
46
  if s.respond_to? :specification_version then
46
- s.specification_version = 3
47
+ s.specification_version = 4
47
48
 
48
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
50
  s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
50
51
  s.add_development_dependency(%q<rspec>, ["~> 2"])
51
52
  s.add_development_dependency(%q<rdoc>, [">= 2.4.2"])
52
53
  s.add_development_dependency(%q<autotest>, [">= 0"])
53
- s.add_development_dependency(%q<rspec>, ["~> 2"])
54
54
  else
55
55
  s.add_dependency(%q<jeweler>, [">= 1.5.2"])
56
56
  s.add_dependency(%q<rspec>, ["~> 2"])
57
57
  s.add_dependency(%q<rdoc>, [">= 2.4.2"])
58
58
  s.add_dependency(%q<autotest>, [">= 0"])
59
- s.add_dependency(%q<rspec>, ["~> 2"])
60
59
  end
61
60
  else
62
61
  s.add_dependency(%q<jeweler>, [">= 1.5.2"])
63
62
  s.add_dependency(%q<rspec>, ["~> 2"])
64
63
  s.add_dependency(%q<rdoc>, [">= 2.4.2"])
65
64
  s.add_dependency(%q<autotest>, [">= 0"])
66
- s.add_dependency(%q<rspec>, ["~> 2"])
67
65
  end
68
66
  end
69
67
 
@@ -51,6 +51,31 @@ describe RoleModel do
51
51
  end
52
52
  end
53
53
 
54
+ describe '.roles_from_mask(mask)' do
55
+ subject { model_class.roles_from_mask(mask) }
56
+
57
+ before do
58
+ model_class.instance_eval do
59
+ include RoleModel
60
+ roles :foo, :bar, :third
61
+ end
62
+ end
63
+
64
+ context 'when roles_mask is 0' do
65
+ let(:mask) { 0 }
66
+ it 'returns empty set' do
67
+ subject.should eq []
68
+ end
69
+ end
70
+
71
+ context 'when valid roles_mask' do
72
+ let(:mask) { 3 }
73
+ it 'returns the list of roles associated with a roles_mask' do
74
+ subject.should eq [:foo, :bar]
75
+ end
76
+ end
77
+ end
78
+
54
79
  [:roles, :role_symbols].each do |role_query_method|
55
80
  describe "##{role_query_method}" do
56
81
  let(:model) { model_class.new }
@@ -216,6 +241,18 @@ describe RoleModel do
216
241
  subject.should have(1).roles
217
242
  end
218
243
 
244
+ it "should delete existing roles given as an array of symbols" do
245
+ subject.roles.delete [:foo, :bar]
246
+ expect(subject.roles).not_to include([:foo, :bar])
247
+ expect(subject).to have(0).roles
248
+ end
249
+
250
+ it "should delete existing roles given as an array of strings" do
251
+ subject.roles.delete %w(foo bar)
252
+ expect(subject.roles).not_to include([:foo, :bar])
253
+ expect(subject).to have(0).roles
254
+ end
255
+
219
256
  it "should not change anything if a non existing role is given" do
220
257
  subject.roles.delete(:third)
221
258
  subject.roles.should include(:foo, :bar)
@@ -487,7 +524,7 @@ describe RoleModel do
487
524
  end
488
525
 
489
526
  context "inheritance" do
490
- let(:superclass_instance) { model_class.new }
527
+ let(:superclass_instance) { model_class.new }
491
528
  let(:inherited_model_class) { Class.new(model_class) }
492
529
  subject { inherited_model_class.new }
493
530
 
@@ -538,7 +575,7 @@ describe RoleModel do
538
575
  end
539
576
 
540
577
  context "independent usage" do
541
- let(:model_instance) { model_class.new }
578
+ let(:model_instance) { model_class.new }
542
579
  let(:other_model_class) { Class.new }
543
580
  before(:each) do
544
581
  other_model_class.instance_eval do
metadata CHANGED
@@ -1,106 +1,81 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: role_model
3
- version: !ruby/object:Gem::Version
4
- hash: 61
5
- prerelease:
6
- segments:
7
- - 0
8
- - 8
9
- - 1
10
- version: 0.8.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Martin Rehfeld
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-10-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
22
- none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 7
27
- segments:
28
- - 1
29
- - 5
30
- - 2
31
- version: 1.5.2
32
- version_requirements: *id001
11
+ date: 2015-02-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
33
14
  name: jeweler
34
- prerelease: false
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.5.2
35
20
  type: :development
36
- - !ruby/object:Gem::Dependency
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ~>
41
- - !ruby/object:Gem::Version
42
- hash: 7
43
- segments:
44
- - 2
45
- version: "2"
46
- version_requirements: *id002
47
- name: rspec
48
21
  prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.5.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '2'
49
34
  type: :development
50
- - !ruby/object:Gem::Dependency
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 27
57
- segments:
58
- - 2
59
- - 4
60
- - 2
61
- version: 2.4.2
62
- version_requirements: *id003
63
- name: rdoc
64
35
  prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 2.4.2
65
48
  type: :development
66
- - !ruby/object:Gem::Dependency
67
- requirement: &id004 !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
76
- version_requirements: *id004
77
- name: autotest
78
49
  prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.4.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: autotest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
79
62
  type: :development
80
- - !ruby/object:Gem::Dependency
81
- requirement: &id005 !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ~>
85
- - !ruby/object:Gem::Version
86
- hash: 7
87
- segments:
88
- - 2
89
- version: "2"
90
- version_requirements: *id005
91
- name: rspec
92
63
  prerelease: false
93
- type: :development
94
- description: Ever needed to assign roles to a model, say a User, and build conditional behaviour on top of that? Enter RoleModel -- roles have never been easier! Just declare your roles and you are done. Assigned roles will be stored as a bitmask.
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Ever needed to assign roles to a model, say a User, and build conditional
70
+ behaviour on top of that? Enter RoleModel -- roles have never been easier! Just
71
+ declare your roles and you are done. Assigned roles will be stored as a bitmask.
95
72
  email: martin.rehfeld@glnetworks.de
96
73
  executables: []
97
-
98
74
  extensions: []
99
-
100
- extra_rdoc_files:
75
+ extra_rdoc_files:
101
76
  - LICENSE
102
77
  - README.rdoc
103
- files:
78
+ files:
104
79
  - .document
105
80
  - .rspec
106
81
  - .travis.yml
@@ -120,37 +95,27 @@ files:
120
95
  - spec/roles_spec.rb
121
96
  - spec/spec_helper.rb
122
97
  homepage: http://github.com/martinrehfeld/role_model
123
- licenses:
98
+ licenses:
124
99
  - MIT
100
+ metadata: {}
125
101
  post_install_message:
126
102
  rdoc_options: []
127
-
128
- require_paths:
103
+ require_paths:
129
104
  - lib
130
- required_ruby_version: !ruby/object:Gem::Requirement
131
- none: false
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- hash: 3
136
- segments:
137
- - 0
138
- version: "0"
139
- required_rubygems_version: !ruby/object:Gem::Requirement
140
- none: false
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- hash: 3
145
- segments:
146
- - 0
147
- version: "0"
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
148
115
  requirements: []
149
-
150
116
  rubyforge_project:
151
- rubygems_version: 1.8.23
117
+ rubygems_version: 2.2.2
152
118
  signing_key:
153
- specification_version: 3
119
+ specification_version: 4
154
120
  summary: Declare, assign and query roles with ease
155
121
  test_files: []
156
-