cancan-permits 0.3.7 → 0.3.8

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.txt CHANGED
@@ -1,3 +1,6 @@
1
+ ## Jan 9, 2011
2
+ Compatibility with CanCan 1.5
3
+
1
4
  ## Nov 25, 2010
2
5
 
3
6
  Fixed some generator issues and split generator into:
data/Gemfile ADDED
@@ -0,0 +1,19 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :default do
4
+ gem 'cancan', ">= 1.4.1"
5
+ gem 'require_all', "~> 1.2.0"
6
+ gem 'sugar-high', "~> 0.3.0"
7
+ gem 'rails3_artifactor', "~> 0.3.1"
8
+ gem 'activemodel', ">= 3.0.1"
9
+ gem 'activesupport', ">= 3.0.1"
10
+ gem 'activeresource', ">= 3.0.1"
11
+ gem 'logging_assist', ">= 0.1.6"
12
+ end
13
+
14
+ group :development, :test do
15
+ gem "rspec", ">= 2.0.1"
16
+ gem 'code-spec', "~> 0.2.9"
17
+ gem 'rails-app-spec', "~> 0.3.1"
18
+ end
19
+
data/README.markdown CHANGED
@@ -45,141 +45,30 @@ Modify the User model in 'models/user.rb' (optional)
45
45
  end
46
46
  </pre>
47
47
 
48
- ## Load Permissions from yaml files
48
+ ## Permits configuration
49
49
 
