canard 0.3.2 → 0.3.4

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/TODO CHANGED
@@ -3,4 +3,7 @@
3
3
  * Expand the tests to produce all the standard abilities: index,show,read,new,create,edit,update,destroy.
4
4
  * Add test unit generator.
5
5
  * Add install generator to allow overriding of the default tests.
6
- * Make the Ability user referece configureable.
6
+ * Make the Ability user referece configureable in Ability.
7
+ * Abstract out the ActiveRecord extensions into a model adapter.
8
+ * Make the roles_attribute_name configureable in UserModel.
9
+ * Remove ActiveSupport runtime dependency.
@@ -1,7 +1,7 @@
1
1
  module Canard
2
2
 
3
3
  module UserModel
4
-
4
+
5
5
  # Canard applies roles to a model using the acts_as_user class method. The following User model
6
6
  # will be given the :manager and :admin roles
7
7
  #
@@ -11,10 +11,23 @@ module Canard
11
11
  #
12
12
  # end
13
13
  #
14
+ # If using Canard with a non ActiveRecord class you can still assign roles but you will need to
15
+ # extend the class with Canard::UserModel and add a roles_mask attribute.
16
+ #
17
+ # class User
18
+ #
19
+ # extend Canard::UserModel
20
+ #
21
+ # attr_accessor :roles_mask
22
+ #
23
+ # acts_as_user :roles => :manager, :admin
24
+ #
25
+ # end
26
+ #
14
27
  # == Scopes
15
28
  #
16
29
  # Beyond applying the roles to model acts_as_user also creates some useful scopes on the User
17
- # model;
30
+ # model for ActiveRecord models;
18
31
  #
19
32
  # User.with_any_role(:manager, :admin)
20
33
  #
@@ -44,23 +57,36 @@ module Canard
44
57
 
45
58
  options = args.extract_options!.symbolize_keys
46
59
 
47
- roles options[:roles] if options.has_key?(:roles) && column_names.include?(roles_attribute_name.to_s)
48
-
49
- valid_roles.each do |role|
50
- define_scopes_for_role role
51
- end
52
-
53
- define_scope_method(:with_any_role) do |*roles|
54
- where("#{role_mask_column} & :role_mask > 0", { :role_mask => mask_for(*roles) })
55
- end
56
-
57
- define_scope_method(:with_all_roles) do |*roles|
58
- where("#{role_mask_column} & :role_mask = :role_mask", { :role_mask => mask_for(*roles) })
60
+ roles options[:roles] if options.has_key?(:roles) && has_roles_mask_attribute? || has_roles_mask_accessors?
61
+
62
+ if respond_to?(:table_exists?) && table_exists?
63
+ valid_roles.each do |role|
64
+ define_scopes_for_role role
65
+ end
66
+
67
+ define_scope_method(:with_any_role) do |*roles|
68
+ where("#{role_mask_column} & :role_mask > 0", { :role_mask => mask_for(*roles) })
69
+ end
70
+
71
+ define_scope_method(:with_all_roles) do |*roles|
72
+ where("#{role_mask_column} & :role_mask = :role_mask", { :role_mask => mask_for(*roles) })
73
+ end
59
74
  end
60
75
  end
61
-
76
+
62
77
  private
63
-
78
+
79
+ def has_roles_mask_accessors?
80
+ instance_method_names = instance_methods.map { |method_name| method_name.to_s }
81
+ [roles_attribute_name.to_s, "#{roles_attribute_name}="].all? do |accessor|
82
+ instance_method_names.include?(accessor)
83
+ end
84
+ end
85
+
86
+ def has_roles_mask_attribute?
87
+ respond_to?(:column_names) && column_names.include?(roles_attribute_name.to_s)
88
+ end
89
+
64
90
  def define_scopes_for_role(role)
65
91
  include_scope = role.to_s.pluralize
66
92
  exclude_scope = "non_#{include_scope}"
@@ -73,17 +99,17 @@ module Canard
73
99
  where("#{role_mask_column} & :role_mask = 0 or #{role_mask_column} is null", { :role_mask => mask_for(role) })
74
100
  end
75
101
  end
76
-
102
+
77
103
  def define_scope_method(method, &block)
