rolify 3.3.0.rc4 → 3.3.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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +0 -6
- data/Gemfile +5 -1
- data/README.md +70 -56
- data/Rakefile +4 -1
- data/gemfiles/Gemfile.rails-3.2 +5 -1
- data/gemfiles/Gemfile.rails-4.0 +5 -4
- data/lib/generators/mongoid/rolify_generator.rb +1 -1
- data/lib/generators/rolify/templates/README +1 -1
- data/lib/rolify.rb +12 -9
- data/lib/rolify/adapters/active_record/resource_adapter.rb +1 -0
- data/lib/rolify/adapters/active_record/role_adapter.rb +5 -1
- data/lib/rolify/railtie.rb +1 -1
- data/lib/rolify/role.rb +3 -5
- data/lib/rolify/version.rb +1 -1
- data/spec/generators/rolify/{rolify_generator_spec.rb → rolify_activerecord_generator_spec.rb} +13 -104
- data/spec/generators/rolify/rolify_mongoid_generator_spec.rb +112 -0
- data/spec/generators_helper.rb +8 -1
- data/spec/rolify/namespace_spec.rb +4 -0
- data/spec/rolify/resource_spec.rb +7 -0
- data/spec/rolify/shared_examples/shared_examples_for_callbacks.rb +12 -4
- data/spec/rolify/shared_examples/shared_examples_for_dynamic.rb +42 -1
- data/spec/rolify/shared_examples/shared_examples_for_roles.rb +4 -2
- data/spec/rolify/shared_examples/shared_examples_for_scopes.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- data/spec/support/adapters/active_record.rb +3 -3
- data/spec/support/schema.rb +1 -1
- metadata +31 -46
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: adb734bf9468069dbead78c35683ac1ace1525d8
|
4
|
+
data.tar.gz: b4a221f3435dda2c84ccccf7086bc4a41eadda8d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7168a6699067f23cf85cb6b74b599a043e26720be10c9746e7910cc7cbdc296b5d9ffe5922ea2d8484167ccb3c9c6ce6c347efddb20c14c7d843791d0f186e52
|
7
|
+
data.tar.gz: 2f701c24d16d9dccbac72a270a93f9cd6e470dd60584c548812a97a09458b75f00829d5b0320ae3ab080d123c713c2c5ad32282b4c615b8ebf11e672dd576de9
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -3,7 +3,7 @@ source "https://rubygems.org"
|
|
3
3
|
case ENV["ADAPTER"]
|
4
4
|
when nil, "active_record"
|
5
5
|
group :test do
|
6
|
-
gem "activerecord-jdbcsqlite3-adapter", :platform => "jruby"
|
6
|
+
gem "activerecord-jdbcsqlite3-adapter", ">= 1.3.0.rc", :platform => "jruby"
|
7
7
|
gem "sqlite3", :platform => "ruby"
|
8
8
|
end
|
9
9
|
gem "activerecord", ">= 3.2.0", :require => "active_record"
|
@@ -14,4 +14,8 @@ else
|
|
14
14
|
raise "Unknown model adapter: #{ENV["ADAPTER"]}"
|
15
15
|
end
|
16
16
|
|
17
|
+
group :test do
|
18
|
+
gem 'coveralls', :require => false
|
19
|
+
end
|
20
|
+
|
17
21
|
gemspec
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
# rolify [](http://badge.fury.io/rb/rolify) [](http://travis-ci.org/EppO/rolify) [](https://gemnasium.com/EppO/rolify) [](https://codeclimate.com/github/EppO/rolify)
|
1
|
+
# rolify [](http://badge.fury.io/rb/rolify) [](http://travis-ci.org/EppO/rolify) [](https://gemnasium.com/EppO/rolify) [](https://codeclimate.com/github/EppO/rolify) [](https://coveralls.io/r/EppO/rolify)
|
2
|
+
|
2
3
|
|
3
4
|
Very simple Roles library without any authorization enforcement supporting scope on resource object.
|
4
5
|
|
@@ -25,7 +26,7 @@ This library can be easily integrated with any authentication gem ([devise](http
|
|
25
26
|
In <b>Rails 3</b>, add this to your Gemfile and run the +bundle+ command.
|
26
27
|
|
27
28
|
```ruby
|
28
|
-
|
29
|
+
gem "rolify"
|
29
30
|
```
|
30
31
|
|
31
32
|
## Getting Started
|
@@ -35,7 +36,13 @@ In <b>Rails 3</b>, add this to your Gemfile and run the +bundle+ command.
|
|
35
36
|
First, create your Role model and migration file using this generator:
|
36
37
|
|
37
38
|
```
|
38
|
-
|
39
|
+
rails g rolify Role User
|
40
|
+
```
|
41
|
+
|
42
|
+
**NB** for versions of Rolify prior to 3.3, use:
|
43
|
+
|
44
|
+
```
|
45
|
+
rails g rolify:role Role User
|
39
46
|
```
|
40
47
|
|
41
48
|
Role and User classes are the default. You can specify any Role class name you want. This is completly a new file so any name can do the job.
|
@@ -48,7 +55,7 @@ If you want to use Mongoid instead of ActiveRecord, just add `--orm=mongoid` arg
|
|
48
55
|
Let's migrate !
|
49
56
|
|
50
57
|
```
|
51
|
-
|
58
|
+
rake db:migrate
|
52
59
|
```
|
53
60
|
|
54
61
|
### 3.1 Configure your user model
|
@@ -56,13 +63,13 @@ Let's migrate !
|
|
56
63
|
This gem adds the `rolify` method to your User class. You can also specify optional callbacks on the User class for when roles are added or removed:
|
57
64
|
|
58
65
|
```ruby
|
59
|
-
|
60
|
-
|
66
|
+
class User < ActiveRecord::Base
|
67
|
+
rolify :before_add => :before_add_method
|
61
68
|
|
62
|
-
|
63
|
-
|
64
|
-
end
|
69
|
+
def before_add_method(role)
|
70
|
+
# do something before it gets added
|
65
71
|
end
|
72
|
+
end
|
66
73
|
```
|
67
74
|
|
68
75
|
The `rolify` method accepts the following callback options:
|
@@ -90,22 +97,22 @@ end
|
|
90
97
|
To define a global role:
|
91
98
|
|
92
99
|
```ruby
|
93
|
-
|
94
|
-
|
100
|
+
user = User.find(1)
|
101
|
+
user.add_role :admin
|
95
102
|
```
|
96
103
|
|
97
104
|
To define a role scoped to a resource instance
|
98
105
|
|
99
106
|
```ruby
|
100
|
-
|
101
|
-
|
107
|
+
user = User.find(2)
|
108
|
+
user.add_role :moderator, Forum.first
|
102
109
|
```
|
103
110
|
|
104
111
|
To define a role scoped to a resource class
|
105
112
|
|
106
113
|
```ruby
|
107
|
-
|
108
|
-
|
114
|
+
user = User.find(3)
|
115
|
+
user.add_role :moderator, Forum
|
109
116
|
```
|
110
117
|
|
111
118
|
That's it !
|
@@ -115,45 +122,45 @@ That's it !
|
|
115
122
|
To check if a user has a global role:
|
116
123
|
|
117
124
|
```ruby
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
125
|
+
user = User.find(1)
|
126
|
+
user.add_role :admin # sets a global role
|
127
|
+
user.has_role? :admin
|
128
|
+
=> true
|
122
129
|
```
|
123
130
|
|
124
131
|
To check if a user has a role scoped to a resource instance:
|
125
132
|
|
126
133
|
```ruby
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
134
|
+
user = User.find(2)
|
135
|
+
user.add_role :moderator, Forum.first # sets a role scoped to a resource instance
|
136
|
+
user.has_role? :moderator, Forum.first
|
137
|
+
=> true
|
138
|
+
user.has_role? :moderator, Forum.last
|
139
|
+
=> false
|
133
140
|
```
|
134
141
|
|
135
142
|
To check if a user has a role scoped to a resource class:
|
136
143
|
|
137
144
|
```ruby
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
145
|
+
user = User.find(3)
|
146
|
+
user.add_role :moderator, Forum # sets a role scoped to a resource class
|
147
|
+
user.has_role? :moderator, Forum
|
148
|
+
=> true
|
149
|
+
user.has_role? :moderator, Forum.first
|
150
|
+
=> true
|
151
|
+
user.has_role? :moderator, Forum.last
|
152
|
+
=> true
|
146
153
|
```
|
147
154
|
|
148
155
|
A global role overrides resource role request:
|
149
156
|
|
150
157
|
```ruby
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
158
|
+
user = User.find(4)
|
159
|
+
user.add_role :moderator # sets a global role
|
160
|
+
user.has_role? :moderator, Forum.first
|
161
|
+
=> true
|
162
|
+
user.has_role? :moderator, Forum.last
|
163
|
+
=> true
|
157
164
|
```
|
158
165
|
|
159
166
|
### 6. Resource roles querying
|
@@ -163,27 +170,30 @@ Starting from rolify 3.0, you can search roles on instance level or class level
|
|
163
170
|
#### Instance level
|
164
171
|
|
165
172
|
```ruby
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
173
|
+
forum = Forum.first
|
174
|
+
forum.roles
|
175
|
+
# => [ list of roles that are only binded to forum instance ]
|
176
|
+
forum.applied_roles
|
177
|
+
# => [ list of roles binded to forum instance and to the Forum class ]
|
171
178
|
```
|
172
179
|
|
173
180
|
#### Class level
|
174
181
|
|
175
182
|
```ruby
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
183
|
+
Forum.with_role(:admin)
|
184
|
+
# => [ list of Forum instances that has role "admin" binded to it ]
|
185
|
+
Forum.with_role(:admin, current_user)
|
186
|
+
# => [ list of Forum instances that has role "admin" binded to it and belongs to current_user roles ]
|
187
|
+
|
188
|
+
User.with_any_role(:user, :admin)
|
189
|
+
# => [ list of User instances that has role "admin" or "user" binded to it ]
|
190
|
+
|
191
|
+
Forum.find_roles
|
192
|
+
# => [ list of roles that binded to any Forum instance or to the Forum class ]
|
193
|
+
Forum.find_roles(:admin)
|
194
|
+
# => [ list of roles that binded to any Forum instance or to the Forum class with "admin" as a role name ]
|
195
|
+
Forum.find_roles(:admin, current_user)
|
196
|
+
# => [ list of roles that binded to any Forum instance or to the Forum class with "admin" as a role name and belongs to current_user roles ]
|
187
197
|
```
|
188
198
|
|
189
199
|
## Resources
|
@@ -199,8 +209,12 @@ Starting from rolify 3.0, you can search roles on instance level or class level
|
|
199
209
|
|
200
210
|
Please read the [upgrade instructions](UPGRADE.rdoc).
|
201
211
|
|
212
|
+
## Known issues
|
213
|
+
|
214
|
+
If you are using Mongoid and/or less-rails gem, please read [this](https://github.com/EppO/rolify/wiki/FAQ#when-i-start-rails-using-server-console-whatever-i-get-this-error)
|
215
|
+
|
202
216
|
## Questions or Problems?
|
203
217
|
|
204
|
-
If you have any issue or feature request with/for rolify, please
|
218
|
+
If you have any issue or feature request with/for rolify, please create an new [issue on GitHub](https://github.com/EppO/rolify/issues) **specifying the ruby runtime, rails and rolify versions you're using and the gems listed in your Gemfile**, or fork the project and send a pull request.
|
205
219
|
|
206
220
|
To get the specs running you should call `bundle` and then `rake`. See the spec/README for more information.
|
data/Rakefile
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
require 'rspec/core/rake_task'
|
3
|
+
require 'coveralls/rake/task'
|
3
4
|
|
4
5
|
Bundler::GemHelper.install_tasks
|
5
6
|
|
7
|
+
Coveralls::RakeTask.new
|
8
|
+
|
6
9
|
RSpec::Core::RakeTask.new(:generators) do |task|
|
7
10
|
task.pattern = "spec/generators/**/*_spec.rb"
|
8
11
|
end
|
@@ -11,7 +14,7 @@ RSpec::Core::RakeTask.new(:rolify) do |task|
|
|
11
14
|
task.pattern = "spec/rolify/**/*_spec.rb"
|
12
15
|
end
|
13
16
|
|
14
|
-
task :default => :spec
|
17
|
+
task :default => [ :spec, 'coveralls:push' ]
|
15
18
|
|
16
19
|
desc "Run all specs"
|
17
20
|
task "spec" do
|
data/gemfiles/Gemfile.rails-3.2
CHANGED
@@ -3,7 +3,7 @@ source "https://rubygems.org"
|
|
3
3
|
case ENV["ADAPTER"]
|
4
4
|
when nil, "active_record"
|
5
5
|
group :test do
|
6
|
-
gem "activerecord-jdbcsqlite3-adapter", :platform => "jruby"
|
6
|
+
gem "activerecord-jdbcsqlite3-adapter", ">= 1.3.0.rc", :platform => "jruby"
|
7
7
|
gem "sqlite3", :platform => "ruby"
|
8
8
|
end
|
9
9
|
gem "activerecord", "~> 3.2.0", :require => "active_record"
|
@@ -14,4 +14,8 @@ else
|
|
14
14
|
raise "Unknown model adapter: #{ENV["ADAPTER"]}"
|
15
15
|
end
|
16
16
|
|
17
|
+
group :test do
|
18
|
+
gem 'coveralls', :require => false
|
19
|
+
end
|
20
|
+
|
17
21
|
gemspec :path => '../'
|
data/gemfiles/Gemfile.rails-4.0
CHANGED
@@ -2,7 +2,7 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
case ENV["ADAPTER"]
|
4
4
|
when nil, "active_record"
|
5
|
-
gem "activerecord", "~> 4.0.0.
|
5
|
+
gem "activerecord", "~> 4.0.0.rc", :require => "active_record"
|
6
6
|
when "mongoid"
|
7
7
|
gem "mongoid", :git => "git://github.com/mongoid/mongoid.git"
|
8
8
|
gem "bson_ext", :platform => "ruby"
|
@@ -11,7 +11,7 @@ else
|
|
11
11
|
end
|
12
12
|
|
13
13
|
group :test do
|
14
|
-
gem "rails", "~> 4.0.0.
|
14
|
+
gem "rails", "~> 4.0.0.rc"
|
15
15
|
gem "ammeter"
|
16
16
|
gem "rake"
|
17
17
|
gem "rspec"
|
@@ -19,8 +19,9 @@ group :test do
|
|
19
19
|
gem "fuubar"
|
20
20
|
gem "bundler"
|
21
21
|
|
22
|
-
gem "activerecord-jdbcsqlite3-adapter", :platform => "jruby"
|
22
|
+
gem "activerecord-jdbcsqlite3-adapter", "~> 1.3.0.beta", :platform => "jruby"
|
23
23
|
gem "sqlite3", :platform => "ruby"
|
24
|
-
gem "activerecord", "~> 4.0.0.
|
24
|
+
gem "activerecord", "~> 4.0.0.rc", :require => "active_record"
|
25
25
|
gem "mongoid", :git => "git://github.com/mongoid/mongoid.git"
|
26
|
+
gem 'coveralls', :require => false
|
26
27
|
end
|
@@ -4,7 +4,7 @@ An initializer file has been created here: config/initializers/rolify.rb, you
|
|
4
4
|
can change rolify settings to match your needs.
|
5
5
|
Defaults values are commented out.
|
6
6
|
|
7
|
-
A Role class has been
|
7
|
+
A Role class has been created in app/models (with the name you gave as
|
8
8
|
argument otherwise the default is role.rb), you can add your own business logic
|
9
9
|
inside.
|
10
10
|
|
data/lib/rolify.rb
CHANGED
@@ -9,19 +9,22 @@ require 'rolify/adapters/base'
|
|
9
9
|
module Rolify
|
10
10
|
extend Configure
|
11
11
|
|
12
|
-
attr_accessor :role_cname, :adapter, :role_table_name
|
12
|
+
attr_accessor :role_cname, :adapter, :role_join_table_name, :role_table_name
|
13
13
|
|
14
14
|
def rolify(options = {})
|
15
15
|
include Role
|
16
16
|
extend Dynamic if Rolify.dynamic_shortcuts
|
17
|
-
|
17
|
+
|
18
18
|
options.reverse_merge!({:role_cname => 'Role'})
|
19
19
|
self.role_cname = options[:role_cname]
|
20
20
|
self.role_table_name = self.role_cname.tableize.gsub(/\//, "_")
|
21
21
|
|
22
|
-
|
22
|
+
default_join_table = "#{self.to_s.tableize.gsub(/\//, "_")}_#{self.role_table_name}"
|
23
|
+
options.reverse_merge!({:role_join_table_name => default_join_table})
|
24
|
+
self.role_join_table_name = options[:role_join_table_name]
|
25
|
+
|
23
26
|
rolify_options = { :class_name => options[:role_cname].camelize }
|
24
|
-
rolify_options.merge!({ :join_table =>
|
27
|
+
rolify_options.merge!({ :join_table => self.role_join_table_name }) if Rolify.orm == "active_record"
|
25
28
|
rolify_options.merge!(options.reject{ |k,v| ![ :before_add, :after_add, :before_remove, :after_remove ].include? k.to_sym })
|
26
29
|
|
27
30
|
has_and_belongs_to_many :roles, rolify_options
|
@@ -32,22 +35,22 @@ module Rolify
|
|
32
35
|
|
33
36
|
def resourcify(association_name = :roles, options = {})
|
34
37
|
include Resource
|
35
|
-
|
38
|
+
|
36
39
|
options.reverse_merge!({ :role_cname => 'Role', :dependent => :destroy })
|
37
40
|
resourcify_options = { :class_name => options[:role_cname].camelize, :as => :resource, :dependent => options[:dependent] }
|
38
41
|
self.role_cname = options[:role_cname]
|
39
42
|
self.role_table_name = self.role_cname.tableize.gsub(/\//, "_")
|
40
43
|
|
41
44
|
has_many association_name, resourcify_options
|
42
|
-
|
45
|
+
|
43
46
|
self.adapter = Rolify::Adapter::Base.create("resource_adapter", self.role_cname, self.name)
|
44
47
|
end
|
45
|
-
|
48
|
+
|
46
49
|
def scopify
|
47
50
|
require "rolify/adapters/#{Rolify.orm}/scopes.rb"
|
48
|
-
extend Rolify::Adapter::Scopes
|
51
|
+
extend Rolify::Adapter::Scopes
|
49
52
|
end
|
50
|
-
|
53
|
+
|
51
54
|
def role_class
|
52
55
|
self.role_cname.constantize
|
53
56
|
end
|
@@ -7,6 +7,7 @@ module Rolify
|
|
7
7
|
resources = relation.joins("INNER JOIN #{quote(roles_table)} ON #{quote(roles_table)}.resource_type = '#{relation.to_s}' AND
|
8
8
|
(#{quote(roles_table)}.resource_id IS NULL OR #{quote(roles_table)}.resource_id = #{quote(relation.table_name)}.#{relation.primary_key})")
|
9
9
|
resources = resources.where("#{quote(roles_table)}.name IN (?) AND #{quote(roles_table)}.resource_type = ?", Array(role_name), relation.to_s)
|
10
|
+
resources = resources.select("#{quote(relation.table_name)}.*")
|
10
11
|
resources
|
11
12
|
end
|
12
13
|
|
@@ -35,7 +35,11 @@ module Rolify
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def scope(relation, conditions)
|
38
|
-
|
38
|
+
if Rails.version < "4.0"
|
39
|
+
query = relation.scoped
|
40
|
+
else
|
41
|
+
query = relation.all
|
42
|
+
end
|
39
43
|
query = query.joins(:roles)
|
40
44
|
query = where(query, conditions)
|
41
45
|
query
|
data/lib/rolify/railtie.rb
CHANGED
data/lib/rolify/role.rb
CHANGED
@@ -64,11 +64,9 @@ module Rolify
|
|
64
64
|
|
65
65
|
def method_missing(method, *args, &block)
|
66
66
|
if method.to_s.match(/^is_(\w+)_of[?]$/) || method.to_s.match(/^is_(\w+)[?]$/)
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
return has_role?("#{$1}", resource)
|
71
|
-
end
|
67
|
+
resource = args.first
|
68
|
+
self.class.define_dynamic_method $1, resource
|
69
|
+
return has_role?("#{$1}", resource)
|
72
70
|
end unless !Rolify.dynamic_shortcuts
|
73
71
|
super
|
74
72
|
end
|
data/lib/rolify/version.rb
CHANGED
data/spec/generators/rolify/{rolify_generator_spec.rb → rolify_activerecord_generator_spec.rb}
RENAMED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'generators_helper'
|
2
2
|
|
3
|
+
require 'rails/all'
|
3
4
|
# Generators are not automatically loaded by Rails
|
4
5
|
require 'generators/rolify/rolify_generator'
|
5
6
|
|
6
|
-
describe Rolify::Generators::RolifyGenerator do
|
7
|
+
describe Rolify::Generators::RolifyGenerator, :if => ENV['ADAPTER'] == 'active_record' do
|
7
8
|
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
9
|
destination File.expand_path("../../../../tmp", __FILE__)
|
9
10
|
teardown :cleanup_destination_root
|
@@ -22,10 +23,10 @@ describe Rolify::Generators::RolifyGenerator do
|
|
22
23
|
before {
|
23
24
|
capture(:stdout) {
|
24
25
|
generator.create_file "app/models/user.rb" do
|
25
|
-
<<-RUBY
|
26
|
-
|
27
|
-
|
28
|
-
RUBY
|
26
|
+
<<-RUBY
|
27
|
+
class User < ActiveRecord::Base
|
28
|
+
end
|
29
|
+
RUBY
|
29
30
|
end
|
30
31
|
}
|
31
32
|
require File.join(destination_root, "app/models/user.rb")
|
@@ -114,13 +115,13 @@ RUBY
|
|
114
115
|
before {
|
115
116
|
capture(:stdout) {
|
116
117
|
generator.create_file "app/models/admin/user.rb" do
|
117
|
-
<<-RUBY
|
118
|
-
module Admin
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
end
|
123
|
-
RUBY
|
118
|
+
<<-RUBY
|
119
|
+
module Admin
|
120
|
+
class User < ActiveRecord::Base
|
121
|
+
self.table_name_prefix = 'admin_'
|
122
|
+
end
|
123
|
+
end
|
124
|
+
RUBY
|
124
125
|
end
|
125
126
|
}
|
126
127
|
require File.join(destination_root, "app/models/admin/user.rb")
|
@@ -159,96 +160,4 @@ RUBY
|
|
159
160
|
it { should contain "create_table(:admin_users_admin_roles, :id => false) do" }
|
160
161
|
end
|
161
162
|
end
|
162
|
-
|
163
|
-
describe 'specifying ORM adapter' do
|
164
|
-
before(:all) { arguments [ "Role", "User", "--orm=mongoid" ] }
|
165
|
-
|
166
|
-
before {
|
167
|
-
capture(:stdout) {
|
168
|
-
generator.create_file "app/models/user.rb" do
|
169
|
-
<<-RUBY
|
170
|
-
class User
|
171
|
-
include Mongoid::Document
|
172
|
-
|
173
|
-
field :login, :type => String
|
174
163
|
end
|
175
|
-
RUBY
|
176
|
-
end
|
177
|
-
}
|
178
|
-
require File.join(destination_root, "app/models/user.rb")
|
179
|
-
run_generator
|
180
|
-
}
|
181
|
-
|
182
|
-
describe 'config/initializers/rolify.rb' do
|
183
|
-
subject { file('config/initializers/rolify.rb') }
|
184
|
-
it { should exist }
|
185
|
-
it { should contain "Rolify.configure do |config|"}
|
186
|
-
it { should_not contain "# config.use_mongoid" }
|
187
|
-
it { should contain "# config.use_dynamic_shortcuts" }
|
188
|
-
end
|
189
|
-
|
190
|
-
describe 'app/models/role.rb' do
|
191
|
-
subject { file('app/models/role.rb') }
|
192
|
-
it { should exist }
|
193
|
-
it { should contain "class Role\n" }
|
194
|
-
it { should contain "has_and_belongs_to_many :users\n" }
|
195
|
-
it { should contain "belongs_to :resource, :polymorphic => true" }
|
196
|
-
it { should contain "field :name, :type => String" }
|
197
|
-
it { should contain " index({\n"
|
198
|
-
" { :name => 1 },\n"
|
199
|
-
" { :resource_type => 1 },\n"
|
200
|
-
" { :resource_id => 1 }\n"
|
201
|
-
" },\n"
|
202
|
-
" { unique => true })"}
|
203
|
-
end
|
204
|
-
|
205
|
-
describe 'app/models/user.rb' do
|
206
|
-
subject { file('app/models/user.rb') }
|
207
|
-
it { should contain /class User\n include Mongoid::Document\n rolify\n/ }
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
describe 'specifying namespaced User and Role class names and ORM adapter' do
|
212
|
-
before(:all) { arguments %w(Admin::Role Admin::User --orm=mongoid) }
|
213
|
-
|
214
|
-
before {
|
215
|
-
capture(:stdout) {
|
216
|
-
generator.create_file "app/models/admin/user.rb" do
|
217
|
-
<<-RUBY
|
218
|
-
module Admin
|
219
|
-
class User
|
220
|
-
include Mongoid::Document
|
221
|
-
end
|
222
|
-
end
|
223
|
-
RUBY
|
224
|
-
end
|
225
|
-
}
|
226
|
-
require File.join(destination_root, "app/models/admin/user.rb")
|
227
|
-
run_generator
|
228
|
-
}
|
229
|
-
|
230
|
-
describe 'config/initializers/rolify.rb' do
|
231
|
-
subject { file('config/initializers/rolify.rb') }
|
232
|
-
|
233
|
-
it { should exist }
|
234
|
-
it { should contain "Rolify.configure(\"Admin::Role\") do |config|"}
|
235
|
-
it { should contain "# config.use_dynamic_shortcuts" }
|
236
|
-
it { should_not contain "# config.use_mongoid" }
|
237
|
-
end
|
238
|
-
|
239
|
-
describe 'app/models/admin/role.rb' do
|
240
|
-
subject { file('app/models/admin/role.rb') }
|
241
|
-
|
242
|
-
it { should exist }
|
243
|
-
it { should contain "class Admin::Role" }
|
244
|
-
it { should contain "has_and_belongs_to_many :admin_users" }
|
245
|
-
it { should contain "belongs_to :resource, :polymorphic => true" }
|
246
|
-
end
|
247
|
-
|
248
|
-
describe 'app/models/admin/user.rb' do
|
249
|
-
subject { file('app/models/admin/user.rb') }
|
250
|
-
|
251
|
-
it { should contain /class User\n include Mongoid::Document\n rolify :role_cname => 'Admin::Role'\n/ }
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'generators_helper'
|
2
|
+
|
3
|
+
require 'mongoid'
|
4
|
+
|
5
|
+
# Generators are not automatically loaded by Rails
|
6
|
+
require 'generators/rolify/rolify_generator'
|
7
|
+
|
8
|
+
describe Rolify::Generators::RolifyGenerator, :if => ENV['ADAPTER'] == 'mongoid' do
|
9
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
10
|
+
destination File.expand_path("../../../../tmp", __FILE__)
|
11
|
+
teardown :cleanup_destination_root
|
12
|
+
|
13
|
+
before {
|
14
|
+
prepare_destination
|
15
|
+
}
|
16
|
+
|
17
|
+
def cleanup_destination_root
|
18
|
+
FileUtils.rm_rf destination_root
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'specifying ORM adapter' do
|
22
|
+
before(:all) { arguments [ "Role", "User", "--orm=mongoid" ] }
|
23
|
+
|
24
|
+
before {
|
25
|
+
capture(:stdout) {
|
26
|
+
generator.create_file "app/models/user.rb" do
|
27
|
+
<<-RUBY
|
28
|
+
class User
|
29
|
+
include Mongoid::Document
|
30
|
+
|
31
|
+
field :login, :type => String
|
32
|
+
end
|
33
|
+
RUBY
|
34
|
+
end
|
35
|
+
}
|
36
|
+
require File.join(destination_root, "app/models/user.rb")
|
37
|
+
run_generator
|
38
|
+
}
|
39
|
+
|
40
|
+
describe 'config/initializers/rolify.rb' do
|
41
|
+
subject { file('config/initializers/rolify.rb') }
|
42
|
+
it { should exist }
|
43
|
+
it { should contain "Rolify.configure do |config|"}
|
44
|
+
it { should_not contain "# config.use_mongoid" }
|
45
|
+
it { should contain "# config.use_dynamic_shortcuts" }
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'app/models/role.rb' do
|
49
|
+
subject { file('app/models/role.rb') }
|
50
|
+
it { should exist }
|
51
|
+
it { should contain "class Role\n" }
|
52
|
+
it { should contain "has_and_belongs_to_many :users\n" }
|
53
|
+
it { should contain "belongs_to :resource, :polymorphic => true" }
|
54
|
+
it { should contain "field :name, :type => String" }
|
55
|
+
it { should contain " index({\n"
|
56
|
+
" { :name => 1 },\n"
|
57
|
+
" { :resource_type => 1 },\n"
|
58
|
+
" { :resource_id => 1 }\n"
|
59
|
+
" },\n"
|
60
|
+
" { unique => true })"}
|
61
|
+
end
|
62
|
+
|
63
|
+
describe 'app/models/user.rb' do
|
64
|
+
subject { file('app/models/user.rb') }
|
65
|
+
it { should contain /class User\n include Mongoid::Document\n rolify\n/ }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe 'specifying namespaced User and Role class names and ORM adapter' do
|
70
|
+
before(:all) { arguments %w(Admin::Role Admin::User --orm=mongoid) }
|
71
|
+
|
72
|
+
before {
|
73
|
+
capture(:stdout) {
|
74
|
+
generator.create_file "app/models/admin/user.rb" do
|
75
|
+
<<-RUBY
|
76
|
+
module Admin
|
77
|
+
class User
|
78
|
+
include Mongoid::Document
|
79
|
+
end
|
80
|
+
end
|
81
|
+
RUBY
|
82
|
+
end
|
83
|
+
}
|
84
|
+
require File.join(destination_root, "app/models/admin/user.rb")
|
85
|
+
run_generator
|
86
|
+
}
|
87
|
+
|
88
|
+
describe 'config/initializers/rolify.rb' do
|
89
|
+
subject { file('config/initializers/rolify.rb') }
|
90
|
+
|
91
|
+
it { should exist }
|
92
|
+
it { should contain "Rolify.configure(\"Admin::Role\") do |config|"}
|
93
|
+
it { should contain "# config.use_dynamic_shortcuts" }
|
94
|
+
it { should_not contain "# config.use_mongoid" }
|
95
|
+
end
|
96
|
+
|
97
|
+
describe 'app/models/admin/role.rb' do
|
98
|
+
subject { file('app/models/admin/role.rb') }
|
99
|
+
|
100
|
+
it { should exist }
|
101
|
+
it { should contain "class Admin::Role" }
|
102
|
+
it { should contain "has_and_belongs_to_many :admin_users" }
|
103
|
+
it { should contain "belongs_to :resource, :polymorphic => true" }
|
104
|
+
end
|
105
|
+
|
106
|
+
describe 'app/models/admin/user.rb' do
|
107
|
+
subject { file('app/models/admin/user.rb') }
|
108
|
+
|
109
|
+
it { should contain /class User\n include Mongoid::Document\n rolify :role_cname => 'Admin::Role'\n/ }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
data/spec/generators_helper.rb
CHANGED
@@ -5,10 +5,17 @@ require 'rolify'
|
|
5
5
|
require 'rolify/matchers'
|
6
6
|
require 'rails/all'
|
7
7
|
|
8
|
+
require 'coveralls'
|
9
|
+
Coveralls.wear_merged!
|
10
|
+
|
8
11
|
module TestApp
|
9
12
|
class Application < ::Rails::Application
|
10
13
|
config.root = File.dirname(__FILE__)
|
11
14
|
end
|
12
15
|
end
|
13
16
|
|
14
|
-
require 'ammeter/init'
|
17
|
+
require 'ammeter/init'
|
18
|
+
|
19
|
+
ENV['ADAPTER'] ||= 'active_record'
|
20
|
+
|
21
|
+
|
@@ -38,9 +38,16 @@ describe Rolify::Resource do
|
|
38
38
|
it "should include Forum instances with forum role" do
|
39
39
|
subject.with_role(:forum).should =~ [ Forum.first, Forum.last ]
|
40
40
|
end
|
41
|
+
|
41
42
|
it "should include Forum instances with godfather role" do
|
42
43
|
subject.with_role(:godfather).should =~ Forum.all.to_a
|
43
44
|
end
|
45
|
+
|
46
|
+
it "should be able to modify the resource", :if => ENV['ADAPTER'] == 'active_record' do
|
47
|
+
forum_resource = subject.with_role(:forum).first
|
48
|
+
forum_resource.name = "modified name"
|
49
|
+
expect(forum_resource.save).not_to raise_error
|
50
|
+
end
|
44
51
|
end
|
45
52
|
|
46
53
|
context "on the Group class" do
|
@@ -12,7 +12,9 @@ shared_examples_for "Rolify.callbacks" do
|
|
12
12
|
describe "rolify association callbacks", :if => (Rolify.orm == "active_record") do
|
13
13
|
describe "before_add" do
|
14
14
|
it "should receive callback" do
|
15
|
-
|
15
|
+
rolify_options = { :role_cname => role_class.to_s, :before_add => :role_callback }
|
16
|
+
rolify_options[:role_join_table_name] = join_table if defined? join_table
|
17
|
+
user_class.rolify rolify_options
|
16
18
|
@user = user_class.first
|
17
19
|
@user.stub(:role_callback)
|
18
20
|
@user.should_receive(:role_callback)
|
@@ -22,7 +24,9 @@ shared_examples_for "Rolify.callbacks" do
|
|
22
24
|
|
23
25
|
describe "after_add" do
|
24
26
|
it "should receive callback" do
|
25
|
-
|
27
|
+
rolify_options = { :role_cname => role_class.to_s, :after_add => :role_callback }
|
28
|
+
rolify_options[:role_join_table_name] = join_table if defined? join_table
|
29
|
+
user_class.rolify rolify_options
|
26
30
|
@user = user_class.first
|
27
31
|
@user.stub(:role_callback)
|
28
32
|
@user.should_receive(:role_callback)
|
@@ -32,7 +36,9 @@ shared_examples_for "Rolify.callbacks" do
|
|
32
36
|
|
33
37
|
describe "before_remove" do
|
34
38
|
it "should receive callback" do
|
35
|
-
|
39
|
+
rolify_options = { :role_cname => role_class.to_s, :before_remove => :role_callback }
|
40
|
+
rolify_options[:role_join_table_name] = join_table if defined? join_table
|
41
|
+
user_class.rolify rolify_options
|
36
42
|
@user = user_class.first
|
37
43
|
@user.add_role :admin
|
38
44
|
@user.stub(:role_callback)
|
@@ -44,7 +50,9 @@ shared_examples_for "Rolify.callbacks" do
|
|
44
50
|
|
45
51
|
describe "after_remove" do
|
46
52
|
it "should receive callback" do
|
47
|
-
|
53
|
+
rolify_options = { :role_cname => role_class.to_s, :after_remove => :role_callback }
|
54
|
+
rolify_options[:role_join_table_name] = join_table if defined? join_table
|
55
|
+
user_class.rolify rolify_options
|
48
56
|
@user = user_class.first
|
49
57
|
@user.add_role :admin
|
50
58
|
@user.stub(:role_callback)
|
@@ -2,7 +2,9 @@ shared_examples_for Rolify::Dynamic do
|
|
2
2
|
before(:all) do
|
3
3
|
Rolify.dynamic_shortcuts = true
|
4
4
|
role_class.destroy_all
|
5
|
-
|
5
|
+
rolify_options = { :role_cname => role_class.to_s }
|
6
|
+
rolify_options[:role_join_table_name] = join_table if defined? join_table
|
7
|
+
user_class.rolify rolify_options
|
6
8
|
Forum.resourcify :roles, :role_cname => role_class.to_s
|
7
9
|
Group.resourcify :roles, :role_cname => role_class.to_s
|
8
10
|
end
|
@@ -12,6 +14,7 @@ shared_examples_for Rolify::Dynamic do
|
|
12
14
|
admin = user_class.first
|
13
15
|
admin.add_role :admin
|
14
16
|
admin.add_role :moderator, Forum.first
|
17
|
+
admin.add_role :solo
|
15
18
|
admin
|
16
19
|
end
|
17
20
|
|
@@ -22,12 +25,22 @@ shared_examples_for Rolify::Dynamic do
|
|
22
25
|
it { subject.is_admin?.should be(true) }
|
23
26
|
it { subject.is_admin?.should be(true) }
|
24
27
|
it { subject.is_admin?.should be(true) }
|
28
|
+
|
29
|
+
context "removing the role on the last user having it" do
|
30
|
+
before do
|
31
|
+
subject.remove_role :solo
|
32
|
+
end
|
33
|
+
|
34
|
+
it { should_not respond_to(:is_solo?) }
|
35
|
+
it { subject.is_solo?.should be(false) }
|
36
|
+
end
|
25
37
|
end
|
26
38
|
|
27
39
|
context "using a resource scoped role" do
|
28
40
|
subject do
|
29
41
|
moderator = user_class.where(:login => "moderator").first
|
30
42
|
moderator.add_role :moderator, Forum.first
|
43
|
+
moderator.add_role :sole_mio, Forum.last
|
31
44
|
moderator
|
32
45
|
end
|
33
46
|
|
@@ -44,12 +57,22 @@ shared_examples_for Rolify::Dynamic do
|
|
44
57
|
it { subject.is_moderator_of?(Group).should be(false) }
|
45
58
|
it { subject.is_moderator_of?(Group.first).should be(false) }
|
46
59
|
it { subject.is_moderator_of?(Group.last).should be(false) }
|
60
|
+
|
61
|
+
context "removing the role on the last user having it" do
|
62
|
+
before do
|
63
|
+
subject.remove_role :sole_mio, Forum.last
|
64
|
+
end
|
65
|
+
|
66
|
+
it { should_not respond_to(:is_sole_mio?) }
|
67
|
+
it { subject.is_sole_mio?.should be(false) }
|
68
|
+
end
|
47
69
|
end
|
48
70
|
|
49
71
|
context "using a class scoped role" do
|
50
72
|
subject do
|
51
73
|
manager = user_class.where(:login => "god").first
|
52
74
|
manager.add_role :manager, Forum
|
75
|
+
manager.add_role :only_me, Forum
|
53
76
|
manager
|
54
77
|
end
|
55
78
|
|
@@ -68,6 +91,15 @@ shared_examples_for Rolify::Dynamic do
|
|
68
91
|
it { subject.is_manager_of?(Group).should be(false) }
|
69
92
|
it { subject.is_manager_of?(Group.first).should be(false) }
|
70
93
|
it { subject.is_manager_of?(Group.last).should be(false) }
|
94
|
+
|
95
|
+
context "removing the role on the last user having it" do
|
96
|
+
before do
|
97
|
+
subject.remove_role :only_me, Forum
|
98
|
+
end
|
99
|
+
|
100
|
+
it { should_not respond_to(:is_only_me?) }
|
101
|
+
it { subject.is_only_me?.should be(false) }
|
102
|
+
end
|
71
103
|
end
|
72
104
|
|
73
105
|
context "if the role doesn't exist in the database" do
|
@@ -85,6 +117,7 @@ shared_examples_for Rolify::Dynamic do
|
|
85
117
|
it { should_not respond_to(:is_god?) }
|
86
118
|
|
87
119
|
it { subject.is_superman?.should be(false) }
|
120
|
+
it { subject.is_god?.should be(false) }
|
88
121
|
end
|
89
122
|
|
90
123
|
context "using a resource scope role" do
|
@@ -105,6 +138,14 @@ shared_examples_for Rolify::Dynamic do
|
|
105
138
|
it { subject.is_batman_of?(Group).should be(false) }
|
106
139
|
it { subject.is_batman_of?(Group.first).should be(false) }
|
107
140
|
it { subject.is_batman_of?(Group.last).should be(false) }
|
141
|
+
|
142
|
+
it { subject.is_god?.should be(false) }
|
143
|
+
it { subject.is_god_of?(Forum).should be(false) }
|
144
|
+
it { subject.is_god_of?(Forum.first).should be(false) }
|
145
|
+
it { subject.is_god_of?(Forum.last).should be(false) }
|
146
|
+
it { subject.is_god_of?(Group).should be(false) }
|
147
|
+
it { subject.is_god_of?(Group.first).should be(false) }
|
148
|
+
it { subject.is_god_of?(Group.last).should be(false) }
|
108
149
|
end
|
109
150
|
end
|
110
151
|
end
|
@@ -11,13 +11,15 @@ shared_examples_for Rolify::Role do
|
|
11
11
|
before(:all) do
|
12
12
|
reset_defaults
|
13
13
|
Rolify.dynamic_shortcuts = false
|
14
|
-
|
14
|
+
rolify_options = { :role_cname => role_class.to_s }
|
15
|
+
rolify_options[:role_join_table_name] = join_table if defined? join_table
|
16
|
+
user_class.rolify rolify_options
|
15
17
|
role_class.destroy_all
|
16
18
|
Forum.resourcify :roles, :role_cname => role_class.to_s
|
17
19
|
Group.resourcify :roles, :role_cname => role_class.to_s
|
18
20
|
end
|
19
21
|
|
20
|
-
context "in the Instance level
|
22
|
+
context "in the Instance level" do
|
21
23
|
before(:all) do
|
22
24
|
admin = user_class.first
|
23
25
|
admin.add_role :admin
|
@@ -28,7 +28,7 @@ shared_examples_for "Role.scopes" do
|
|
28
28
|
let!(:zombie_role) { subject.add_role :visitor, Forum.last }
|
29
29
|
let!(:anonymous_role) { subject.add_role :anonymous, Group.last }
|
30
30
|
|
31
|
-
it { subject.roles.instance_scoped.
|
31
|
+
it { subject.roles.instance_scoped.to_a.entries.should =~ [ visitor_role, zombie_role, anonymous_role ] }
|
32
32
|
it { subject.roles.instance_scoped(Forum).should =~ [ visitor_role, zombie_role ] }
|
33
33
|
it { subject.roles.instance_scoped(Forum.first).should =~ [ visitor_role ] }
|
34
34
|
it { subject.roles.instance_scoped(Forum.last).should =~ [ zombie_role ] }
|
data/spec/spec_helper.rb
CHANGED
@@ -43,11 +43,11 @@ module Admin
|
|
43
43
|
end
|
44
44
|
|
45
45
|
class Moderator < ActiveRecord::Base
|
46
|
-
rolify :role_cname => "Admin::Right"
|
46
|
+
rolify :role_cname => "Admin::Right", :role_join_table_name => "moderators_rights"
|
47
47
|
end
|
48
48
|
|
49
49
|
class Right < ActiveRecord::Base
|
50
|
-
has_and_belongs_to_many :moderators, :class_name => "Admin::Moderator"
|
50
|
+
has_and_belongs_to_many :moderators, :class_name => "Admin::Moderator", :join_table => "moderators_rights"
|
51
51
|
belongs_to :resource, :polymorphic => true
|
52
52
|
|
53
53
|
extend Rolify::Adapter::Scopes
|
@@ -72,5 +72,5 @@ class Team < ActiveRecord::Base
|
|
72
72
|
#resourcify done during specs setup to be able to use custom user classes
|
73
73
|
self.primary_key = "team_code"
|
74
74
|
|
75
|
-
default_scope order(:team_code)
|
75
|
+
default_scope { order(:team_code) }
|
76
76
|
end
|
data/spec/support/schema.rb
CHANGED
metadata
CHANGED
@@ -1,142 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rolify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.0
|
5
|
-
prerelease: 6
|
4
|
+
version: 3.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Florent Monbillard
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: ammeter
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '2.0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '2.0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec-rails
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '2.0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '2.0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: bundler
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: fuubar
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: activerecord
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: 3.2.0
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - ">="
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: 3.2.0
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: mongoid
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - ">="
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '3.1'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - ">="
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '3.1'
|
142
125
|
description: Very simple Roles library without any authorization enforcement supporting
|
@@ -148,8 +131,8 @@ executables: []
|
|
148
131
|
extensions: []
|
149
132
|
extra_rdoc_files: []
|
150
133
|
files:
|
151
|
-
- .gitignore
|
152
|
-
- .travis.yml
|
134
|
+
- ".gitignore"
|
135
|
+
- ".travis.yml"
|
153
136
|
- CHANGELOG.rdoc
|
154
137
|
- Gemfile
|
155
138
|
- LICENSE
|
@@ -188,7 +171,8 @@ files:
|
|
188
171
|
- lib/rolify/version.rb
|
189
172
|
- rolify.gemspec
|
190
173
|
- spec/README.rdoc
|
191
|
-
- spec/generators/rolify/
|
174
|
+
- spec/generators/rolify/rolify_activerecord_generator_spec.rb
|
175
|
+
- spec/generators/rolify/rolify_mongoid_generator_spec.rb
|
192
176
|
- spec/generators_helper.rb
|
193
177
|
- spec/rolify/config_spec.rb
|
194
178
|
- spec/rolify/custom_spec.rb
|
@@ -217,31 +201,31 @@ files:
|
|
217
201
|
- spec/support/schema.rb
|
218
202
|
homepage: http://eppo.github.com/rolify/
|
219
203
|
licenses: []
|
204
|
+
metadata: {}
|
220
205
|
post_install_message:
|
221
206
|
rdoc_options: []
|
222
207
|
require_paths:
|
223
208
|
- lib
|
224
209
|
required_ruby_version: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
210
|
requirements:
|
227
|
-
- -
|
211
|
+
- - ">="
|
228
212
|
- !ruby/object:Gem::Version
|
229
213
|
version: '0'
|
230
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
|
-
none: false
|
232
215
|
requirements:
|
233
|
-
- -
|
216
|
+
- - ">="
|
234
217
|
- !ruby/object:Gem::Version
|
235
|
-
version:
|
218
|
+
version: '0'
|
236
219
|
requirements: []
|
237
220
|
rubyforge_project: rolify
|
238
|
-
rubygems_version:
|
221
|
+
rubygems_version: 2.0.3
|
239
222
|
signing_key:
|
240
|
-
specification_version:
|
223
|
+
specification_version: 4
|
241
224
|
summary: Roles library with resource scoping
|
242
225
|
test_files:
|
243
226
|
- spec/README.rdoc
|
244
|
-
- spec/generators/rolify/
|
227
|
+
- spec/generators/rolify/rolify_activerecord_generator_spec.rb
|
228
|
+
- spec/generators/rolify/rolify_mongoid_generator_spec.rb
|
245
229
|
- spec/generators_helper.rb
|
246
230
|
- spec/rolify/config_spec.rb
|
247
231
|
- spec/rolify/custom_spec.rb
|
@@ -268,3 +252,4 @@ test_files:
|
|
268
252
|
- spec/support/adapters/mongoid.yml
|
269
253
|
- spec/support/data.rb
|
270
254
|
- spec/support/schema.rb
|
255
|
+
has_rdoc:
|