role_model 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-