78
104
  (class << self; self end).class_eval do
79
105
  define_method(method, block)
80
106
  end
81
107
  end
82
-
108
+
83
109
  def role_mask_column
84
110
  %{"#{table_name}"."#{roles_attribute_name}"}
85
111
  end
86
112
 
87
113
  end
88
114
 
89
- end
115
+ end
@@ -1,3 +1,3 @@
1
1
  module Canard
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.4"
3
3
  end
@@ -0,0 +1,7 @@
1
+ class PlainRubyNonUser
2
+
3
+ extend Canard::UserModel
4
+
5
+ acts_as_user :roles => [:viewer, :author, :admin]
6
+
7
+ end
@@ -0,0 +1,9 @@
1
+ class PlainRubyUser
2
+
3
+ extend Canard::UserModel
4
+
5
+ attr_accessor :roles_mask
6
+
7
+ acts_as_user :roles => [:viewer, :author, :admin]
8
+
9
+ end
@@ -1,7 +1,5 @@
1
1
  class User < ActiveRecord::Base
2
2
 
3
- extend Canard::UserModel
4
-
5
3
  acts_as_user :roles => [:viewer, :author, :admin]
6
4
 
7
5
  attr_accessible :roles
@@ -1,6 +1,5 @@
1
1
  class UserWithoutRole < ActiveRecord::Base
2
2
 
3
- extend Canard::UserModel
4
3
  acts_as_user
5
4
 
6
5
  attr_accessible :roles
@@ -1,6 +1,5 @@
1
1
  class UserWithoutRoleMask < ActiveRecord::Base
2
2
 
3
- extend Canard::UserModel
4
3
  acts_as_user
5
4
 
6
5
  attr_accessible :roles
@@ -21,11 +21,11 @@ ActiveRecord::Schema.define(:version => 20120430083231) do
21
21
  end
22
22
 
23
23
  create_table "user_without_roles", :force => true do |t|
24
- t.string "roles_mask"
24
+ t.integer "roles_mask"
25
25
  end
26
26
 
27
27
  create_table "users", :force => true do |t|
28
- t.string "roles_mask"
28
+ t.integer "roles_mask"
29
29
  end
30
30
 
31
31
  end
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  gem 'minitest'
2
3
  require 'minitest/autorun'
3
4
  require 'active_record'
@@ -2,11 +2,11 @@ require 'test_helper'
2
2
  require 'canard'
3
3
 
4
4
  describe Canard::UserModel do
5
-
5
+
6
6
  before do
7
7
  Canard.abilities_path = 'abilities'
8
8
  end
9
-
9
+
10
10
  # Sanity test
11
11
  it "must be an user" do
12
12
  user = User.new
@@ -16,44 +16,61 @@ describe Canard::UserModel do
16
16
  user = UserWithoutRoleMask.new
17
17
  user.must_be_instance_of UserWithoutRoleMask
18
18
  end
19
-
19
+
20
20
  describe 'acts_as_user' do
21
-
21
+
22
22
  it 'should add role_model to this model' do
23
23
  User.included_modules.must_include RoleModel
24
24
  User.must_respond_to :roles
25
25
  end
26
-
26
+
27
27
  describe 'on a model with a role mask' do
28
-
28
+
29
29
  describe 'and :roles => [] specified' do
30
-
31
- it 'should set the valid_roles for the class' do
30
+
31
+ it 'sets the valid_roles for the class' do
32
32
  User.valid_roles.must_equal [:viewer, :author, :admin]
33
33
  end
34
-
34
+
35
35
  end
36
-
36
+
37
37
  describe 'with no :roles => [] specified' do
38
-
39
- it 'should not set any roles' do
38
+
39
+ it 'sets no roles' do
40
40
  UserWithoutRole.valid_roles.must_equal []
41
41
  end
42
42
  end
43
-
43
+
44
44
  end
45
-
46
- describe 'with no roles_mask' do
47
-
48
- it 'should not set any roles' do
45
+
46
+ describe 'on a model with no roles_mask' do
47
+
48
+ it 'sets no roles' do
49
49
  UserWithoutRole.valid_roles.must_equal []
50
50
  end
