rolify 3.2.0.rc2 → 3.2.0

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/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,5 @@
1
- = 3.2 (unreleased yet)
2
- * <b>DEPRECATION NOTICE:</b>Ruby 1.8 support dropped ! Mongoid 3.0 only supports MRI 1.9.3, and HEAD, and JRuby 1.6.0+ in 1.9 mode
1
+ = 3.2 (Aug 7, 2012)
2
+ * <b>DEPRECATION NOTICE:</b> Ruby 1.8 support dropped ! Mongoid 3.0 only supports MRI 1.9.3, and HEAD, and JRuby 1.6.0+ in 1.9 mode
3
3
  * removed <tt>dynamic_shortcuts</tt> arguments from the generator
4
4
  * to use dynamic shortcuts feature when you're using ActiveRecord, you have to enable it _after_ running rake db:migrate as it relies on the roles table
5
5
  * support for Mongoid 3.x (thanks to @Leonas)
@@ -10,9 +10,12 @@
10
10
  * added association callbacks <tt>(before|after)_add</tt>, <tt>(before|after)_remove</tt> on <tt>rolify</tt> method (thanks to @shekibobo)
11
11
  * added ability to pass an array of roles to <tt>Resource.with_role()</tt>, aliased by <tt>Resource.with_roles()</tt> (thanks to @lukes)
12
12
  * added option to have roles be destroyed by default if parent resource is destroyed (thanks to @treydock)
13
+ * added new method <tt>only_has_role?</tt> to check if user has only a specific role (thanks to @jalcine)
13
14
  * better edge cases covering in the specs
14
15
  * fixed a bug regarding the loading order of the railtie when using Mongoid ORM and other gems using initializer files (thanks to @stigi)
15
16
  * fixed double quote syntax when using MySQL
17
+ * fixed a nasty bug regarding class level queries (thanks to @kamrulhassan)
18
+ * fixed uninitialized constant error in scopify method
16
19
  * documentation improvement
17
20
 
18
21
  = 3.1 (Apr 6, 2012)
data/lib/rolify.rb CHANGED
@@ -29,9 +29,10 @@ module Rolify
29
29
  load_dynamic_methods if Rolify.dynamic_shortcuts
30
30
  end
31
31
 
32
- def resourcify(options = { :role_cname => 'Role', :dependent => :destroy })
32
+ def resourcify(options = {})
33
33
  include Resource
34
34
 
35
+ options.reverse_merge!({ :role_cname => 'Role', :dependent => :destroy })
35
36
  resourcify_options = { :class_name => options[:role_cname].camelize, :as => :resource, :dependent => options[:dependent] }
36
37
  has_many :roles, resourcify_options
37
38
 
@@ -4,7 +4,8 @@ module Rolify
4
4
  module Adapter
5
5
  class ResourceAdapter < ResourceAdapterBase
6
6
  def resources_find(roles_table, relation, role_name)
