role_play 1.0.1

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.
@@ -0,0 +1 @@
1
+ pkg/*
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Krzysztof Zylawy
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,18 @@
1
+ generators/has_roles/has_roles_generator.rb
2
+ generators/has_roles/templates/migration.rb
3
+ generators/has_roles/USAGE
4
+ has_roles.gemspec
5
+ install.rb
6
+ lib/has_roles.rb
7
+ lib/role.rb
8
+ lib/role_assignment.rb
9
+ Manifest
10
+ MIT-LICENSE
11
+ rails/init.rb
12
+ Rakefile
13
+ README
14
+ tasks/has_roles_tasks.rake
15
+ test/assertions.rb
16
+ test/has_roles_test.rb
17
+ test/test_helper.rb
18
+ uninstall.rb
data/README ADDED
@@ -0,0 +1,35 @@
1
+ Install
2
+ =======
3
+
4
+ $ gem source -a http://gems.github.com/
5
+ $ sudo gem install mintdigital-has_roles
6
+
7
+ # environment.rb
8
+ config.gem 'mintdigital-has_roles', :lib => 'has_roles'
9
+
10
+ Example
11
+ =======
12
+
13
+ In an ActiveRecord class:
14
+
15
+ has_roles :admin, :moderator
16
+
17
+ Then run:
18
+
19
+ ./script/generate has_roles && rake db:migrate
20
+
21
+ Now your model has these instance methods:
22
+
23
+ add_role(:moderator) #=> true
24
+ remove_role(:admin) #=> true (doesn't have role)
25
+ has_role?(:admin) #=> false
26
+ can_have_role?(:writer) #=> false
27
+
28
+ # These are auto-generated based on your defined roles.
29
+ # They just call has_role?(name)
30
+ admin? #=> false
31
+ moderator? #=> true
32
+
33
+ ---
34
+
35
+ Copyright (c) 2008 Krzysztof Zylawy, released under the MIT license
@@ -0,0 +1,51 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require File.join(File.dirname(__FILE__), %w[lib/role_play])
5
+
6
+ # begin
7
+ # require 'echoe'
8
+ # Echoe.new('has_roles') do |a|
9
+ # a.version = HasRoles::Version::STRING
10
+ # a.summary = "Simple roles for ActiveRecord"
11
+ # a.author = "Krzysztof Zylawy"
12
+ # a.email = "krzysztof@mintdigital.com"
13
+ # a.runtime_dependencies = ['activerecord']
14
+ # a.development_dependencies = ['echoe']
15
+ # a.has_rdoc = false
16
+ # a.retain_gemspec = true
17
+ # end
18
+ # rescue LoadError
19
+ # puts "Install 'echoe' if you want gem building-ness."
20
+ # end
21
+
22
+ begin
23
+ require 'jeweler'
24
+ Jeweler::Tasks.new do |s|
25
+ s.name = "role_play"
26
+ s.summary = "Simple roles for ActiveRecord"
27
+ s.email = "philnash@gmail.com"
28
+ s.homepage = "http://github.com/mintdigital/has_roles"
29
+ s.authors = ["Krzysztof Zylawy", "Mint Digital"]
30
+ s.add_dependency 'activerecord'
31
+ end
32
+ Jeweler::GemcutterTasks.new
33
+ rescue LoadError
34
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
35
+ end
36
+
37
+
38
+ desc 'Default: Run Tests'
39
+ Rake::TestTask.new do |t|
40
+ t.warning = true
41
+ t.pattern = 'test/**/*_test.rb'
42
+ end
43
+
44
+ desc 'Generate documentation for the role_play plugin.'
45
+ Rake::RDocTask.new(:rdoc) do |rdoc|
46
+ rdoc.rdoc_dir = 'rdoc'
47
+ rdoc.title = 'RolePlay'
48
+ rdoc.options << '--line-numbers' << '--inline-source'
49
+ rdoc.rdoc_files.include('README')
50
+ rdoc.rdoc_files.include('lib/**/*.rb')
51
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.1
@@ -0,0 +1,7 @@
1
+ Description:
2
+ This generates migrations for roles and role_assignments models
3
+
4
+ Example:
5
+ ./script/generate role_play && rake db:migrate
6
+
7
+ This will create a migration for the roles and role_assignments tables.
@@ -0,0 +1,10 @@
1
+ class RolePlayGenerator < Rails::Generator::Base
2
+ def manifest
3
+ recorded_session = record do |m|
4
+ unless options[:skip_migration]
5
+ m.migration_template "migration.rb", "db/migrate",
6
+ :migration_file_name => 'create_roles'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ class CreateRoles < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :roles do |t|
4
+ t.string :name
5
+ end
6
+
7
+ create_table :role_assignments do |t|
8
+ t.integer :roleable_id, :role_id
9
+ t.string :roleable_type
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :role_assignments
15
+ drop_table :roles
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1,6 @@
1
+ class Role < ActiveRecord::Base
2
+ has_many :role_assignments
3
+ has_many :roleables, :through => :role_assignments
4
+
5
+ validates_uniqueness_of :name, :message => "Role with that name already exists"
6
+ end
@@ -0,0 +1,6 @@
1
+ class RoleAssignment < ActiveRecord::Base
2
+ belongs_to :roleable, :polymorphic => true
3
+ belongs_to :role
4
+ validates_uniqueness_of :role_id, :scope => [:roleable_id, :roleable_type]
5
+ validates_presence_of :roleable_id, :roleable_type, :role_id
6
+ end
@@ -0,0 +1,60 @@
1
+ module RolePlay
2
+
3
+ def self.included(base)
4
+ base.extend HasMethods
5
+ end
6
+
7
+ module HasMethods
8
+ def has_roles(*roles)
9
+ roles.flatten!
10
+ write_inheritable_attribute(:available_roles, roles)
11
+ class_inheritable_reader :available_roles
12
+
13
+ unless included_modules.include? InstanceMethods
14
+ has_many :role_assignments, :as => :roleable, :dependent => :destroy
15
+ has_many :roles, :through => :role_assignments
16
+
17
+ extend ClassMethods
18
+ include InstanceMethods
19
+ available_roles.each do |role|
20
+ self.class_eval do
21
+ define_method "#{role}?".to_sym do
22
+ has_role?(role)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ module ClassMethods
31
+ end
32
+
33
+ module InstanceMethods
34
+ def can_have_role?(role_name)
35
+ available_roles.include?(role_name)
36
+ end
37
+
38
+ def has_role?(rolename)
39
+ !self.roles.find_by_name(rolename.to_s).nil?
40
+ end
41
+
42
+ def add_role rolename
43
+ return false unless can_have_role?(rolename)
44
+ return true if has_role?(rolename)
45
+ self.roles << Role.find_or_create_by_name(rolename.to_s)
46
+ self.save
47
+ end
48
+
49
+ def remove_role name
50
+ return true if !has_role?(name)
51
+ role_assignment = self.role_assignments.detect { |x| x.role.name == name.to_s }
52
+ role_assignment.destroy if role_assignment
53
+ end
54
+
55
+ def clear_roles
56
+ role_assignments.clear
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,4 @@
1
+ require File.join(File.dirname(__FILE__), %w[.. lib role_play])
2
+
3
+ ActiveRecord::Base.send(:include, RolePlay)
4
+
@@ -0,0 +1,63 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{role_play}
8
+ s.version = "1.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Krzysztof Zylawy", "Mint Digital"]
12
+ s.date = %q{2009-12-04}
13
+ s.email = %q{philnash@gmail.com}
14
+ s.extra_rdoc_files = [
15
+ "README"
16
+ ]
17
+ s.files = [
18
+ ".gitignore",
19
+ "MIT-LICENSE",
20
+ "Manifest",
21
+ "README",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "generators/role_play/USAGE",
25
+ "generators/role_play/role_play_generator.rb",
26
+ "generators/role_play/templates/migration.rb",
27
+ "install.rb",
28
+ "lib/role.rb",
29
+ "lib/role_assignment.rb",
30
+ "lib/role_play.rb",
31
+ "rails/init.rb",
32
+ "role_play.gemspec",
33
+ "tasks/has_roles_tasks.rake",
34
+ "test/assertions.rb",
35
+ "test/role_play_test.rb",
36
+ "test/test_helper.rb",
37
+ "uninstall.rb"
38
+ ]
39
+ s.homepage = %q{http://github.com/mintdigital/has_roles}
40
+ s.rdoc_options = ["--charset=UTF-8"]
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = %q{1.3.5}
43
+ s.summary = %q{Simple roles for ActiveRecord}
44
+ s.test_files = [
45
+ "test/assertions.rb",
46
+ "test/role_play_test.rb",
47
+ "test/test_helper.rb"
48
+ ]
49
+
50
+ if s.respond_to? :specification_version then
51
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
+ s.specification_version = 3
53
+
54
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
55
+ s.add_runtime_dependency(%q<activerecord>, [">= 0"])
56
+ else
57
+ s.add_dependency(%q<activerecord>, [">= 0"])
58
+ end
59
+ else
60
+ s.add_dependency(%q<activerecord>, [">= 0"])
61
+ end
62
+ end
63
+
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :has_roles do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,82 @@
1
+ # Copyright (c) 2005-2009 David Heinemeier Hansson
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ module ActiveSupport
23
+ module Testing
24
+ module Assertions
25
+ # Test numeric difference between the return value of an expression as a result of what is evaluated
26
+ # in the yielded block.
27
+ #
28
+ # assert_difference 'Article.count' do
29
+ # post :create, :article => {...}
30
+ # end
31
+ #
32
+ # An arbitrary expression is passed in and evaluated.
33
+ #
34
+ # assert_difference 'assigns(:article).comments(:reload).size' do
35
+ # post :create, :comment => {...}
36
+ # end
37
+ #
38
+ # An arbitrary positive or negative difference can be specified. The default is +1.
39
+ #
40
+ # assert_difference 'Article.count', -1 do
41
+ # post :delete, :id => ...
42
+ # end
43
+ #
44
+ # An array of expressions can also be passed in and evaluated.
45
+ #
46
+ # assert_difference [ 'Article.count', 'Post.count' ], +2 do
47
+ # post :create, :article => {...}
48
+ # end
49
+ #
50
+ # A error message can be specified.
51
+ #
52
+ # assert_difference 'Article.count', -1, "An Article should be destroyed" do
53
+ # post :delete, :id => ...
54
+ # end
55
+ def assert_difference(expressions, difference = 1, message = nil, &block)
56
+ expression_evaluations = Array(expressions).collect{ |expression| lambda { eval(expression, block.send(:binding)) } }
57
+
58
+ original_values = expression_evaluations.inject([]) { |memo, expression| memo << expression.call }
59
+ yield
60
+ expression_evaluations.each_with_index do |expression, i|
61
+ assert_equal original_values[i] + difference, expression.call, message
62
+ end
63
+ end
64
+
65
+ # Assertion that the numeric result of evaluating an expression is not changed before and after
66
+ # invoking the passed in block.
67
+ #
68
+ # assert_no_difference 'Article.count' do
69
+ # post :create, :article => invalid_attributes
70
+ # end
71
+ #
72
+ # A error message can be specified.
73
+ #
74
+ # assert_no_difference 'Article.count', "An Article should not be destroyed" do
75
+ # post :create, :article => invalid_attributes
76
+ # end
77
+ def assert_no_difference(expressions, message = nil, &block)
78
+ assert_difference expressions, 0, message, &block
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,151 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class RoleableSample < ActiveRecord::Base
4
+ has_roles [:sample_role_1, :sample_role_2]
5
+ end
6
+
7
+ class AnotherRoleable < ActiveRecord::Base
8
+ has_roles :another1, :another2
9
+ end
10
+
11
+ class RolePlayTest < Test::Unit::TestCase
12
+
13
+ def setup
14
+ @roleable_sample = RoleableSample.create
15
+ end
16
+
17
+ def teardown
18
+ [Role, RoleAssignment, RoleableSample].each {|klass| klass.delete_all }
19
+ end
20
+
21
+ def test_active_record_should_respond_to_has_roles
22
+ assert ActiveRecord::Base.respond_to?(:has_roles)
23
+ end
24
+
25
+ def test_roleable_class_should_return_available_roles
26
+ assert_equal [:sample_role_1, :sample_role_2], RoleableSample.available_roles
27
+ end
28
+
29
+ def test_roleable_object_can_have_its_class_roles
30
+ [:sample_role_1, :sample_role_2].each do |role_name|
31
+ assert_equal(true, @roleable_sample.can_have_role?(role_name))
32
+ end
33
+ end
34
+
35
+ def test_should_be_able_to_add_valid_role_to_roleable
36
+ assert_difference "RoleAssignment.count", 1 do
37
+ assert_difference "Role.count", 1 do
38
+ @roleable_sample.add_role(:sample_role_1)
39
+ end
40
+ end
41
+ end
42
+
43
+ def test_should_return_true_when_role_added
44
+ assert @roleable_sample.add_role(:sample_role_1)
45
+ end
46
+
47
+ def test_should_not_be_able_to_add_invalid_role_to_roleable
48
+ assert_no_difference "RoleAssignment.count", 1 do
49
+ assert_no_difference "Role.count", 1 do
50
+ @roleable_sample.add_role(:invalid_role)
51
+ end
52
+ end
53
+ assert_equal(false, @roleable_sample.has_role?(:invalid_role))
54
+ end
55
+
56
+ def test_should_return_false_when_invalid_role_not_added
57
+ assert !@roleable_sample.add_role(:invalid_role)
58
+ end
59
+
60
+ def test_should_not_add_role_nor_assignment_if_already_has_role
61
+ @roleable_sample.add_role(:sample_role_1)
62
+ assert_no_difference "RoleAssignment.count" do
63
+ assert_no_difference "Role.count" do
64
+ @roleable_sample.add_role(:sample_role_1)
65
+ end
66
+ end
67
+ assert_equal(true, @roleable_sample.has_role?(:sample_role_1))
68
+ end
69
+
70
+ def test_should_return_true_if_already_has_role
71
+ @roleable_sample.add_role(:sample_role_1)
72
+ assert @roleable_sample.has_role?(:sample_role_1), 'Precondition: has role'
73
+ assert @roleable_sample.add_role(:sample_role_1)
74
+ end
75
+
76
+ def test_should_add_assignment_but_not_role_nor_assignment_if_role_exists
77
+ Role.create(:name => 'sample_role_1')
78
+ assert_difference "RoleAssignment.count", 1 do
79
+ assert_no_difference "Role.count" do
80
+ @roleable_sample.add_role(:sample_role_1)
81
+ end
82
+ end
83
+ assert_equal(true, @roleable_sample.has_role?(:sample_role_1))
84
+ end
85
+
86
+ def test_should_have_added_role
87
+ @roleable_sample.add_role(:sample_role_1)
88
+ assert_equal(true, @roleable_sample.has_role?(:sample_role_1))
89
+ end
90
+
91
+ def test_should_not_have_not_added_role
92
+ @roleable_sample.add_role(:sample_role_1)
93
+ assert_equal(false, @roleable_sample.has_role?(:sample_role_2))
94
+ end
95
+
96
+ def test_should_remove_role_assignment
97
+ @roleable_sample.add_role(:sample_role_1)
98
+ assert_difference "RoleAssignment.count", -1 do
99
+ assert_no_difference "Role.count" do
100
+ @roleable_sample.remove_role(:sample_role_1)
101
+ end
102
+ end
103
+ assert_equal(false, @roleable_sample.has_role?(:sample_role_1))
104
+ end
105
+
106
+ def test_should_return_true_when_role_removed
107
+ @roleable_sample.add_role(:sample_role_1)
108
+ assert @roleable_sample.has_role?(:sample_role_1), 'Precondition: has role'
109
+ assert @roleable_sample.remove_role(:sample_role_1)
110
+ end
111
+
112
+ def test_should_not_remove_role_assignment_when_removing_other_role
113
+ @roleable_sample.add_role(:sample_role_1)
114
+ assert_no_difference "RoleAssignment.count" do
115
+ assert_no_difference "Role.count" do
116
+ @roleable_sample.remove_role(:sample_role_2)
117
+ end
118
+ end
119
+ assert_equal(true, @roleable_sample.has_role?(:sample_role_1))
120
+ end
121
+
122
+ def test_should_return_true_when_trying_to_remove_un_had_role
123
+ assert !@roleable_sample.has_role?(:sample_role_1), 'Precondition: does not have role'
124
+ assert @roleable_sample.remove_role(:sample_role_1)
125
+ end
126
+
127
+ def test_should_return_true_when_asking_if_is_existing_role
128
+ @roleable_sample.add_role(:sample_role_1)
129
+ assert_equal(true, @roleable_sample.sample_role_1?)
130
+ end
131
+
132
+ def test_should_return_false_when_asking_if_is_unexisting_role
133
+ @roleable_sample.add_role(:sample_role_1)
134
+ assert_equal(false, @roleable_sample.sample_role_2?)
135
+ end
136
+
137
+ def test_should_raise_exception_when_asking_if_is_invalid_role
138
+ @roleable_sample.add_role(:sample_role_1)
139
+ assert_raise(NoMethodError) {
140
+ @roleable_sample.invalid_role?
141
+ }
142
+ end
143
+
144
+ def test_should_clear_roles
145
+ @roleable_sample.add_role(:sample_role_1)
146
+ assert_difference "RoleAssignment.count", -1 do
147
+ @roleable_sample.clear_roles
148
+ end
149
+ end
150
+
151
+ end
@@ -0,0 +1,29 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'active_record'
4
+ require File.join(File.dirname(__FILE__), 'assertions')
5
+ require File.join(File.dirname(__FILE__), %w[.. rails init.rb])
6
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
7
+ require 'role'
8
+ require 'role_assignment'
9
+
10
+ Test::Unit::TestCase.send :include, ActiveSupport::Testing::Assertions
11
+
12
+ ActiveRecord::Base.establish_connection(
13
+ :adapter => 'sqlite3', :database => ':memory:'
14
+ )
15
+
16
+ ActiveRecord::Schema.define(:version => 1) do
17
+ create_table :roleable_samples do |t|
18
+ end
19
+
20
+ create_table :roles do |t|
21
+ t.string :name
22
+ end
23
+
24
+ create_table :role_assignments do |t|
25
+ t.integer :roleable_id
26
+ t.string :roleable_type
27
+ t.integer :role_id
28
+ end
29
+ end
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: role_play
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Krzysztof Zylawy
8
+ - Mint Digital
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-12-04 00:00:00 +00:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: activerecord
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ version:
26
+ description:
27
+ email: philnash@gmail.com
28
+ executables: []
29
+
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - README
34
+ files:
35
+ - .gitignore
36
+ - MIT-LICENSE
37
+ - Manifest
38
+ - README
39
+ - Rakefile
40
+ - VERSION
41
+ - generators/role_play/USAGE
42
+ - generators/role_play/role_play_generator.rb
43
+ - generators/role_play/templates/migration.rb
44
+ - install.rb
45
+ - lib/role.rb
46
+ - lib/role_assignment.rb
47
+ - lib/role_play.rb
48
+ - rails/init.rb
49
+ - role_play.gemspec
50
+ - tasks/has_roles_tasks.rake
51
+ - test/assertions.rb
52
+ - test/role_play_test.rb
53
+ - test/test_helper.rb
54
+ - uninstall.rb
55
+ has_rdoc: true
56
+ homepage: http://github.com/mintdigital/has_roles
57
+ licenses: []
58
+
59
+ post_install_message:
60
+ rdoc_options:
61
+ - --charset=UTF-8
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ version:
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ version:
76
+ requirements: []
77
+
78
+ rubyforge_project:
79
+ rubygems_version: 1.3.5
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Simple roles for ActiveRecord
83
+ test_files:
84
+ - test/assertions.rb
85
+ - test/role_play_test.rb
86
+ - test/test_helper.rb