51
51
  end
52
-
52
+
53
+ describe "on a non ActiveRecord User class" do
54
+
55
+ describe "with a roles_mask attribute" do
56
+
57
+ it "assigns the roles" do
58
+ PlainRubyUser.valid_roles.must_equal [:viewer, :author, :admin]
59
+ end
60
+ end
61
+
62
+ describe "with no roles_mask" do
63
+
64
+ it "sets no roles" do
65
+ PlainRubyNonUser.valid_roles.must_equal []
66
+ end
67
+ end
68
+
69
+ end
53
70
  end
54
71
 
55
72
  describe "scopes" do
56
-
73
+
57
74
  before do
58
75
  @no_role = User.create
59
76
  @admin_author_viewer = User.create(:roles => [:admin, :author, :viewer])
@@ -62,38 +79,38 @@ describe Canard::UserModel do
62
79
  @admin_only = User.create(:roles => [:admin])
63
80
  @author_only = User.create(:roles => [:author])
64
81
  end
65
-
82
+
66
83
  after do
67
84
  User.delete_all
68
85
  end
69
-
86
+
70
87
  describe "on models with roles" do
71
-
88
+
72
89
  subject { User }
73
-
74
- it "should add a scope to return instances with each role" do
90
+
91
+ it "adds a scope to return instances with each role" do
75
92
  subject.must_respond_to :admins
76
93
  subject.must_respond_to :authors
77
94
  subject.must_respond_to :viewers
78
95
  end
79
-
80
- it "should add a scope to return instances without each role" do
96
+
97
+ it "adds a scope to return instances without each role" do
81
98
  subject.must_respond_to :non_admins
82
99
  subject.must_respond_to :non_authors
83
100
  subject.must_respond_to :non_viewers
84
101
  end
85
-
102
+
86
103
  describe "finding instances with a role" do
87
-
104
+
88
105
  describe "admins scope" do
89
106
 
90
107
  subject { User.admins.sort_by(&:id) }
91
108
 
92
- it "should return only admins" do
109
+ it "returns only admins" do
93
110
  subject.must_equal [@admin_author_viewer, @admin_only].sort_by(&:id)
94
111
  end
95
112
 
96
- it "should not return non admins" do
113
+ it "doesn't return non admins" do
97
114
  subject.wont_include @no_role
98
115
  subject.wont_include @author_viewer
99
116
  subject.wont_include @author_only
@@ -106,11 +123,11 @@ describe Canard::UserModel do
106
123
 
107
124
  subject { User.authors.sort_by(&:id) }
108
125
 
109
- it "should return only authors" do
126
+ it "returns only authors" do
110
127
  subject.must_equal [@admin_author_viewer, @author_viewer, @author_only].sort_by(&:id)
111
128
  end
112
129
 
113
- it "should not return non authors" do
130
+ it "doesn't return non authors" do
114
131
  subject.wont_include @no_role
115
132
  subject.wont_include @admin_only
116
133
  subject.wont_include @viewer
@@ -122,11 +139,11 @@ describe Canard::UserModel do
122
139
 
123
140
  subject { User.viewers.sort_by(&:id) }
124
141
 
125
- it "should return only viewers" do
142
+ it "returns only viewers" do
126
143
  subject.must_equal [@admin_author_viewer, @author_viewer, @viewer].sort_by(&:id)
127
144
  end
128
145
 
129
- it "should not return non authors" do
146
+ it "doesn't return non authors" do
130
147
  subject.wont_include @no_role
131
148
  subject.wont_include @admin_only
132
149
  subject.wont_include @author_only
@@ -135,18 +152,18 @@ describe Canard::UserModel do
135
152
  end
136
153
 
137
154
  end
138
-
155
+
139
156
  describe "finding instances without a role" do
140
-
157
+
141
158
  describe "non_admins scope" do
142
159
 
143
160
  subject { User.non_admins.sort_by(&:id) }
144
161
 
145
- it "should return only non_admins" do
162
+ it "returns only non_admins" do
146
163
  subject.must_equal [@no_role, @author_viewer, @viewer, @author_only].sort_by(&:id)
147
164
  end
148
165
 