7
- resources = relation.joins("INNER JOIN #{quote(roles_table)} ON #{quote(roles_table)}.resource_type = '#{relation.to_s}'")
7
+ resources = relation.joins("INNER JOIN #{quote(roles_table)} ON #{quote(roles_table)}.resource_type = '#{relation.to_s}' AND
8
+ (#{quote(roles_table)}.resource_id IS NULL OR #{quote(roles_table)}.resource_id = #{quote(relation.table_name)}.id)")
8
9
  resources = resources.where("#{quote(roles_table)}.name IN (?) AND #{quote(roles_table)}.resource_type = ?", Array(role_name), relation.to_s)
9
10
  resources
10
11
  end
data/lib/rolify/role.rb CHANGED
@@ -46,10 +46,15 @@ module Rolify
46
46
  def has_any_role?(*args)
47
47
  self.class.adapter.where(self.roles, *args).size > 0
48
48
  end
49
+
50
+ def only_has_role?(role_name, resource = nil)
51
+ return self.has_role?(role_name,resource) && self.roles.count == 1
52
+ end
49
53
 
50
54
  def remove_role(role_name, resource = nil)
51
55
  self.class.adapter.remove(self, role_name, resource)
52
56
  end
57
+
53
58
  alias_method :revoke, :remove_role
54
59
  deprecate :has_no_role, :remove_role
55
60
 
@@ -1,3 +1,3 @@
1
1
  module Rolify
2
- VERSION = "3.2.0.rc2"
2
+ VERSION = "3.2.0"
3
3
  end
data/rolify.gemspec CHANGED
@@ -29,6 +29,8 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency "mongoid", ">= 3.0"
30
30
  s.add_development_dependency "ammeter"
31
31
  s.add_development_dependency "rake"
32
- s.add_development_dependency "rspec"
32
+ s.add_development_dependency "rspec", ">= 2.0"
33
+ s.add_development_dependency "rspec-rails", ">= 2.0"
34
+ s.add_development_dependency "mongoid-rspec", ">= 1.5"
33
35
  s.add_development_dependency "bundler"
34
36
  end
@@ -6,6 +6,7 @@ describe Rolify::Resource do
6
6
  User.rolify :role_cname => "Role"
7
7
  Forum.resourcify :role_cname => "Role"
8
8
  Group.resourcify :role_cname => "Role"
9
+ Role.destroy_all
9
10
  end
10
11
 
11
12
  # Users
@@ -31,10 +32,10 @@ describe Rolify::Resource do
31
32
  subject { Forum }
32
33
 
33
34
  it "should include Forum instances with forum role" do
34
- subject.with_role(:forum).should include(Forum.first, Forum.last)
35
+ subject.with_role(:forum).should =~ [ Forum.first, Forum.last ]
35
36
  end
36
37
  it "should include Forum instances with godfather role" do
37
- subject.with_role(:godfather).should eq(Forum.all)
38
+ subject.with_role(:godfather).should =~ Forum.all.to_a
38
39
  end
39
40
  end
40
41
 
@@ -42,7 +43,7 @@ describe Rolify::Resource do
42
43
  subject { Group }
43
44
 
44
45
  it "should include Group instances with group role" do
45
- subject.with_role(:group).should include(Group.last)
46
+ subject.with_role(:group).should =~ [ Group.last ]
46
47
  end
47
48
  end
48
49
 
@@ -51,8 +52,9 @@ describe Rolify::Resource do
51
52
  context "with an array of role names as argument" do
52
53
  context "on the Group class" do
53
54
  subject { Group }
55
+
54
56
  it "should include Group instances with both group and grouper roles" do
55
- subject.with_roles([:group, :grouper]).should include(Group.first, Group.last)
57
+ subject.with_roles([:group, :grouper]).should =~ [ Group.first, Group.last ]
56
58
  end
57
59
  end
58
60
  end
@@ -62,15 +64,15 @@ describe Rolify::Resource do
62
64
  subject { Forum }
63
65
 
64
66
  it "should get all Forum instances binded to the forum role and the admin user" do
65
- subject.with_role(:forum, admin).should include(Forum.first)
67
+ subject.with_role(:forum, admin).should =~ [ Forum.first ]
66
68
  end
67
69
 
68
70
  it "should get all Forum instances binded to the forum role and the tourist user" do
69
- subject.with_role(:forum, tourist).should include(Forum.last)
71
+ subject.with_role(:forum, tourist).should =~ [ Forum.last ]
70
72
  end
71
73
 
72
74
  it "should get all Forum instances binded to the godfather role and the admin user" do
73
- subject.with_role(:godfather, admin).should == Forum.all
75
+ subject.with_role(:godfather, admin).should =~ Forum.all.to_a
74
76
  end
75
77
 
76
78
  it "should get all Forum instances binded to the godfather role and the tourist user" do
@@ -78,7 +80,7 @@ describe Rolify::Resource do
78
80
  end
79
81
 
80
82
  it "should get Forum instances binded to the group role and the tourist user" do
81
- subject.with_role(:group, tourist).should include(Forum.first)
83
+ subject.with_role(:group, tourist).should =~ [ Forum.first ]
82
84
  end
83
85
 
84
86
  it "should not get Forum instances not binded to the group role and the tourist user" do
@@ -90,7 +92,7 @@ describe Rolify::Resource do
90
92
  subject { Group }
91
93
 
92
94
  it "should get all resources binded to the group role and the admin user" do
93
- subject.with_role(:group, admin).should include(Group.last)
95
+ subject.with_role(:group, admin).should =~ [ Group.last ]
94
96
  end
95
97
 
96
98
  it "should not get resources not binded to the group role and the admin user" do
@@ -104,7 +106,7 @@ describe Rolify::Resource do
104
106
  subject { Forum }
105
107
 
106
108
  it "should get Forum instances binded to the forum and group roles and the tourist user" do
107
- subject.with_roles([:forum, :group], tourist).should include(Forum.first, Forum.last)
109
+ subject.with_roles([:forum, :group], tourist).should =~ [ Forum.first, Forum.last ]
108
110
  end
109
111
 
110
112
  end
@@ -113,7 +115,7 @@ describe Rolify::Resource do
113
115
  subject { Group }
114
116
 
115
117
  it "should get Group instances binded to the group and grouper roles and the admin user" do
116
- subject.with_roles([:group, :grouper], admin).should include(Group.first, Group.last)
118
+ subject.with_roles([:group, :grouper], admin).should =~ [ Group.first, Group.last ]
117
119
  end
118
120
 
119
121
  end
@@ -129,7 +131,7 @@ describe Rolify::Resource do
129
131
  subject { Forum }
130
132
 
131
133
  it "should get all roles binded to a Forum class or instance" do
132
- subject.find_roles.should include(forum_role, godfather_role, tourist_role, sneaky_role)
134
+ subject.find_roles.to_a.should =~ [ forum_role, godfather_role, tourist_role, sneaky_role ]
133
135
  end
134
136
 
135
137
  it "should not get roles not binded to a Forum class or instance" do
@@ -138,7 +140,7 @@ describe Rolify::Resource do
138
140
 
139
141
  context "using :any parameter" do
140
142
  it "should get all roles binded to any Forum class or instance" do
141
- subject.find_roles(:any, :any).should include(forum_role, godfather_role, tourist_role, sneaky_role)
143
+ subject.find_roles(:any, :any).to_a.should =~ [ forum_role, godfather_role, tourist_role, sneaky_role ]
142
144
  end
143
145
 
144
146
  it "should not get roles not binded to a Forum class or instance" do
@@ -151,7 +153,7 @@ describe Rolify::Resource do
151
153
  subject { Group }
152
154
 
153
155
  it "should get all roles binded to a Group class or instance" do
154
- subject.find_roles.should include(group_role)
156
+ subject.find_roles.to_a.should =~ [ group_role, grouper_role ]
155
157
  end
156
158
 
157
159
  it "should not get roles not binded to a Group class or instance" do
@@ -160,7 +162,7 @@ describe Rolify::Resource do
160
162
 
161
163
  context "using :any parameter" do
162
164
  it "should get all roles binded to Group class or instance" do
163
- subject.find_roles(:any, :any).should include(group_role)
165
+ subject.find_roles(:any, :any).to_a.should =~ [ group_role, grouper_role ]
164
166
  end
165
167
 
166
168
  it "should not get roles not binded to a Group class or instance" do
@@ -186,7 +188,7 @@ describe Rolify::Resource do
186
188
 
187
189
  context "using a user parameter" do
188
190
  it "should get all roles binded to any resource" do
189
- subject.find_roles(:forum, admin).should include(forum_role)
191
+ subject.find_roles(:forum, admin).to_a.should =~ [ forum_role ]
190
192
  end
191
193
 
192
194
  it "should not get roles not binded to the admin user and forum role name" do
@@ -317,15 +319,30 @@ describe Rolify::Resource do
317
319
  it { should respond_to :roles }
318
320
 
319
321
  context "on a Forum instance" do
320
- its(:roles) { should include(forum_role, sneaky_role) }
322
+ its(:roles) { should eq([ forum_role, sneaky_role ]) }
321
323
  its(:roles) { subject.should_not include(group_role, godfather_role, tourist_role) }
322
324
  end
323
325
 
324
326
  context "on a Group instance" do
325
327
  subject { Group.last }
326
328
 
327
- its(:roles) { should include(group_role) }
329
+ its(:roles) { should eq([ group_role ]) }
328
330
  its(:roles) { should_not include(forum_role, godfather_role, sneaky_role, tourist_role) }
331
+
332
+ context "when deleting a Group instance" do
333
+ subject do
334
+ Group.create(:name => "to delete")
335
+ end
336
+
337
+ before do
338
+ subject.roles.create :name => "group_role1"
339
+ subject.roles.create :name => "group_role2"
340
+ end
341
+
342
+ it "should remove the roles binded to this instance" do
343
+ expect { subject.destroy }.to change { Role.count }.by(-2)
344
+ end
345
+ end
329
346
  end
330
347
  end
331
348
 
@@ -333,14 +350,14 @@ describe Rolify::Resource do
333
350
  context "on a Forum instance" do
334
351
  subject { Forum.first }
335
352
 
336
- its(:applied_roles) { should include(forum_role, godfather_role, sneaky_role) }
353
+ its(:applied_roles) { should =~ [ forum_role, godfather_role, sneaky_role ] }
337
354
  its(:applied_roles) { should_not include(group_role, tourist_role) }
338
355
  end
339
356
 
340
357
  context "on a Group instance" do
341
358
  subject { Group.last }
342
359
 
343
- its(:applied_roles) { should include(group_role) }
360
+ its(:applied_roles) { should =~ [ group_role ] }
344
361
  its(:applied_roles) { should_not include(forum_role, godfather_role, sneaky_role, tourist_role) }
345
362
  end
346
363
  end
@@ -0,0 +1,174 @@
1
+ shared_examples_for "#only_has_role?_examples" do |param_name, param_method|
2
+ context "using #{param_name} as parameter" do
3
+ context "with a global role", :scope => :global do
4
+ subject do
5
+ user = User.create(:login => "global_user")
6
+ user.add_role "global_role".send(param_method)
7
+ user
8
+ end
9
+
10
+ it { subject.only_has_role?("global_role".send(param_method)).should be_true }
11
+
12
+ context "on resource request" do
13
+ it { subject.only_has_role?("global_role".send(param_method), Forum.first).should be_true }
14
+ it { subject.only_has_role?("global_role".send(param_method), Forum).should be_true }
15
+ it { subject.only_has_role?("global_role".send(param_method), :any).should be_true }
16
+ end
17
+
18
+ context "with another global role" do
19
+ before(:all) { role_class.create(:name => "another_global_role") }
20
+
21
+ it { subject.only_has_role?("another_global_role".send(param_method)).should be_false }
22
+ it { subject.only_has_role?("another_global_role".send(param_method), :any).should be_false }
23
+ end
24
+
25
+ it "should not get an instance scoped role" do
26
+ subject.only_has_role?("moderator".send(param_method), Group.first).should be_false
27
+ end
28
+
29
+ it "should not get a class scoped role" do
30
+ subject.only_has_role?("manager".send(param_method), Forum).should be_false
31
+ end
32
+
33
+ context "using inexisting role" do
34
+ it { subject.only_has_role?("dummy".send(param_method)).should be_false }
35
+ it { subject.only_has_role?("dumber".send(param_method), Forum.first).should be_false }
36
+ end
37
+
38
+ context "with multiple roles" do
39
+ before(:all) { subject.add_role "multiple_global_roles".send(param_method) }
40
+
41
+ it { subject.only_has_role?("global_role".send(param_method)).should be_false }
42
+ end
43
+ end
44
+
45
+ context "with a class scoped role", :scope => :class do
46
+ subject do
47
+ user = User.create(:login => "class_user")
48
+ user.add_role "class_role".send(param_method), Forum
49
+ user
50
+ end
51
+
52
+ context "on class scoped role request" do
53
+ it { subject.only_has_role?("class_role".send(param_method), Forum).should be_true }
54
+ it { subject.only_has_role?("class_role".send(param_method), Forum.first).should be_true }
55
+ it { subject.only_has_role?("class_role".send(param_method), :any).should be_true }
56
+ end
57
+
58
+ it "should not get a scoped role when asking for a global" do
59
+ subject.only_has_role?("class_role".send(param_method)).should be_false
60
+ end
61
+
62
+ it "should not get a global role" do
63
+ role_class.create(:name => "global_role")
64
+ subject.only_has_role?("global_role".send(param_method)).should be_false
65
+ end
66
+
67
+ context "with another class scoped role" do
68
+ context "on the same resource but with a different name" do
69
+ before(:all) { role_class.create(:name => "another_class_role", :resource_type => "Forum") }
70
+
71
+ it { subject.only_has_role?("another_class_role".send(param_method), Forum).should be_false }
72
+ it { subject.only_has_role?("another_class_role".send(param_method), :any).should be_false }
73
+ end
74
+
75
+ context "on another resource with the same name" do
76
+ before(:all) { role_class.create(:name => "class_role", :resource_type => "Group") }
77
+
78
+ it { subject.only_has_role?("class_role".send(param_method), Group).should be_false }
79
+ it { subject.only_has_role?("class_role".send(param_method), :any).should be_true }
80
+ end
81
+
82
+ context "on another resource with another name" do
83
+ before(:all) { role_class.create(:name => "another_class_role", :resource_type => "Group") }
84
+
85
+ it { subject.only_has_role?("another_class_role".send(param_method), Group).should be_false }
86
+ it { subject.only_has_role?("another_class_role".send(param_method), :any).should be_false }
87
+ end
88
+ end
89
+
90
+ context "using inexisting role" do
91
+ it { subject.only_has_role?("dummy".send(param_method), Forum).should be_false }
92
+ it { subject.only_has_role?("dumber".send(param_method)).should be_false }
93
+ end
94
+
95
+ context "with multiple roles" do
96
+ before(:all) { subject.add_role "multiple_class_roles".send(param_method) }
97
+
98
+ it { subject.only_has_role?("class_role".send(param_method), Forum).should be_false }
99
+ it { subject.only_has_role?("class_role".send(param_method), Forum.first).should be_false }
100
+ it { subject.only_has_role?("class_role".send(param_method), :any).should be_false }
101
+ end
102
+ end
103
+
104
+ context "with a instance scoped role", :scope => :instance do
105
+ subject do
106
+ user = User.create(:login => "instance_user")
107
+ user.add_role "instance_role".send(param_method), Forum.first
108
+ user
109
+ end
110
+
111
+ context "on instance scoped role request" do
112
+ it { subject.only_has_role?("instance_role".send(param_method), Forum.first).should be_true }
113
+ it { subject.only_has_role?("instance_role".send(param_method), :any).should be_true }
114
+ end
115
+
116
+ it "should not get an instance scoped role when asking for a global" do
117
+ subject.only_has_role?("instance_role".send(param_method)).should be_false
118
+ end
119
+
120
+ it "should not get an instance scoped role when asking for a class scoped" do
121
+ subject.only_has_role?("instance_role".send(param_method), Forum).should be_false
122
+ end
123
+
124
+ it "should not get a global role" do
125
+ role_class.create(:name => "global_role")
126
+ subject.only_has_role?("global_role".send(param_method)).should be_false
127
+ end
128
+
129
+ context "with another instance scoped role" do
130
+ context "on the same resource but with a different role name" do
131
+ before(:all) { role_class.create(:name => "another_instance_role", :resource => Forum.first) }
132
+
133
+ it { subject.only_has_role?("another_instance_role".send(param_method), Forum.first).should be_false }
134
+ it { subject.only_has_role?("another_instance_role".send(param_method), :any).should be_false }
135
+ end
136
+
137
+ context "on another resource of the same type but with the same role name" do
138
+ before(:all) { role_class.create(:name => "moderator", :resource => Forum.last) }
139
+
140
+ it { subject.only_has_role?("instance_role".send(param_method), Forum.last).should be_false }
141
+ it { subject.only_has_role?("instance_role".send(param_method), :any).should be_true }
142
+ end
143
+
144
+ context "on another resource of different type but with the same role name" do
145
+ before(:all) { role_class.create(:name => "moderator", :resource => Group.last) }
146
+
147
+ it { subject.only_has_role?("instance_role".send(param_method), Group.last).should be_false }
148
+ it { subject.only_has_role?("instance_role".send(param_method), :any).should be_true }
149
+ end
150
+
151
+ context "on another resource of the same type and with another role name" do
152
+ before(:all) { role_class.create(:name => "another_instance_role", :resource => Forum.last) }
153
+
154
+ it { subject.only_has_role?("another_instance_role".send(param_method), Forum.last).should be_false }
155
+ it { subject.only_has_role?("another_instance_role".send(param_method), :any).should be_false }
156
+ end
157
+
158
+ context "on another resource of different type and with another role name" do
159
+ before(:all) { role_class.create(:name => "another_instance_role", :resource => Group.first) }
160
+
161
+ it { subject.only_has_role?("another_instance_role".send(param_method), Group.first).should be_false }
162
+ it { subject.only_has_role?("another_instance_role".send(param_method), :any).should be_false }
163
+ end
164
+ end
165
+
166
+ context "with multiple roles" do
167
+ before(:all) { subject.add_role "multiple_instance_roles".send(param_method), Forum.first }
168
+
169
+ it { subject.only_has_role?("instance_role".send(param_method), Forum.first).should be_false }
170
+ it { subject.only_has_role?("instance_role".send(param_method), :any).should be_false }
171
+ end
172
+ end
173
+ end
174
+ end
@@ -1,6 +1,7 @@
1
1
  require "rolify/shared_contexts"
2
2
  require "rolify/shared_examples/shared_examples_for_add_role"
3
3
  require "rolify/shared_examples/shared_examples_for_has_role"
4
+ require "rolify/shared_examples/shared_examples_for_only_has_role"
4
5
  require "rolify/shared_examples/shared_examples_for_has_all_roles"
5
6
  require "rolify/shared_examples/shared_examples_for_has_any_role"
6
7
  require "rolify/shared_examples/shared_examples_for_remove_role"
@@ -56,6 +57,11 @@ shared_examples_for Rolify::Role do
56
57
  it_should_behave_like "#has_role?_examples", "String", :to_s
57
58
  it_should_behave_like "#has_role?_examples", "Symbol", :to_sym
58
59
  end
60
+
61
+ describe "#only_has_role?" do
62
+ it_should_behave_like "#only_has_role?_examples", "String", :to_s
63
+ it_should_behave_like "#only_has_role?_examples", "Symbol", :to_sym
64
+ end
59
65
 
60
66
  describe "#has_all_roles?" do
61
67
  it_should_behave_like "#has_all_roles?_examples", "String", :to_s
@@ -72,17 +78,21 @@ shared_examples_for Rolify::Role do
72
78
  it_should_behave_like "#remove_role_examples", "Symbol", :to_sym
73
79
  end
74
80
  end
75
- context "with new instance" do
81
+
82
+ context "with a new instance" do
76
83
  let(:user) { user_class.new }
77
- before do
84
+
85
+ before(:all) do
78
86
  user.add_role :admin
79
87
  user.add_role :moderator, Forum.first
80
88
  end
89
+
81
90
  subject { user }
91
+
82
92
  it { should have_role :admin }
83
93
  it { should have_role :moderator, Forum.first }
84
-
85
94
  end
95
+
86
96
  context "on the Class level ", :scope => :mixed do
87
97
  it_should_behave_like :finders, "String", :to_s
88
98
  it_should_behave_like :finders, "Symbol", :to_sym
@@ -1,5 +1,6 @@
1
1
  require 'active_record'
2
2
 
3
+ RSpec::Matchers::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
3
4
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
4
5
  ActiveRecord::Base.extend Rolify
5
6
 
@@ -2,6 +2,10 @@ require 'mongoid'
2
2
 
3
3
  Mongoid.load!("spec/support/adapters/mongoid.yml", :test)
4
4
 
5
+ RSpec.configure do |config|
6
+ config.include Mongoid::Matchers
7
+ end
8
+
5
9
  ::Mongoid::Document.module_eval do
6
10
  def self.included(base)
7
11
  base.extend Rolify
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rolify
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0.rc2
5
- prerelease: 6
4
+ version: 3.2.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Florent Monbillard
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-31 00:00:00.000000000 Z
12
+ date: 2012-08-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sqlite3
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70098036310660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
24
+ version_requirements: *70098036310660
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: bson_ext
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70098036309620 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ! '>='
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: '0'
38
33
  type: :development
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
35
+ version_requirements: *70098036309620
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: activerecord
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70098036308480 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ! '>='
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 3.1.0
54
44
  type: :development
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: 3.1.0
46
+ version_requirements: *70098036308480
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: mongoid
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &70098036307720 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ! '>='
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: '3.0'
70
55
  type: :development
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '3.0'
57
+ version_requirements: *70098036307720
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: ammeter
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &70098036307200 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ! '>='
@@ -85,15 +65,10 @@ dependencies:
85
65
  version: '0'
86
66
  type: :development
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
68
+ version_requirements: *70098036307200
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: rake
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &70098036306500 !ruby/object:Gem::Requirement
97
72
  none: false
98
73
  requirements:
99
74
  - - ! '>='
@@ -101,44 +76,51 @@ dependencies:
101
76
  version: '0'
102
77
  type: :development
103
78
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
79
+ version_requirements: *70098036306500
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: rspec
112
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &70098036305440 !ruby/object:Gem::Requirement
113
83
  none: false
114
84
  requirements:
115
85
  - - ! '>='
116
86
  - !ruby/object:Gem::Version
117
- version: '0'
87
+ version: '2.0'
118
88
  type: :development
119
89
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
90
+ version_requirements: *70098036305440
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec-rails
93
+ requirement: &70098036304660 !ruby/object:Gem::Requirement
121
94
  none: false
122
95
  requirements:
123
96
  - - ! '>='
124
97
  - !ruby/object:Gem::Version
125
- version: '0'
98
+ version: '2.0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70098036304660
126
102
  - !ruby/object:Gem::Dependency
127
- name: bundler
128
- requirement: !ruby/object:Gem::Requirement
103
+ name: mongoid-rspec
104
+ requirement: &70098036303960 !ruby/object:Gem::Requirement
129
105
  none: false
130
106
  requirements:
131
107
  - - ! '>='
132
108
  - !ruby/object:Gem::Version
133
- version: '0'
109
+ version: '1.5'
134
110
  type: :development
135
111
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
112
+ version_requirements: *70098036303960
113
+ - !ruby/object:Gem::Dependency
114
+ name: bundler
115
+ requirement: &70098036303500 !ruby/object:Gem::Requirement
137
116
  none: false
138
117
  requirements:
139
118
  - - ! '>='
140
119
  - !ruby/object:Gem::Version
141
120
  version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *70098036303500
142
124
  description: Very simple Roles library without any authorization enforcement supporting
143
125
  scope on resource objects (instance or class). Supports ActiveRecord and Mongoid
144
126
  ORMs.
@@ -194,6 +176,7 @@ files:
194
176
  - spec/rolify/shared_examples/shared_examples_for_has_all_roles.rb
195
177
  - spec/rolify/shared_examples/shared_examples_for_has_any_role.rb
196
178
  - spec/rolify/shared_examples/shared_examples_for_has_role.rb
179
+ - spec/rolify/shared_examples/shared_examples_for_only_has_role.rb
197
180
  - spec/rolify/shared_examples/shared_examples_for_remove_role.rb
198
181
  - spec/rolify/shared_examples/shared_examples_for_roles.rb
199
182
  - spec/rolify/shared_examples/shared_examples_for_scopes.rb
@@ -218,12 +201,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
201
  required_rubygems_version: !ruby/object:Gem::Requirement
219
202
  none: false
220
203
  requirements:
221
- - - ! '>'
204
+ - - ! '>='
222
205
  - !ruby/object:Gem::Version
223
- version: 1.3.1
206
+ version: '0'
224
207
  requirements: []
225
208
  rubyforge_project: rolify
226
- rubygems_version: 1.8.23
209
+ rubygems_version: 1.8.17
227
210
  signing_key:
228
211
  specification_version: 3
229
212
  summary: Roles library with resource scoping
@@ -241,6 +224,7 @@ test_files:
241
224
  - spec/rolify/shared_examples/shared_examples_for_has_all_roles.rb
242
225
  - spec/rolify/shared_examples/shared_examples_for_has_any_role.rb
243
226
  - spec/rolify/shared_examples/shared_examples_for_has_role.rb
227
+ - spec/rolify/shared_examples/shared_examples_for_only_has_role.rb
244
228
  - spec/rolify/shared_examples/shared_examples_for_remove_role.rb
245
229
  - spec/rolify/shared_examples/shared_examples_for_roles.rb
246
230
  - spec/rolify/shared_examples/shared_examples_for_scopes.rb