rollable 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +15 -1
- data/lib/rollable/base.rb +17 -1
- data/lib/rollable/version.rb +1 -1
- data/rollable.gemspec +3 -2
- data/spec/rollable_test/Gemfile +2 -1
- data/spec/rollable_test/spec/models/user_spec.rb +13 -0
- metadata +114 -52
data/README.textile
CHANGED
@@ -45,6 +45,8 @@ h2. Features
|
|
45
45
|
|
46
46
|
h2. Usage
|
47
47
|
|
48
|
+
We'll call the model that can have roles users, for the sake of laziness.
|
49
|
+
|
48
50
|
Rollable provides helpers based on role names to check whether a user has a role on an object:
|
49
51
|
|
50
52
|
bq. user.is_owner_of?(horse) # => true
|
@@ -53,10 +55,22 @@ You can also request all possible roles
|
|
53
55
|
|
54
56
|
bq. User.role_names
|
55
57
|
|
56
|
-
|
58
|
+
You can set roles easily by using the helper
|
59
|
+
|
60
|
+
bq. user.is_owner(horse)
|
61
|
+
|
62
|
+
If you use nil roles, you can also do
|
57
63
|
|
58
64
|
bq. user.is_admin?
|
59
65
|
|
66
|
+
Since 0.0.2 you can also do
|
67
|
+
|
68
|
+
bq. target_model.has_admin?
|
69
|
+
|
70
|
+
And, to get all users with that role
|
71
|
+
|
72
|
+
bq. target_model.get_admins
|
73
|
+
|
60
74
|
h2. Limitations
|
61
75
|
|
62
76
|
* Its the first release, don't whine.
|
data/lib/rollable/base.rb
CHANGED
@@ -25,13 +25,29 @@ module Rollable
|
|
25
25
|
set_target_model_helpers
|
26
26
|
set_relations_on_rollables
|
27
27
|
set_role_validations
|
28
|
+
set_role_setter_helpers
|
28
29
|
end
|
29
30
|
|
30
31
|
private
|
31
32
|
|
33
|
+
def set_role_setter_helpers
|
34
|
+
rollables = @rollables
|
35
|
+
@role_names.each do |name|
|
36
|
+
define_method("is_#{name}") do |object|
|
37
|
+
if rollables.include?(object.class.to_s)
|
38
|
+
self.roles.create!(:rollable => object, :name => name)
|
39
|
+
else
|
40
|
+
false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
32
47
|
# DISCLAIMER: Headache and on the airport, hush.
|
33
48
|
# Helpers for target models like has_owner? and get_owners
|
34
49
|
def set_target_model_helpers
|
50
|
+
other = self
|
35
51
|
@rollables.select { |r| r.is_a?(String) }.each do |model|
|
36
52
|
model = model.constantize
|
37
53
|
@role_names.each do |role_name|
|
@@ -42,7 +58,7 @@ module Rollable
|
|
42
58
|
|
43
59
|
# TODO: get_#{role_name} doesn't sound very rubyish
|
44
60
|
define_method("get_#{role_name.pluralize}") do
|
45
|
-
self.roles.where("name = ? ", role_name).collect(
|
61
|
+
self.roles.where("name = ? ", role_name).collect { |r| r.send(other.to_s.downcase) }
|
46
62
|
end
|
47
63
|
end
|
48
64
|
end
|
data/lib/rollable/version.rb
CHANGED
data/rollable.gemspec
CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
|
-
s.add_dependency "rails", "
|
22
|
-
s.add_dependency "rspec", "
|
21
|
+
s.add_dependency "rails", "~> 3.0.6"
|
22
|
+
s.add_dependency "rspec", "~> 2.6"
|
23
|
+
s.add_dependency "rake", "~> 0.8.7"
|
23
24
|
s.add_dependency "rspec-rails"
|
24
25
|
end
|
data/spec/rollable_test/Gemfile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
3
|
gem 'rails', '3.0.7'
|
4
|
+
gem 'rake', '~> 0.8.7'
|
4
5
|
|
5
6
|
# Bundle edge Rails instead:
|
6
7
|
# gem 'rails', :git => 'git://github.com/rails/rails.git'
|
@@ -28,5 +29,5 @@ gem 'rollable', :path => '../../'
|
|
28
29
|
# put test-only gems in this group so their generators
|
29
30
|
# and rake tasks are available in development mode:
|
30
31
|
group :development, :test do
|
31
|
-
gem 'rspec-rails'
|
32
|
+
gem 'rspec-rails', '~> 2.6.0'
|
32
33
|
end
|
@@ -2,6 +2,19 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe User do
|
4
4
|
context "Rollable helpers" do
|
5
|
+
it "should respond to setters" do
|
6
|
+
@user = User.create
|
7
|
+
@user.should respond_to(:is_owner)
|
8
|
+
@user.should respond_to(:is_rider)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should have working setters" do
|
12
|
+
@user = User.create
|
13
|
+
@horse = Horse.create
|
14
|
+
@user.is_owner(@horse)
|
15
|
+
@user.is_owner_of?(@horse).should be_true
|
16
|
+
end
|
17
|
+
|
5
18
|
it "should respond to helper methods" do
|
6
19
|
@user = User.new
|
7
20
|
@user.should respond_to(:is_owner_of?)
|
metadata
CHANGED
@@ -1,60 +1,67 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollable
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.2
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Timon Vonk
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-06-01 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: rails
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &85659420 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 3.0.
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.0.6
|
24
22
|
type: :runtime
|
25
|
-
|
26
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *85659420
|
25
|
+
- !ruby/object:Gem::Dependency
|
27
26
|
name: rspec
|
27
|
+
requirement: &85659170 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.6'
|
33
|
+
type: :runtime
|
28
34
|
prerelease: false
|
29
|
-
|
35
|
+
version_requirements: *85659170
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &85658940 !ruby/object:Gem::Requirement
|
30
39
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.8.7
|
35
44
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rspec-rails
|
39
45
|
prerelease: false
|
40
|
-
|
46
|
+
version_requirements: *85658940
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec-rails
|
49
|
+
requirement: &85658750 !ruby/object:Gem::Requirement
|
41
50
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version:
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
46
55
|
type: :runtime
|
47
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *85658750
|
48
58
|
description: This gem adds agnostic roles for authorization to Rails.
|
49
|
-
email:
|
59
|
+
email:
|
50
60
|
- mail@timonv.nl
|
51
61
|
executables: []
|
52
|
-
|
53
62
|
extensions: []
|
54
|
-
|
55
63
|
extra_rdoc_files: []
|
56
|
-
|
57
|
-
files:
|
64
|
+
files:
|
58
65
|
- .gitignore
|
59
66
|
- Gemfile
|
60
67
|
- LICENCE
|
@@ -129,30 +136,85 @@ files:
|
|
129
136
|
- spec/spec_helper.rb
|
130
137
|
homepage: http://www.timonv.nl
|
131
138
|
licenses: []
|
132
|
-
|
133
139
|
post_install_message:
|
134
140
|
rdoc_options: []
|
135
|
-
|
136
|
-
require_paths:
|
141
|
+
require_paths:
|
137
142
|
- lib
|
138
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
139
144
|
none: false
|
140
|
-
requirements:
|
141
|
-
- -
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version:
|
144
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ! '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
150
|
none: false
|
146
|
-
requirements:
|
147
|
-
- -
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version:
|
151
|
+
requirements:
|
152
|
+
- - ! '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
150
155
|
requirements: []
|
151
|
-
|
152
156
|
rubyforge_project: rollable
|
153
|
-
rubygems_version: 1.
|
157
|
+
rubygems_version: 1.8.3
|
154
158
|
signing_key:
|
155
159
|
specification_version: 3
|
156
160
|
summary: Agnostic roles for rails
|
157
|
-
test_files:
|
158
|
-
|
161
|
+
test_files:
|
162
|
+
- spec/rollable_test/.gitignore
|
163
|
+
- spec/rollable_test/.rspec
|
164
|
+
- spec/rollable_test/Gemfile
|
165
|
+
- spec/rollable_test/README
|
166
|
+
- spec/rollable_test/Rakefile
|
167
|
+
- spec/rollable_test/app/controllers/application_controller.rb
|
168
|
+
- spec/rollable_test/app/helpers/application_helper.rb
|
169
|
+
- spec/rollable_test/app/models/horse.rb
|
170
|
+
- spec/rollable_test/app/models/pig.rb
|
171
|
+
- spec/rollable_test/app/models/role.rb
|
172
|
+
- spec/rollable_test/app/models/user.rb
|
173
|
+
- spec/rollable_test/app/views/layouts/application.html.erb
|
174
|
+
- spec/rollable_test/config.ru
|
175
|
+
- spec/rollable_test/config/application.rb
|
176
|
+
- spec/rollable_test/config/boot.rb
|
177
|
+
- spec/rollable_test/config/database.yml
|
178
|
+
- spec/rollable_test/config/environment.rb
|
179
|
+
- spec/rollable_test/config/environments/development.rb
|
180
|
+
- spec/rollable_test/config/environments/production.rb
|
181
|
+
- spec/rollable_test/config/environments/test.rb
|
182
|
+
- spec/rollable_test/config/initializers/backtrace_silencers.rb
|
183
|
+
- spec/rollable_test/config/initializers/inflections.rb
|
184
|
+
- spec/rollable_test/config/initializers/mime_types.rb
|
185
|
+
- spec/rollable_test/config/initializers/secret_token.rb
|
186
|
+
- spec/rollable_test/config/initializers/session_store.rb
|
187
|
+
- spec/rollable_test/config/locales/en.yml
|
188
|
+
- spec/rollable_test/config/routes.rb
|
189
|
+
- spec/rollable_test/db/migrate/20110421101457_create_users.rb
|
190
|
+
- spec/rollable_test/db/migrate/20110421101514_create_horses.rb
|
191
|
+
- spec/rollable_test/db/migrate/20110421101523_create_pigs.rb
|
192
|
+
- spec/rollable_test/db/migrate/20110423152854_create_roles.rb
|
193
|
+
- spec/rollable_test/db/schema.rb
|
194
|
+
- spec/rollable_test/db/seeds.rb
|
195
|
+
- spec/rollable_test/doc/README_FOR_APP
|
196
|
+
- spec/rollable_test/lib/tasks/.gitkeep
|
197
|
+
- spec/rollable_test/public/404.html
|
198
|
+
- spec/rollable_test/public/422.html
|
199
|
+
- spec/rollable_test/public/500.html
|
200
|
+
- spec/rollable_test/public/favicon.ico
|
201
|
+
- spec/rollable_test/public/images/rails.png
|
202
|
+
- spec/rollable_test/public/index.html
|
203
|
+
- spec/rollable_test/public/javascripts/application.js
|
204
|
+
- spec/rollable_test/public/javascripts/controls.js
|
205
|
+
- spec/rollable_test/public/javascripts/dragdrop.js
|
206
|
+
- spec/rollable_test/public/javascripts/effects.js
|
207
|
+
- spec/rollable_test/public/javascripts/prototype.js
|
208
|
+
- spec/rollable_test/public/javascripts/rails.js
|
209
|
+
- spec/rollable_test/public/robots.txt
|
210
|
+
- spec/rollable_test/public/stylesheets/.gitkeep
|
211
|
+
- spec/rollable_test/script/rails
|
212
|
+
- spec/rollable_test/spec/models/horse_spec.rb
|
213
|
+
- spec/rollable_test/spec/models/pig_spec.rb
|
214
|
+
- spec/rollable_test/spec/models/role_spec.rb
|
215
|
+
- spec/rollable_test/spec/models/user_spec.rb
|
216
|
+
- spec/rollable_test/spec/spec_helper.rb
|
217
|
+
- spec/rollable_test/test/performance/browsing_test.rb
|
218
|
+
- spec/rollable_test/test/test_helper.rb
|
219
|
+
- spec/rollable_test/vendor/plugins/.gitkeep
|
220
|
+
- spec/spec_helper.rb
|