149
- it "should not return admins" do
166
+ it "doesn't return admins" do
150
167
  subject.wont_include @admin_author_viewer
151
168
  subject.wont_include @admin_only
152
169
  end
@@ -157,11 +174,11 @@ describe Canard::UserModel do
157
174
 
158
175
  subject { User.non_authors.sort_by(&:id) }
159
176
 
160
- it "should return only non_authors" do
177
+ it "returns only non_authors" do
161
178
  subject.must_equal [@no_role, @viewer, @admin_only].sort_by(&:id)
162
179
  end
163
180
 
164
- it "should not return authors" do
181
+ it "doesn't return authors" do
165
182
  subject.wont_include @admin_author_viewer
166
183
  subject.wont_include @author_viewer
167
184
  subject.wont_include @author_only
@@ -173,11 +190,11 @@ describe Canard::UserModel do
173
190
 
174
191
  subject { User.non_viewers.sort_by(&:id) }
175
192
 
176
- it "should return only non_viewers" do
193
+ it "returns only non_viewers" do
177
194
  subject.must_equal [@no_role, @admin_only, @author_only].sort_by(&:id)
178
195
  end
179
196
 
180
- it "should not return viewers" do
197
+ it "doesn't return viewers" do
181
198
  subject.wont_include @admin_author_viewer
182
199
  subject.wont_include @author_viewer
183
200
  subject.wont_include @viewer
@@ -186,18 +203,18 @@ describe Canard::UserModel do
186
203
  end
187
204
 
188
205
  end
189
-
206
+
190
207
  describe "with_any_role" do
191
-
208
+
192
209
  describe "specifying admin only" do
193
210
 
194
211
  subject { User.with_any_role(:admin).sort_by(&:id) }
195
212
 
196
- it "should return only admins" do
213
+ it "returns only admins" do
197
214
  subject.must_equal [@admin_author_viewer, @admin_only].sort_by(&:id)
198
215
  end
199
216
 
200
- it "should not return non admins" do
217
+ it "doesn't return non admins" do
201
218
  subject.wont_include @no_role
202
219
  subject.wont_include @author_viewer
203
220
  subject.wont_include @author_only
@@ -210,11 +227,11 @@ describe Canard::UserModel do
210
227
 
211
228
  subject { User.with_any_role(:author).sort_by(&:id) }
212
229
 
213
- it "should return only authors" do
230
+ it "returns only authors" do
214
231
  subject.must_equal [@admin_author_viewer, @author_viewer, @author_only].sort_by(&:id)
215
232
  end
216
233
 
217
- it "should not return non authors" do
234
+ it "doesn't return non authors" do
218
235
  subject.wont_include @no_role
219
236
  subject.wont_include @admin_only
220
237
  subject.wont_include @viewer
@@ -226,11 +243,11 @@ describe Canard::UserModel do
226
243
 
227
244
  subject { User.with_any_role(:viewer).sort_by(&:id) }
228
245
 
229
- it "should return only viewers" do
246
+ it "returns only viewers" do
230
247
  subject.must_equal [@admin_author_viewer, @author_viewer, @viewer].sort_by(&:id)
231
248
  end
232
249
 
233
- it "should not return non authors" do
250
+ it "doesn't return non authors" do
234
251
  subject.wont_include @no_role
235
252
  subject.wont_include @admin_only
236
253
  subject.wont_include @author_only
@@ -242,11 +259,11 @@ describe Canard::UserModel do
242
259
 
243
260
  subject { User.with_any_role(:admin, :author).sort_by(&:id) }
244
261
 
245
- it "should return only admins and authors" do
262
+ it "returns only admins and authors" do
246
263
  subject.must_equal [@admin_author_viewer, @author_viewer, @admin_only, @author_only].sort_by(&:id)
247
264
  end
248
265
 
249
- it "should not return non admins or authors" do
266
+ it "doesn't return non admins or authors" do
250
267
  subject.wont_include @no_role
251
268
  subject.wont_include @viewer
252
269
  end
@@ -257,11 +274,11 @@ describe Canard::UserModel do
257
274
 
258
275
  subject { User.with_any_role(:admin, :viewer).sort_by(&:id) }
259
276
 