50
- Permissions can be defined in yaml files in the config directory of your Rails app.
51
- These permissions will then be applied at the appropriate point when calculation permissions of the user.
50
+ Permits can be configured [using permits configuration files](https://github.com/kristianmandrup/cancan-permits/wiki/Using-permits-configuration-files)
52
51
 
53
- * Individual user permissions
54
- * Permits
55
- * Licenses
52
+ ### Users, roles and permissions
56
53
 
57
- ### Permission editor
54
+ _CanCan permits_ requires that you have some kind of 'role system' in place and that _User#has_role?_ returns whether the user has a given role (pass role argument as symbol or string). You can either add a 'role' directly to the _User_ class or fx use a [Roles Generic](https://github.com/kristianmandrup/roles_generic) role strategy.
58
55
 
59
- A simple [Permits editor](https://github.com/kristianmandrup/permits_editor) is available. This is a Rails 3 app which provides a web interface to
60
- edit the permits config files for: user permissions, permits and licenses.
56
+ ## Application configuration for CanCan Permits
61
57
 
62
- I would like to have this editor refactored into an engine and later into a mountable app so that this administrative interface can easily be integrated into a Cream app.
58
+ * Define roles that Users can have
59
+ * Define which roles are available
60
+ * Define a Permit for each role.
61
+ * For each Permit, define what Users with a role matching the permit can do
63
62
 
64
- _You are most welcome to help in this effort ;)_
63
+ To add roles to your app, you might consider using a *roles* gem such as [Roles Generic](http://github.com/kristianmandrup/roles_generic) or any of the ORM specific variants.
65
64
 
66
- ### Individual user permissions
65
+ CanCan permits is integrated with [CanCan REST links](https://github.com/kristianmandrup/cancan-rest-links), letting you easily control which users have access to which models in your app.
67
66
 
68
- You can define individual user permissions in a yaml file.
69
-
70
- YAML file: _config/user_permissions.yml_
67
+ Note that [Cream](https://github.com/kristianmandrup/cream) has a _full_config_ generator that automatically configures all this for you in a standard configuration which integrates all the various parts (and even supports multiple ORMs) !!!
71
68
 
72
- Each key at the top level is expected to match an email value for a user.
69
+ ### Define which roles are available
73
70
 
74
- Example yaml config file:
75
- <pre>abc@mail.ru:
76
- can:
77
- update: [Comment, Fruit, Car, Friendship]
78
- manage:
79
- - Article
80
- owns:
81
- - User
82
- mike.shedlock@acc.com:
83
- can:
84
- read:
85
- - all
86
- cannot:
87
- update:
88
- - Post
89
- </pre>
90
-
91
- Loading YAML user_permits file in a Permit:
92
- <pre>class AdminPermit < Permit::Base
93
- def initialize(ability, options = {})
94
- super
95
- end
96
-
97
- def permit?(user, options = {})
98
- super
99
- return if !role_match? user
100
- can :manage, :all
101
-
102
- load_rules user
103
- end
104
- end
105
- </pre>
106
-
107
- The call to #load_rules will call both _#load_user_roles_ and _#load_role_rules_. Hence by default it applies both the _user_permits_ and _permits_ config files.
108
- If you want, you can call these methods individually in case only want to apply one set of rules.
109
-
110
- ### Permit rules
111
-
112
- YAML file: _config/permits.yml_
113
-
114
- Each key at the top level is expected to match a permit/role name.
115
-
116
- Example yml config file:
117
- <pre>admin:
118
- can:
119
- manage:
120
- - Article
121
- - Post
122
- guest:
123
- can:
124
- manage:
125
- - all
126
- cannot:
127
- manage:
128
- - User
129
- </pre>
130
-
131
- As you can see
132
-
133
- ### License permissions
134
-
135
- YAML file: _config/licenses.yml_
136
-
137
- Each key at the top level is expected to match a license name.
138
-
139
- Example yml config file:
140
-
141
- <pre>blogging:
142
- can:
143
- manage:
144
- - Article
145
- - Post
146
- admin:
147
- can:
148
- manage:
149
- - all
150
- cannot:
151
- manage:
152
- - User
153
- </pre>
154
-
155
- Usage in a license:
156
- <pre>class UserAdminLicense < License::Base
157
- def initialize name
158
- super
159
- end
160
-
161
- def enforce!
162
- can(:manage, User)
163
-
164
- load_rules
165
- end
166
- </pre>
167
-
168
- ### User Roles
169
-
170
- _CanCan permits_ requires that you have some kind of Role system in place and that User#has_role? uses this Role system.
171
- You can either add a 'role' field directly to User or fx use a [Roles Generic ](https://github.com/kristianmandrup/roles_generic) role strategy.
172
-
173
- ## Usage
174
-
175
- * Define Roles that Users can have
176
- * Define which Roles are available
177
- * Define a Permit for each Role.
178
- * For each Permit, define what that Role can do
179
-
180
- To add Roles to your app, you might consider using a *roles* gem such as [Roles Generic](http://github.com/kristianmandrup/roles_generic) or any of the ORM specific variants.
181
-
182
- ### Define which Roles are available
71
+ _CanCan permits_ uses the following strategy to discover which roles are available in the app.
183
72
 
184
73
  Default configuration:
185
74
  <pre>module Permits::Roles
@@ -211,41 +100,27 @@ Permit example:
211
100
  end
212
101
 
213
102
  def permit?(user, options = {})
214
- super
215
- return if !role_match? user
216
- can :manage, :all
103
+ return if !role_match? user
104
+
105
+ can(:read, Blog)
106
+ can(:manage, Article)
107
+ owns(user, Post)
217
108
  end
218
109
  end
219
110
  </pre>
220
111
 
221
- ## Special Permits
222
-
223
- The Permits generator always generates the special permits *Any* and *System*.
224
-
225
- ### Any permit
112
+ Alternatively you can use <code>return if !super user, :in_role</code> to exit if the user doesn't have a role that matches the Permit.
113
+ This will in effect execute the same test.
226
114
 
227
- The Any permit, can be used to set permissions that should hold true for a user in any role.
228
- F.ex, maybe in your app, any user should be able to read comments, articles and posts:
115
+ _Ownership permission:_
229
116
 
230
- For this to hold true, put the following permit logic in your Any permit.
231
- <pre>can :read, [Comment, Article, Post]</pre>
117
+ The _owns_ call is a special built-in way to define ownership permission. The #_owns_ call can also pe used inside Permits.
118
+ If a user owns an object instance that user will automatically have :manage permissions to that object instance.
232
119
 
233
- ### System permit
120
+ ### Special permits
234
121
 
235
- The System permit is run before any of the other permits. This gives you a chance to control the permission flow.
236
- By returning a value of :break you force a break-out from the permission flow, ensuring none of the other permits are run.
237
-
238
- Example:
239
- The system permit can be used to allow management of all resources when the request is from localhost (which usually means "in development mode").
240
- By default this logic is setup and ready to go.
241
-
242
- You can configure this simply by setting the following boolean class variable:
243
-
244
- <code>Permits::Configuration.localhost_manager = true</code>
245
-
246
- ## Default roles
247
-
248
- By default the permits for the roles System and Guest are also generated.
122
+ The Permits system uses some [special permits](https://github.com/kristianmandrup/cancan-permits/wiki/Special-permits) that can be configured for
123
+ avanced permission scenarios as described in the wiki.
249
124
 
250
125
  ### Licenses
251
126
 
@@ -268,7 +143,7 @@ License example:
268
143
  end
269
144
  </pre>
270
145
 
271
- Usage example:
146
+ Licenses usage example:
272
147
  <pre>class GuestPermit < Permit::Base
273
148
  def initialize(ability, options = {})
274
149
  super
@@ -286,9 +161,9 @@ end
286
161
 
287
162
  The permits system will try to find a license named UserAdminLicense and BloggingLicense in this example and then call _#enforce!_ on each license.
288
163
 
289
- ## ORMs
164
+ ## Using Permits with an ORM
290
165
 
291
- The easiest option is to directly set the orm as a class variable. An appropriate ownership strategy will be selected accordingly for the ORM.
166
+ The easiest option is to directly set the orm as a class variable. An appropriate 'ownership strategy' will be selected accordingly for the ORM.
292
167
 
293
168
  <pre>
294
169
  Permits::Ability.orm = :data_mapper
@@ -297,9 +172,9 @@ The easiest option is to directly set the orm as a class variable. An appropriat
297
172
  The ORMs currently supported (and tested) are :active_record, :data_mapper, :mongoid, :mongo_mapper
298
173
 
299
174
  For more fine grained control, you can set a :strategy option directly on the Ability instance. This way the ownership strategy is set explicitly.
300
- The current valid values are :default and :string.
175
+ The current valid values are _:default_ and _:string_.
301
176
 
302
- The strategy option :string can be used for most ORMs. Setting orm to :active_record or :generic makes use of the :default strategy.
177
+ The strategy option :string can be used for most ORMs. Setting _orm__ to _:active_record_ or _:generic_ makes use of the _:default_ strategy.
303
178
  All the other ORMs use the :string ownership strategy,
304
179
 
305
180
  Note: You can dive into the code and implement your own strategy if needed.
@@ -328,7 +203,7 @@ Advanced #permit? functionality:
328
203
  end
329
204
  </pre>
330
205
 
331
- ### Global manage permission for localhost
206
+ ### Configuring global management permission for localhost
332
207
 
333
208
  The Permits system allows a global setting in order to allow localhost to manage all objects. This can be useful in development or administration mode.
334
209
 
@@ -337,8 +212,6 @@ To configure permits to allow localhost to manage objects:
337
212
  Permits::Configuration.localhost_manager = true
338
213
  </code>
339
214
 
340
- Please provide suggestions and feedback on how to improve this :)
341
-
342
215
  Assuming the following:
343
216
  - a request object is present
344
217
  - the host of the request is 'localhost'
@@ -348,6 +221,8 @@ Then the user is allowed to manage all objects and no other Permits will be eval
348
221
 
349
222
  Note: In the code above, the built in <code>#localhost_manager?</code> method is used.
350
223
 
224
+ _Please provide suggestions and feedback on how to improve this :)_
225
+
351
226
  ## Generators
352
227
 
353
228
  The gem comes with the following generators
@@ -357,100 +232,7 @@ The gem comes with the following generators
357
232
  * cancan:licenses - generate multiple licenses
358
233
  * cancan:license - generate a single license
359
234
 
360
- ## Permits Generator
361
-
362
- Generates one or more permits in _app/permits_
363
-
364
- Options
365
- * --orm : The ORM to use (active_record, data_mapper, mongoid, mongo_mapper) - creates a Rails initializer
366
- * --initializer : A Rails 3 initializer file for Permits is generated by default. Use --no-initializer option to disable this
367
- * --roles : The roles for which to generate permits ; default Guest (read all) and Admin (manage all)
368
- * --default-permits : By default :guest and :admin permits are generated. Use --no-default-permits option to disable this
369
-
370
- <code>$ rails g cancan:permits --orm active_record --roles guest author admin</code>
371
-
372
- ### What does the generator generate?
373
-
374
- To get an understanding of what the generator generates for a Rails 3 application, try to run the spec _permit_generator_spec.rb_ with _RSpec 2_ as follows:
375
-
376
- In the file _permits_generator_spec.rb_ make the following change <code>config.remove_temp_dir = false</code>
377
- This will prevent the rails /tmp dir from being deleted after the test run, so you can inspect what is generated in the Rails app.
378
-
379
- Now run the generator spec to see the result:
380
- <code>$ rspec spec/generators/cancan/permits_generator_spec.rb</code>
381
-
382
- ## Licenses Generator
383
-
384
- Generates one or more licenses in _app/licenses_
385
-
386
- Options
387
- * --licenses : The licenses to generate; default UserAdmin and Blogging licenses are generated
388
- * --default-licenses : By default exemplar licenses are generated. Use --no-default-licenses option to disable this
389
-
390
- Run examples:
391
-
392
- Generate default licenses:
393
-
394
- <code>$ rails g cancan:licenses</code>
395
-
396
- Genereate specific licenses (no defaults):
397
-
398
- <code>$ rails g cancan:licenses profile_administration article_editing --no-default-licenses</code>
399
-
400
- Create both specific and default licenses:
401
-
402
- <code>$ rails g cancan:licenses profile_administration article_editing</code>
403
-
404
- ### What does the generator generate?
405
-
406
- To get an understanding of what the generator generates for a Rails 3 application, try to run the spec _licenses_generator_spec.rb_ with rspec 2 as follows:
407
-
408
- In the file _licenses_generator_spec.rb_ make the following change <code>config.remove_temp_dir = false</code>
409
- This will prevent the rails /tmp dir from being deleted after the test run, so you can inspect what is generated in the Rails app.
410
-
411
- Now run the generator spec to see the result:
412
- <code>$ rspec spec/generators/cancan/licenses_generator_spec.rb</code>
413
-
414
-
415
- ## License Generator
416
-
417
- Generates a single license in _app/licenses_
418
-
419
- <code>rails g cancan:license [NAME]</code>
420
-
421
- Options
422
- * --creates : The models that have 'creates' permission for the holder of this license
423
- * --owns : The models that have 'owns' permission for the holder of this license
424
- * --manages : The models that have 'manages' permission for the holder of this license
425
- * --read : The models that have 'read' permission for the holder of this license
426
-
427
- Run examples:
428
-
429
- Generate licenses:
430
-
431
- <code>$ rails g cancan:license blog_editing --owns article post --read blog --licenses blogging</code>
432
-
433
- ## Permit Generator
434
-
435
- Generates a single license in _app/permits_
436
-
437
- <code>rails g cancan:permit [ROLE]</code>
438
-
439
- Options
440
- * --creates : The models that have 'creates' permission for the holder of this license
441
- * --owns : The models that have 'owns' permission for the holder of this license
442
- * --manages : The models that have 'manages' permission for the holder of this license
443
- * --read : The models that have 'read' permission for the holder of this license
444
-
445
- Run examples:
446
-
447
- Generate licenses:
448
-
449
- <code>$ rails g cancan:permit editor --owns article post --read blog --licenses blog_editing</code>
450
-
451
- # TODO
452
-
453
- The Permits generator should attempt to attempt to uncover which roles are currently defined as available to the system, trying Cream#available_roles and then User#roles. It could then generate permits for those roles. Any roles specified in the --roles option should be merged with the roles available in the app.
235
+ The generators are described in detail [here](https://github.com/kristianmandrup/cancan-permits/wiki/Permits-and-License-generators)
454
236
 
455
237
  ## Note on Patches/Pull Requests
456
238
 
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ begin
11
11
  gem.add_development_dependency 'code-spec', "~> 0.2.9"
12
12
  gem.add_development_dependency 'rails-app-spec', "~> 0.3.1"
13
13
 
14
- gem.add_dependency 'cancan', "~> 1.4.1"
14
+ gem.add_dependency 'cancan', ">= 1.4.1"
15
15
  gem.add_dependency 'require_all', "~> 1.2.0"
16
16
  gem.add_dependency 'sugar-high', "~> 0.3.0"
17
17
  gem.add_dependency 'rails3_artifactor', "~> 0.3.1"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.7
1
+ 0.3.8
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cancan-permits}
8
- s.version = "0.3.7"
8
+ s.version = "0.3.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kristian Mandrup"]
12
- s.date = %q{2010-12-24}
12
+ s.date = %q{2011-01-09}
13
13
  s.description = %q{Role specific Permits for use with CanCan permission system}
14
14
  s.email = %q{kmandrup@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  ".document",
21
21
  ".rspec",
22
22
  "Changelog.txt",
23
+ "Gemfile",
23
24
  "LICENSE",
24
25
  "README.markdown",
25
26
  "Rakefile",
@@ -169,10 +170,21 @@ Gem::Specification.new do |s|
169
170
  s.specification_version = 3
170
171
 
171
172
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
173
+ s.add_runtime_dependency(%q<cancan>, [">= 1.4.1"])
174
+ s.add_runtime_dependency(%q<require_all>, ["~> 1.2.0"])
175
+ s.add_runtime_dependency(%q<sugar-high>, ["~> 0.3.0"])
176
+ s.add_runtime_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
177
+ s.add_runtime_dependency(%q<activemodel>, [">= 3.0.1"])
178
+ s.add_runtime_dependency(%q<activesupport>, [">= 3.0.1"])
179
+ s.add_runtime_dependency(%q<activeresource>, [">= 3.0.1"])
180
+ s.add_runtime_dependency(%q<logging_assist>, [">= 0.1.6"])
172
181
  s.add_development_dependency(%q<rspec>, [">= 2.0.1"])
173
182
  s.add_development_dependency(%q<code-spec>, ["~> 0.2.9"])
174
183
  s.add_development_dependency(%q<rails-app-spec>, ["~> 0.3.1"])
175
- s.add_runtime_dependency(%q<cancan>, ["~> 1.4.1"])
184
+ s.add_development_dependency(%q<rspec>, [">= 2.0.1"])
185
+ s.add_development_dependency(%q<code-spec>, ["~> 0.2.9"])
186
+ s.add_development_dependency(%q<rails-app-spec>, ["~> 0.3.1"])
187
+ s.add_runtime_dependency(%q<cancan>, [">= 1.4.1"])
176
188
  s.add_runtime_dependency(%q<require_all>, ["~> 1.2.0"])
177
189
  s.add_runtime_dependency(%q<sugar-high>, ["~> 0.3.0"])
178
190
  s.add_runtime_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
@@ -181,10 +193,21 @@ Gem::Specification.new do |s|
181
193
  s.add_runtime_dependency(%q<activeresource>, [">= 3.0.1"])
182
194
  s.add_runtime_dependency(%q<logging_assist>, [">= 0.1.6"])
183
195
  else
196
+ s.add_dependency(%q<cancan>, [">= 1.4.1"])
197
+ s.add_dependency(%q<require_all>, ["~> 1.2.0"])
198
+ s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
199
+ s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
200
+ s.add_dependency(%q<activemodel>, [">= 3.0.1"])
201
+ s.add_dependency(%q<activesupport>, [">= 3.0.1"])
202
+ s.add_dependency(%q<activeresource>, [">= 3.0.1"])
203
+ s.add_dependency(%q<logging_assist>, [">= 0.1.6"])
204
+ s.add_dependency(%q<rspec>, [">= 2.0.1"])
205
+ s.add_dependency(%q<code-spec>, ["~> 0.2.9"])
206
+ s.add_dependency(%q<rails-app-spec>, ["~> 0.3.1"])
184
207
  s.add_dependency(%q<rspec>, [">= 2.0.1"])
185
208
  s.add_dependency(%q<code-spec>, ["~> 0.2.9"])
186
209
  s.add_dependency(%q<rails-app-spec>, ["~> 0.3.1"])
187
- s.add_dependency(%q<cancan>, ["~> 1.4.1"])
210
+ s.add_dependency(%q<cancan>, [">= 1.4.1"])
188
211
  s.add_dependency(%q<require_all>, ["~> 1.2.0"])
189
212
  s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
190
213
  s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
@@ -194,10 +217,21 @@ Gem::Specification.new do |s|
194
217
  s.add_dependency(%q<logging_assist>, [">= 0.1.6"])
195
218
  end
196
219
  else
220
+ s.add_dependency(%q<cancan>, [">= 1.4.1"])
221
+ s.add_dependency(%q<require_all>, ["~> 1.2.0"])
222
+ s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
223
+ s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
224
+ s.add_dependency(%q<activemodel>, [">= 3.0.1"])
225
+ s.add_dependency(%q<activesupport>, [">= 3.0.1"])
226
+ s.add_dependency(%q<activeresource>, [">= 3.0.1"])
227
+ s.add_dependency(%q<logging_assist>, [">= 0.1.6"])
228
+ s.add_dependency(%q<rspec>, [">= 2.0.1"])
229
+ s.add_dependency(%q<code-spec>, ["~> 0.2.9"])
230
+ s.add_dependency(%q<rails-app-spec>, ["~> 0.3.1"])
197
231
  s.add_dependency(%q<rspec>, [">= 2.0.1"])
198
232
  s.add_dependency(%q<code-spec>, ["~> 0.2.9"])
199
233
  s.add_dependency(%q<rails-app-spec>, ["~> 0.3.1"])
200
- s.add_dependency(%q<cancan>, ["~> 1.4.1"])
234
+ s.add_dependency(%q<cancan>, [">= 1.4.1"])
201
235
  s.add_dependency(%q<require_all>, ["~> 1.2.0"])
202
236
  s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
203
237
  s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
@@ -66,16 +66,19 @@ module Permit
66
66
  @role_permissions = ::PermissionsLoader.load_permits options[:permits_file]
67
67
  end
68
68
 
69
- def permit?(user, options = {})
69
+ def permit?(user, options = {})
70
+ if options == :in_role
71
+ return true if !role_match? user
72
+ end
70
73
  false
71
74
  end
72
75
 
73
76
  def can(action, subject, conditions = nil, &block)
74
- can_definitions << CanCan::CanDefinition.new(true, action, subject, conditions, block)
77
+ can_definitions << rule_class.new(true, action, subject, conditions, block)
75
78
  end
76
79
 
77
80
  def cannot(action, subject, conditions = nil, &block)
78
- can_definitions << CanCan::CanDefinition.new(false, action, subject, conditions, block)
81
+ can_definitions << rule_class.new(false, action, subject, conditions, block)
79
82
  end
80
83
 
81
84
  def owns(user, clazz, ownership_relation = :user_id, user_id_attribute = :id, strategy_used = nil)
@@ -102,6 +105,12 @@ module Permit
102
105
  end
103
106
 
104
107
  protected
108
+
109
+ # CanCan 1.5 compatibility
110
+ def rule_class
111
+ return CanCan::Rule if defined? CanCan::Rule
112
+ CanCan::CanDefinition
113
+ end
105
114
 
106
115
  include Permit::Util
107
116
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 7
9
- version: 0.3.7
8
+ - 8
9
+ version: 0.3.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kristian Mandrup
@@ -14,13 +14,132 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-24 00:00:00 +01:00
17
+ date: 2011-01-09 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: rspec
22
- prerelease: false
21
+ name: cancan
23
22
  requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 4
30
+ - 1
31
+ version: 1.4.1
32
+ type: :runtime
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: require_all
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 1
44
+ - 2
45
+ - 0
46
+ version: 1.2.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: sugar-high
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ segments:
58
+ - 0
59
+ - 3
60
+ - 0
61
+ version: 0.3.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: rails3_artifactor
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ segments:
73
+ - 0
74
+ - 3
75
+ - 1
76
+ version: 0.3.1
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: activemodel
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 3
89
+ - 0
90
+ - 1
91
+ version: 3.0.1
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: activesupport
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ segments:
103
+ - 3
104
+ - 0
105
+ - 1
106
+ version: 3.0.1
107
+ type: :runtime
108
+ prerelease: false
109
+ version_requirements: *id006
110
+ - !ruby/object:Gem::Dependency
111
+ name: activeresource
112
+ requirement: &id007 !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ segments:
118
+ - 3
119
+ - 0
120
+ - 1
121
+ version: 3.0.1
122
+ type: :runtime
123
+ prerelease: false
124
+ version_requirements: *id007
125
+ - !ruby/object:Gem::Dependency
126
+ name: logging_assist
127
+ requirement: &id008 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ segments:
133
+ - 0
134
+ - 1
135
+ - 6
136
+ version: 0.1.6
137
+ type: :runtime
138
+ prerelease: false
139
+ version_requirements: *id008
140
+ - !ruby/object:Gem::Dependency
141
+ name: rspec
142
+ requirement: &id009 !ruby/object:Gem::Requirement
24
143
  none: false
25
144
  requirements:
26
145
  - - ">="
@@ -31,11 +150,11 @@ dependencies:
31
150
  - 1
32
151
  version: 2.0.1
33
152
  type: :development
34
- version_requirements: *id001
153
+ prerelease: false
154
+ version_requirements: *id009
35
155
  - !ruby/object:Gem::Dependency
36
156
  name: code-spec
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
157
+ requirement: &id010 !ruby/object:Gem::Requirement
39
158
  none: false
40
159
  requirements:
41
160
  - - ~>
@@ -46,11 +165,11 @@ dependencies:
46
165
  - 9
47
166
  version: 0.2.9
48
167
  type: :development
49
- version_requirements: *id002
168
+ prerelease: false
169
+ version_requirements: *id010
50
170
  - !ruby/object:Gem::Dependency
51
171
  name: rails-app-spec
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
172
+ requirement: &id011 !ruby/object:Gem::Requirement
54
173
  none: false
55
174
  requirements:
56
175
  - - ~>
@@ -61,14 +180,59 @@ dependencies:
61
180
  - 1
62
181
  version: 0.3.1
63
182
  type: :development
64
- version_requirements: *id003
183
+ prerelease: false
184
+ version_requirements: *id011
65
185
  - !ruby/object:Gem::Dependency
66
- name: cancan
186
+ name: rspec
187
+ requirement: &id012 !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ segments:
193
+ - 2
194
+ - 0
195
+ - 1
196
+ version: 2.0.1
197
+ type: :development
67
198
  prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
199
+ version_requirements: *id012
200
+ - !ruby/object:Gem::Dependency
201
+ name: code-spec
202
+ requirement: &id013 !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ~>
206
+ - !ruby/object:Gem::Version
207
+ segments:
208
+ - 0
209
+ - 2
210
+ - 9
211
+ version: 0.2.9
212
+ type: :development
213
+ prerelease: false
214
+ version_requirements: *id013
215
+ - !ruby/object:Gem::Dependency
216
+ name: rails-app-spec
217
+ requirement: &id014 !ruby/object:Gem::Requirement
69
218
  none: false
70
219
  requirements:
71
220
  - - ~>
221
+ - !ruby/object:Gem::Version
222
+ segments:
223
+ - 0
224
+ - 3
225
+ - 1
226
+ version: 0.3.1
227
+ type: :development
228
+ prerelease: false
229
+ version_requirements: *id014
230
+ - !ruby/object:Gem::Dependency
231
+ name: cancan
232
+ requirement: &id015 !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ">="
72
236
  - !ruby/object:Gem::Version
73
237
  segments:
74
238
  - 1
@@ -76,11 +240,11 @@ dependencies:
76
240
  - 1
77
241
  version: 1.4.1
78
242
  type: :runtime
79
- version_requirements: *id004
243
+ prerelease: false
244
+ version_requirements: *id015
80
245
  - !ruby/object:Gem::Dependency
81
246
  name: require_all
82
- prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
247
+ requirement: &id016 !ruby/object:Gem::Requirement
84
248
  none: false
85
249
  requirements:
86
250
  - - ~>
@@ -91,11 +255,11 @@ dependencies:
91
255
  - 0
92
256
  version: 1.2.0
93
257
  type: :runtime
94
- version_requirements: *id005
258
+ prerelease: false
259
+ version_requirements: *id016
95
260
  - !ruby/object:Gem::Dependency
96
261
  name: sugar-high
97
- prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
262
+ requirement: &id017 !ruby/object:Gem::Requirement
99
263
  none: false
100
264
  requirements:
101
265
  - - ~>
@@ -106,11 +270,11 @@ dependencies:
106
270
  - 0
107
271
  version: 0.3.0
108
272
  type: :runtime
109
- version_requirements: *id006
273
+ prerelease: false
274
+ version_requirements: *id017
110
275
  - !ruby/object:Gem::Dependency
111
276
  name: rails3_artifactor
112
- prerelease: false
113
- requirement: &id007 !ruby/object:Gem::Requirement
277
+ requirement: &id018 !ruby/object:Gem::Requirement
114
278
  none: false
115
279
  requirements:
116
280
  - - ~>
@@ -121,11 +285,11 @@ dependencies:
121
285
  - 1
122
286
  version: 0.3.1
123
287
  type: :runtime
124
- version_requirements: *id007
288
+ prerelease: false
289
+ version_requirements: *id018
125
290
  - !ruby/object:Gem::Dependency
126
291
  name: activemodel
127
- prerelease: false
128
- requirement: &id008 !ruby/object:Gem::Requirement
292
+ requirement: &id019 !ruby/object:Gem::Requirement
129
293
  none: false
130
294
  requirements:
131
295
  - - ">="
@@ -136,11 +300,11 @@ dependencies:
136
300
  - 1
137
301
  version: 3.0.1
138
302
  type: :runtime
139
- version_requirements: *id008
303
+ prerelease: false
304
+ version_requirements: *id019
140
305
  - !ruby/object:Gem::Dependency
141
306
  name: activesupport
142
- prerelease: false
143
- requirement: &id009 !ruby/object:Gem::Requirement
307
+ requirement: &id020 !ruby/object:Gem::Requirement
144
308
  none: false
145
309
  requirements:
146
310
  - - ">="
@@ -151,11 +315,11 @@ dependencies:
151
315
  - 1
152
316
  version: 3.0.1
153
317
  type: :runtime
154
- version_requirements: *id009
318
+ prerelease: false
319
+ version_requirements: *id020
155
320
  - !ruby/object:Gem::Dependency
156
321
  name: activeresource
157
- prerelease: false
158
- requirement: &id010 !ruby/object:Gem::Requirement
322
+ requirement: &id021 !ruby/object:Gem::Requirement
159
323
  none: false
160
324
  requirements:
161
325
  - - ">="
@@ -166,11 +330,11 @@ dependencies:
166
330
  - 1
167
331
  version: 3.0.1
168
332
  type: :runtime
169
- version_requirements: *id010
333
+ prerelease: false
334
+ version_requirements: *id021
170
335
  - !ruby/object:Gem::Dependency
171
336
  name: logging_assist
172
- prerelease: false
173
- requirement: &id011 !ruby/object:Gem::Requirement
337
+ requirement: &id022 !ruby/object:Gem::Requirement
174
338
  none: false
175
339
  requirements:
176
340
  - - ">="
@@ -181,7 +345,8 @@ dependencies:
181
345
  - 6
182
346
  version: 0.1.6
183
347
  type: :runtime
184
- version_requirements: *id011
348
+ prerelease: false
349
+ version_requirements: *id022
185
350
  description: Role specific Permits for use with CanCan permission system
186
351
  email: kmandrup@gmail.com
187
352
  executables: []
@@ -195,6 +360,7 @@ files:
195
360
  - .document
196
361
  - .rspec
197
362
  - Changelog.txt
363
+ - Gemfile
198
364
  - LICENSE
199
365
  - README.markdown
200
366
  - Rakefile