260
- it "should return only admins and viewers" do
277
+ it "returns only admins and viewers" do
261
278
  subject.must_equal [@admin_author_viewer, @author_viewer, @admin_only, @viewer].sort_by(&:id)
262
279
  end
263
280
 
264
- it "should not return non admins or viewers" do
281
+ it "doesn't return non admins or viewers" do
265
282
  subject.wont_include @no_role
266
283
  subject.wont_include @author_only
267
284
  end
@@ -272,11 +289,11 @@ describe Canard::UserModel do
272
289
 
273
290
  subject { User.with_any_role(:author, :viewer).sort_by(&:id) }
274
291
 
275
- it "should return only authors and viewers" do
292
+ it "returns only authors and viewers" do
276
293
  subject.must_equal [@admin_author_viewer, @author_viewer, @author_only, @viewer].sort_by(&:id)
277
294
  end
278
295
 
279
- it "should not return non authors or viewers" do
296
+ it "doesn't return non authors or viewers" do
280
297
  subject.wont_include @no_role
281
298
  subject.wont_include @admin_only
282
299
  end
@@ -287,29 +304,29 @@ describe Canard::UserModel do
287
304
 
288
305
  subject { User.with_any_role(:admin, :author, :viewer).sort_by(&:id) }
289
306
 
290
- it "should return only admins, authors and viewers" do
307
+ it "returns only admins, authors and viewers" do
291
308
  subject.must_equal [@admin_author_viewer, @author_viewer, @admin_only, @author_only, @viewer].sort_by(&:id)
292
309
  end
293
310
 
294
- it "should not return non admins, authors or viewers" do
311
+ it "doesn't return non admins, authors or viewers" do
295
312
  subject.wont_include @no_role
296
313
  end
297
314
 
298
315
  end
299
316
 
300
317
  end
301
-
318
+
302
319
  describe "with_all_roles" do
303
-
320
+
304
321
  describe "specifying admin only" do
305
322
 
306
323
  subject { User.with_all_roles(:admin).sort_by(&:id) }
307
324
 
308
- it "should return only admins" do
325
+ it "returns only admins" do
309
326
  subject.must_equal [@admin_author_viewer, @admin_only].sort_by(&:id)
310
327
  end
311
328
 
312
- it "should not return non admins" do
329
+ it "doesn't return non admins" do
313
330
  subject.wont_include @no_role
314
331
  subject.wont_include @author_viewer
315
332
  subject.wont_include @author_only
@@ -322,11 +339,11 @@ describe Canard::UserModel do
322
339
 
323
340
  subject { User.with_all_roles(:author).sort_by(&:id) }
324
341
 
325
- it "should return only authors" do
342
+ it "returns only authors" do
326
343
  subject.must_equal [@admin_author_viewer, @author_viewer, @author_only].sort_by(&:id)
327
344
  end
328
345
 
329
- it "should not return non authors" do
346
+ it "doesn't return non authors" do
330
347
  subject.wont_include @no_role
331
348
  subject.wont_include @admin_only
332
349
  subject.wont_include @viewer
@@ -338,11 +355,11 @@ describe Canard::UserModel do
338
355
 
339
356
  subject { User.with_all_roles(:viewer).sort_by(&:id) }
340
357
 
341
- it "should return only viewers" do
358
+ it "returns only viewers" do
342
359
  subject.must_equal [@admin_author_viewer, @author_viewer, @viewer].sort_by(&:id)
343
360
  end
344
361
 
345
- it "should not return non authors" do
362
+ it "doesn't return non authors" do
346
363
  subject.wont_include @no_role
347
364
  subject.wont_include @admin_only
348
365
  subject.wont_include @author_only
@@ -354,11 +371,11 @@ describe Canard::UserModel do
354
371
 
355
372
  subject { User.with_all_roles(:admin, :author).sort_by(&:id) }
356
373
 
357
- it "should return only admins and authors" do
374
+ it "returns only admins and authors" do
358
375
  subject.must_equal [@admin_author_viewer].sort_by(&:id)
359
376
  end
360
377
 
361
- it "should not return non admin and authors" do
378
+ it "doesn't return non admin and authors" do
362
379
  subject.wont_include @no_role
363
380
  subject.wont_include @author_viewer
364
381
  subject.wont_include @author_only
@@ -372,11 +389,11 @@ describe Canard::UserModel do
372
389
 
373
390
  subject { User.with_all_roles(:admin, :viewer).sort_by(&:id) }
374
391
 
375
- it "should return only admins and viewers" do
392
+ it "returns only admins and viewers" do
376
393
  subject.must_equal [@admin_author_viewer].sort_by(&:id)
377
394
  end
378
395
 
379
- it "should not return non admins or viewers" do
396
+ it "doesn't return non admins or viewers" do
380
397
  subject.wont_include @no_role
381
398
  subject.wont_include @author_viewer
382
399
  subject.wont_include @author_only
@@ -390,11 +407,11 @@ describe Canard::UserModel do
390
407
 
391
408
  subject { User.with_all_roles(:author, :viewer).sort_by(&:id) }
392
409
 
393
- it "should return only authors and viewers" do
410
+ it "returns only authors and viewers" do
394
411
  subject.must_equal [@admin_author_viewer, @author_viewer].sort_by(&:id)
395
412
  end
396
413
 
397
- it "should not return non authors or viewers" do
414
+ it "doesn't return non authors or viewers" do
398
415
  subject.wont_include @no_role
399
416
  subject.wont_include @admin_only
400
417
  subject.wont_include @author_only
@@ -407,11 +424,11 @@ describe Canard::UserModel do
407
424
 
408
425
  subject { User.with_all_roles(:admin, :author, :viewer).sort_by(&:id) }
409
426
 
410
- it "should return only admins, authors and viewers" do
427
+ it "returns only admins, authors and viewers" do
411
428
  subject.must_equal [@admin_author_viewer].sort_by(&:id)
412
429
  end
413
430
 
414
- it "should not return non admins, authors or viewers" do
431
+ it "doesn't return non admins, authors or viewers" do
415
432
  subject.wont_include @no_role
416
433
  subject.wont_include @author_viewer
417
434
  subject.wont_include @author_only
@@ -422,9 +439,26 @@ describe Canard::UserModel do
422
439
  end
423
440
 
424
441
  end
425
-
442
+
443
+ end
444
+
445
+ describe "on a non ActiveRecord class" do
446
+
447
+ subject { PlainRubyUser }
448
+
449
+ it "creates no scope methods" do
450
+ subject.wont_respond_to :admins
451
+ subject.wont_respond_to :authors
452
+ subject.wont_respond_to :viewers
453
+ subject.wont_respond_to :non_admins
454
+ subject.wont_respond_to :non_authors
455
+ subject.wont_respond_to :non_viewers
456
+ subject.wont_respond_to :with_any_role
457
+ subject.wont_respond_to :with_all_roles
458
+ end
459
+
426
460
  end
427
461
 
428
462
  end
429
-
463
+
430
464
  end
metadata CHANGED
@@ -1,90 +1,118 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: canard
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 4
10
+ version: 0.3.4
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - James McCarthy
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-05-05 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-05-12 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: minitest
16
- requirement: &2152514380 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
25
+ requirements:
19
26
  - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '2'
27
+ - !ruby/object:Gem::Version
28
+ hash: 7
29
+ segments:
30
+ - 2
31
+ version: "2"
22
32
  type: :development
23
- prerelease: false
24
- version_requirements: *2152514380
25
- - !ruby/object:Gem::Dependency
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
26
35
  name: sqlite3
27
- requirement: &2152513960 !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
28
38
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
33
46
  type: :development
34
- prerelease: false
35
- version_requirements: *2152513960
36
- - !ruby/object:Gem::Dependency
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
37
49
  name: rails
38
- requirement: &2152510540 !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
39
52
  none: false
40
- requirements:
53
+ requirements:
41
54
  - - ~>
42
- - !ruby/object:Gem::Version
55
+ - !ruby/object:Gem::Version
56
+ hash: 9
57
+ segments:
58
+ - 3
59
+ - 2
60
+ - 3
43
61
  version: 3.2.3
44
62
  type: :development
45
- prerelease: false
46
- version_requirements: *2152510540
47
- - !ruby/object:Gem::Dependency
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
48
65
  name: activesupport
49
- requirement: &2152510080 !ruby/object:Gem::Requirement
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
50
68
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
55
76
  type: :runtime
56
- prerelease: false
57
- version_requirements: *2152510080
58
- - !ruby/object:Gem::Dependency
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
59
79
  name: cancan
60
- requirement: &2152509620 !ruby/object:Gem::Requirement
80
+ prerelease: false
81
+ requirement: &id005 !ruby/object:Gem::Requirement
61
82
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
66
90
  type: :runtime
67
- prerelease: false
68
- version_requirements: *2152509620
69
- - !ruby/object:Gem::Dependency
91
+ version_requirements: *id005
92
+ - !ruby/object:Gem::Dependency
70
93
  name: role_model
71
- requirement: &2152509200 !ruby/object:Gem::Requirement
94
+ prerelease: false
95
+ requirement: &id006 !ruby/object:Gem::Requirement
72
96
  none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
77
104
  type: :runtime
78
- prerelease: false
79
- version_requirements: *2152509200
80
- description: Wraps CanCan and RoleModel up to make role based authorisation really
81
- easy in Rails 3.x.
82
- email:
105
+ version_requirements: *id006
106
+ description: Wraps CanCan and RoleModel up to make role based authorisation really easy in Rails 3.x.
107
+ email:
83
108
  - james2mccarthy@gmail.com
84
109
  executables: []
110
+
85
111
  extensions: []
112
+
86
113
  extra_rdoc_files: []
87
- files:
114
+
115
+ files:
88
116
  - .gitignore
89
117
  - Gemfile
90
118
  - MIT-LICENSE
@@ -117,6 +145,8 @@ files:
117
145
  - test/dummy/app/controllers/application_controller.rb
118
146
  - test/dummy/app/models/activity.rb
119
147
  - test/dummy/app/models/member.rb
148
+ - test/dummy/app/models/plain_ruby_non_user.rb
149
+ - test/dummy/app/models/plain_ruby_user.rb
120
150
  - test/dummy/app/models/post.rb
121
151
  - test/dummy/app/models/user.rb
122
152
  - test/dummy/app/models/user_without_role.rb
@@ -143,29 +173,38 @@ files:
143
173
  - test/user_model_test.rb
144
174
  homepage: https://github.com/james2m/canard
145
175
  licenses: []
176
+
146
177
  post_install_message:
147
178
  rdoc_options: []
148
- require_paths:
179
+
180
+ require_paths:
149
181
  - lib
150
- required_ruby_version: !ruby/object:Gem::Requirement
182
+ required_ruby_version: !ruby/object:Gem::Requirement
151
183
  none: false
152
- requirements:
153
- - - ! '>='
154
- - !ruby/object:Gem::Version
155
- version: '0'
156
- required_rubygems_version: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ hash: 3
188
+ segments:
189
+ - 0
190
+ version: "0"
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
192
  none: false
158
- requirements:
159
- - - ! '>='
160
- - !ruby/object:Gem::Version
161
- version: '0'
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ hash: 3
197
+ segments:
198
+ - 0
199
+ version: "0"
162
200
  requirements: []
201
+
163
202
  rubyforge_project: canard
164
- rubygems_version: 1.8.12
203
+ rubygems_version: 1.8.21
165
204
  signing_key:
166
205
  specification_version: 3
167
206
  summary: Adds role based authorisation to Rails by combining RoleModel and CanCan.
168
- test_files:
207
+ test_files:
169
208
  - test/abilities/admins.rb
170
209
  - test/abilities_test.rb
171
210
  - test/ability_test.rb
@@ -178,6 +217,8 @@ test_files:
178
217
  - test/dummy/app/controllers/application_controller.rb
179
218
  - test/dummy/app/models/activity.rb
180
219
  - test/dummy/app/models/member.rb
220
+ - test/dummy/app/models/plain_ruby_non_user.rb
221
+ - test/dummy/app/models/plain_ruby_user.rb
181
222
  - test/dummy/app/models/post.rb
182
223
  - test/dummy/app/models/user.rb
183
224
  - test/dummy/app/models/user_without_role.rb