rolify 3.2.0 → 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.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.travis.yml +13 -10
  4. data/CHANGELOG.rdoc +18 -0
  5. data/Gemfile +20 -3
  6. data/README.md +91 -73
  7. data/Rakefile +27 -2
  8. data/UPGRADE.rdoc +22 -0
  9. data/gemfiles/Gemfile.rails-3.2 +21 -0
  10. data/gemfiles/Gemfile.rails-4.0 +27 -0
  11. data/lib/generators/active_record/rolify_generator.rb +50 -0
  12. data/lib/generators/active_record/templates/README +8 -0
  13. data/lib/generators/active_record/templates/migration.rb +19 -0
  14. data/lib/generators/mongoid/rolify_generator.rb +51 -0
  15. data/lib/generators/mongoid/templates/README-mongoid +4 -0
  16. data/lib/generators/rolify/rolify_generator.rb +35 -0
  17. data/lib/generators/rolify/{role/templates/README-mongoid → templates/README} +1 -5
  18. data/lib/generators/rolify/{role/templates → templates}/initializer.rb +2 -2
  19. data/lib/generators/rolify/templates/role-active_record.rb +11 -0
  20. data/lib/generators/rolify/{role/templates → templates}/role-mongoid.rb +0 -2
  21. data/lib/generators/rolify/user_generator.rb +39 -0
  22. data/lib/rolify/adapters/active_record/resource_adapter.rb +8 -7
  23. data/lib/rolify/adapters/active_record/role_adapter.rb +17 -12
  24. data/lib/rolify/adapters/base.rb +1 -1
  25. data/lib/rolify/adapters/mongoid/resource_adapter.rb +2 -2
  26. data/lib/rolify/adapters/mongoid/role_adapter.rb +24 -14
  27. data/lib/rolify/configure.rb +16 -1
  28. data/lib/rolify/finders.rb +17 -16
  29. data/lib/rolify/matchers.rb +13 -0
  30. data/lib/rolify/railtie.rb +1 -1
  31. data/lib/rolify/resource.rb +7 -2
  32. data/lib/rolify/role.rb +5 -7
  33. data/lib/rolify/version.rb +1 -1
  34. data/lib/rolify.rb +21 -15
  35. data/rolify.gemspec +5 -11
  36. data/spec/README.rdoc +24 -0
  37. data/spec/generators/rolify/{role/role_generator_spec.rb → rolify_activerecord_generator_spec.rb} +49 -39
  38. data/spec/generators/rolify/rolify_mongoid_generator_spec.rb +112 -0
  39. data/spec/generators_helper.rb +21 -0
  40. data/spec/rolify/custom_spec.rb +10 -17
  41. data/spec/rolify/matchers_spec.rb +24 -0
  42. data/spec/rolify/namespace_spec.rb +24 -0
  43. data/spec/rolify/resource_spec.rb +56 -31
  44. data/spec/rolify/resourcifed_and_rolifed_spec.rb +24 -0
  45. data/spec/rolify/role_spec.rb +9 -16
  46. data/spec/rolify/shared_contexts.rb +9 -3
  47. data/spec/rolify/shared_examples/shared_examples_for_add_role.rb +2 -2
  48. data/spec/rolify/shared_examples/shared_examples_for_callbacks.rb +12 -4
  49. data/spec/rolify/shared_examples/shared_examples_for_dynamic.rb +45 -4
  50. data/spec/rolify/shared_examples/shared_examples_for_has_any_role.rb +3 -3
  51. data/spec/rolify/shared_examples/shared_examples_for_only_has_role.rb +3 -3
  52. data/spec/rolify/shared_examples/shared_examples_for_remove_role.rb +59 -59
  53. data/spec/rolify/shared_examples/shared_examples_for_roles.rb +7 -5
  54. data/spec/rolify/shared_examples/shared_examples_for_scopes.rb +10 -10
  55. data/spec/spec_helper.rb +6 -2
  56. data/spec/support/adapters/active_record.rb +47 -9
  57. data/spec/support/adapters/mongoid.rb +85 -24
  58. data/spec/support/data.rb +15 -15
  59. data/spec/support/schema.rb +28 -17
  60. metadata +102 -83
  61. data/lib/generators/rolify/role/role_generator.rb +0 -49
  62. data/lib/generators/rolify/role/templates/README +0 -11
  63. data/lib/generators/rolify/role/templates/README-active_record +0 -21
  64. data/lib/generators/rolify/role/templates/migration.rb +0 -19
  65. data/lib/generators/rolify/role/templates/role-active_record.rb +0 -6
@@ -2,10 +2,6 @@ require 'mongoid'
2
2
 
3
3
  Mongoid.load!("spec/support/adapters/mongoid.yml", :test)
4
4
 
5
- RSpec.configure do |config|
6
- config.include Mongoid::Matchers
7
- end
8
-
9
5
  ::Mongoid::Document.module_eval do
10
6
  def self.included(base)
11
7
  base.extend Rolify
@@ -14,11 +10,11 @@ end
14
10
 
15
11
  Rolify.use_mongoid
16
12
 
17
- # Mongoid models
13
+ # Standard user and role classes
18
14
  class User
19
15
  include Mongoid::Document
20
16
  rolify
21
-
17
+
22
18
  field :login, :type => String
23
19
  end
24
20
 
@@ -26,9 +22,8 @@ class Role
26
22
  include Mongoid::Document
27
23
  has_and_belongs_to_many :users
28
24
  belongs_to :resource, :polymorphic => true
29
-
25
+
30
26
  field :name, :type => String
31
- index({ :name => 1 }, { :unique => true })
32
27
  index(
33
28
  {
34
29
  :name => 1,
@@ -37,28 +32,41 @@ class Role
37
32
  },
38
33
  { :unique => true }
39
34
  )
40
-
35
+
41
36
  scopify
42
37
  end
43
38
 
44
- class Forum
39
+ # Resourcifed and rolifed at the same time
40
+ class HumanResource
45
41
  include Mongoid::Document
46
- #resourcify done during specs setup to be able to use custom user classes
47
-
48
- field :name, :type => String
49
- end
42
+ resourcify :resources
43
+ rolify
50
44
 
51
- class Group
52
- include Mongoid::Document
53
- #resourcify done during specs setup to be able to use custom user classes
54
-
55
- field :name, :type => String
45
+ field :login, :type => String
56
46
  end
57
47
 
48
+ #class Power
49
+ # include Mongoid::Document
50
+ # has_and_belongs_to_many :human_resources
51
+ # belongs_to :resource, :polymorphic => true
52
+ # scopify
53
+ #
54
+ # field :name, :type => String
55
+ # index(
56
+ # {
57
+ # :name => 1,
58
+ # :resource_type => 1,
59
+ # :resource_id => 1
60
+ # },
61
+ # { :unique => true }
62
+ # )
63
+ #end
64
+
65
+ # Custom role and class names
58
66
  class Customer
59
67
  include Mongoid::Document
60
68
  rolify :role_cname => "Privilege"
61
-
69
+
62
70
  field :login, :type => String
63
71
  end
64
72
 
@@ -66,9 +74,9 @@ class Privilege
66
74
  include Mongoid::Document
67
75
  has_and_belongs_to_many :customers
68
76
  belongs_to :resource, :polymorphic => true
69
-
77
+ scopify
78
+
70
79
  field :name, :type => String
71
- index({ :name => 1 }, { :unique => true })
72
80
  index(
73
81
  {
74
82
  :name => 1,
@@ -77,6 +85,59 @@ class Privilege
77
85
  },
78
86
  { :unique => true }
79
87
  )
80
-
81
- scopify
82
88
  end
89
+
90
+ # Namespaced models
91
+ module Admin
92
+ class Moderator
93
+ include Mongoid::Document
94
+ rolify :role_cname => "Admin::Right"
95
+
96
+ field :login, :type => String
97
+ end
98
+
99
+ class Right
100
+ include Mongoid::Document
101
+ has_and_belongs_to_many :moderators, :class_name => 'Admin::Moderator'
102
+ belongs_to :resource, :polymorphic => true
103
+ scopify
104
+
105
+ field :name, :type => String
106
+ index(
107
+ {
108
+ :name => 1,
109
+ :resource_type => 1,
110
+ :resource_id => 1
111
+ },
112
+ { :unique => true }
113
+ )
114
+ end
115
+ end
116
+
117
+ # Resources classes
118
+ class Forum
119
+ include Mongoid::Document
120
+ #resourcify done during specs setup to be able to use custom user classes
121
+
122
+ field :name, :type => String
123
+ end
124
+
125
+ class Group
126
+ include Mongoid::Document
127
+ #resourcify done during specs setup to be able to use custom user classes
128
+
129
+ field :name, :type => String
130
+ field :parent_id, :type => Integer
131
+
132
+ def subgroups
133
+ Group.in(:parent_id => _id)
134
+ end
135
+ end
136
+
137
+ class Team
138
+ include Mongoid::Document
139
+ #resourcify done during specs setup to be able to use custom user classes
140
+
141
+ field :team_code, :type => Integer
142
+ field :name, :type => String
143
+ end
data/spec/support/data.rb CHANGED
@@ -1,20 +1,17 @@
1
- User.destroy_all
2
- Role.destroy_all
3
- Forum.destroy_all
4
- Group.destroy_all
5
- Privilege.destroy_all
6
- Customer.destroy_all
7
-
8
1
  # Users
9
- User.create(:login => "admin")
10
- User.create(:login => "moderator")
11
- User.create(:login => "god")
12
- User.create(:login => "zombie")
2
+ [ User, Customer, Admin::Moderator ].each do |user|
3
+ user.destroy_all
4
+
5
+ user.create(:login => "admin")
6
+ user.create(:login => "moderator")
7
+ user.create(:login => "god")
8
+ user.create(:login => "zombie")
9
+ end
13
10
 
14
- Customer.create(:login => "admin")
15
- Customer.create(:login => "moderator")
16
- Customer.create(:login => "god")
17
- Customer.create(:login => "zombie")
11
+ # Roles
12
+ [ Role, Privilege, Admin::Right ].each do |role|
13
+ role.destroy_all
14
+ end
18
15
 
19
16
  # Resources
20
17
  Forum.create(:name => "forum 1")
@@ -23,3 +20,6 @@ Forum.create(:name => "forum 3")
23
20
 
24
21
  Group.create(:name => "group 1")
25
22
  Group.create(:name => "group 2")
23
+
24
+ Team.create(:team_code => "1", :name => "PSG")
25
+ Team.create(:team_code => "2", :name => "MU")
@@ -1,15 +1,19 @@
1
1
  ActiveRecord::Schema.define do
2
2
  self.verbose = false
3
3
 
4
- create_table(:roles) do |t|
4
+ [ :roles, :privileges, :admin_rights ].each do |table|
5
+ create_table(table) do |t|
5
6
  t.string :name
6
7
  t.references :resource, :polymorphic => true
7
-
8
+
8
9
  t.timestamps
10
+ end
9
11
  end
10
-
11
- create_table(:users) do |t|
12
- t.string :login
12
+
13
+ [ :users, :human_resources, :customers, :admin_moderators ].each do |table|
14
+ create_table(table) do |t|
15
+ t.string :login
16
+ end
13
17
  end
14
18
 
15
19
  create_table(:users_roles, :id => false) do |t|
@@ -17,25 +21,32 @@ ActiveRecord::Schema.define do
17
21
  t.references :role
18
22
  end
19
23
 
20
- create_table(:forums) do |t|
21
- t.string :name
24
+ create_table(:human_resources_roles, :id => false) do |t|
25
+ t.references :human_resource
26
+ t.references :role
22
27
  end
23
28
 
24
- create_table(:groups) do |t|
25
- t.string :name
29
+ create_table(:customers_privileges, :id => false) do |t|
30
+ t.references :customer
31
+ t.references :privilege
32
+ end
33
+
34
+ create_table(:moderators_rights, :id => false) do |t|
35
+ t.references :moderator
36
+ t.references :right
26
37
  end
27
38
 
28
- create_table(:privileges) do |t|
39
+ create_table(:forums) do |t|
29
40
  t.string :name
30
- t.references :resource, :polymorphic => true
31
41
  end
32
42
 
33
- create_table(:customers) do |t|
34
- t.string :login
43
+ create_table(:groups) do |t|
44
+ t.integer :parent_id
45
+ t.string :name
35
46
  end
36
-
37
- create_table(:customers_privileges, :id => false) do |t|
38
- t.references :customer
39
- t.references :privilege
47
+
48
+ create_table(:teams, :id => false) do |t|
49
+ t.primary_key :team_code
50
+ t.string :name
40
51
  end
41
52
  end
metadata CHANGED
@@ -1,126 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rolify
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
5
- prerelease:
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: 2012-08-08 00:00:00.000000000 Z
11
+ date: 2014-01-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: sqlite3
16
- requirement: &70098036310660 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: ammeter
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70098036310660
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
- name: bson_ext
27
- requirement: &70098036309620 !ruby/object:Gem::Requirement
28
- none: false
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70098036309620
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
- name: activerecord
38
- requirement: &70098036308480 !ruby/object:Gem::Requirement
39
- none: false
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
- version: 3.1.0
47
+ version: '2.0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70098036308480
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
47
55
  - !ruby/object:Gem::Dependency
48
- name: mongoid
49
- requirement: &70098036307720 !ruby/object:Gem::Requirement
50
- none: false
56
+ name: rspec-rails
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - ">="
53
60
  - !ruby/object:Gem::Version
54
- version: '3.0'
61
+ version: '2.0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70098036307720
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
58
69
  - !ruby/object:Gem::Dependency
59
- name: ammeter
60
- requirement: &70098036307200 !ruby/object:Gem::Requirement
61
- none: false
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - ">="
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70098036307200
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: &70098036306500 !ruby/object:Gem::Requirement
72
- none: false
78
+ version_requirements: !ruby/object:Gem::Requirement
73
79
  requirements:
74
- - - ! '>='
80
+ - - ">="
75
81
  - !ruby/object:Gem::Version
76
82
  version: '0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: *70098036306500
80
83
  - !ruby/object:Gem::Dependency
81
- name: rspec
82
- requirement: &70098036305440 !ruby/object:Gem::Requirement
83
- none: false
84
+ name: fuubar
85
+ requirement: !ruby/object:Gem::Requirement
84
86
  requirements:
85
- - - ! '>='
87
+ - - ">="
86
88
  - !ruby/object:Gem::Version
87
- version: '2.0'
89
+ version: '0'
88
90
  type: :development
89
91
  prerelease: false
90
- version_requirements: *70098036305440
91
- - !ruby/object:Gem::Dependency
92
- name: rspec-rails
93
- requirement: &70098036304660 !ruby/object:Gem::Requirement
94
- none: false
92
+ version_requirements: !ruby/object:Gem::Requirement
95
93
  requirements:
96
- - - ! '>='
94
+ - - ">="
97
95
  - !ruby/object:Gem::Version
98
- version: '2.0'
99
- type: :development
100
- prerelease: false
101
- version_requirements: *70098036304660
96
+ version: '0'
102
97
  - !ruby/object:Gem::Dependency
103
- name: mongoid-rspec
104
- requirement: &70098036303960 !ruby/object:Gem::Requirement
105
- none: false
98
+ name: activerecord
99
+ requirement: !ruby/object:Gem::Requirement
106
100
  requirements:
107
- - - ! '>='
101
+ - - ">="
108
102
  - !ruby/object:Gem::Version
109
- version: '1.5'
103
+ version: 3.2.0
110
104
  type: :development
111
105
  prerelease: false
112
- version_requirements: *70098036303960
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 3.2.0
113
111
  - !ruby/object:Gem::Dependency
114
- name: bundler
115
- requirement: &70098036303500 !ruby/object:Gem::Requirement
116
- none: false
112
+ name: mongoid
113
+ requirement: !ruby/object:Gem::Requirement
117
114
  requirements:
118
- - - ! '>='
115
+ - - ">="
119
116
  - !ruby/object:Gem::Version
120
- version: '0'
117
+ version: '3.1'
121
118
  type: :development
122
119
  prerelease: false
123
- version_requirements: *70098036303500
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '3.1'
124
125
  description: Very simple Roles library without any authorization enforcement supporting
125
126
  scope on resource objects (instance or class). Supports ActiveRecord and Mongoid
126
127
  ORMs.
@@ -130,22 +131,27 @@ executables: []
130
131
  extensions: []
131
132
  extra_rdoc_files: []
132
133
  files:
133
- - .gitignore
134
- - .travis.yml
134
+ - ".gitignore"
135
+ - ".travis.yml"
135
136
  - CHANGELOG.rdoc
136
137
  - Gemfile
137
138
  - LICENSE
138
139
  - README.md
139
140
  - Rakefile
140
141
  - UPGRADE.rdoc
141
- - lib/generators/rolify/role/role_generator.rb
142
- - lib/generators/rolify/role/templates/README
143
- - lib/generators/rolify/role/templates/README-active_record
144
- - lib/generators/rolify/role/templates/README-mongoid
145
- - lib/generators/rolify/role/templates/initializer.rb
146
- - lib/generators/rolify/role/templates/migration.rb
147
- - lib/generators/rolify/role/templates/role-active_record.rb
148
- - lib/generators/rolify/role/templates/role-mongoid.rb
142
+ - gemfiles/Gemfile.rails-3.2
143
+ - gemfiles/Gemfile.rails-4.0
144
+ - lib/generators/active_record/rolify_generator.rb
145
+ - lib/generators/active_record/templates/README
146
+ - lib/generators/active_record/templates/migration.rb
147
+ - lib/generators/mongoid/rolify_generator.rb
148
+ - lib/generators/mongoid/templates/README-mongoid
149
+ - lib/generators/rolify/rolify_generator.rb
150
+ - lib/generators/rolify/templates/README
151
+ - lib/generators/rolify/templates/initializer.rb
152
+ - lib/generators/rolify/templates/role-active_record.rb
153
+ - lib/generators/rolify/templates/role-mongoid.rb
154
+ - lib/generators/rolify/user_generator.rb
149
155
  - lib/rolify.rb
150
156
  - lib/rolify/adapters/active_record/resource_adapter.rb
151
157
  - lib/rolify/adapters/active_record/role_adapter.rb
@@ -157,16 +163,23 @@ files:
157
163
  - lib/rolify/configure.rb
158
164
  - lib/rolify/dynamic.rb
159
165
  - lib/rolify/finders.rb
166
+ - lib/rolify/matchers.rb
160
167
  - lib/rolify/railtie.rb
161
168
  - lib/rolify/resource.rb
162
169
  - lib/rolify/role.rb
163
170
  - lib/rolify/utils.rb
164
171
  - lib/rolify/version.rb
165
172
  - rolify.gemspec
166
- - spec/generators/rolify/role/role_generator_spec.rb
173
+ - spec/README.rdoc
174
+ - spec/generators/rolify/rolify_activerecord_generator_spec.rb
175
+ - spec/generators/rolify/rolify_mongoid_generator_spec.rb
176
+ - spec/generators_helper.rb
167
177
  - spec/rolify/config_spec.rb
168
178
  - spec/rolify/custom_spec.rb
179
+ - spec/rolify/matchers_spec.rb
180
+ - spec/rolify/namespace_spec.rb
169
181
  - spec/rolify/resource_spec.rb
182
+ - spec/rolify/resourcifed_and_rolifed_spec.rb
170
183
  - spec/rolify/role_spec.rb
171
184
  - spec/rolify/shared_contexts.rb
172
185
  - spec/rolify/shared_examples/shared_examples_for_add_role.rb
@@ -188,33 +201,38 @@ files:
188
201
  - spec/support/schema.rb
189
202
  homepage: http://eppo.github.com/rolify/
190
203
  licenses: []
204
+ metadata: {}
191
205
  post_install_message:
192
206
  rdoc_options: []
193
207
  require_paths:
194
208
  - lib
195
209
  required_ruby_version: !ruby/object:Gem::Requirement
196
- none: false
197
210
  requirements:
198
- - - ! '>='
211
+ - - ">="
199
212
  - !ruby/object:Gem::Version
200
213
  version: '0'
201
214
  required_rubygems_version: !ruby/object:Gem::Requirement
202
- none: false
203
215
  requirements:
204
- - - ! '>='
216
+ - - ">="
205
217
  - !ruby/object:Gem::Version
206
218
  version: '0'
207
219
  requirements: []
208
220
  rubyforge_project: rolify
209
- rubygems_version: 1.8.17
221
+ rubygems_version: 2.0.3
210
222
  signing_key:
211
- specification_version: 3
223
+ specification_version: 4
212
224
  summary: Roles library with resource scoping
213
225
  test_files:
214
- - spec/generators/rolify/role/role_generator_spec.rb
226
+ - spec/README.rdoc
227
+ - spec/generators/rolify/rolify_activerecord_generator_spec.rb
228
+ - spec/generators/rolify/rolify_mongoid_generator_spec.rb
229
+ - spec/generators_helper.rb
215
230
  - spec/rolify/config_spec.rb
216
231
  - spec/rolify/custom_spec.rb
232
+ - spec/rolify/matchers_spec.rb
233
+ - spec/rolify/namespace_spec.rb
217
234
  - spec/rolify/resource_spec.rb
235
+ - spec/rolify/resourcifed_and_rolifed_spec.rb
218
236
  - spec/rolify/role_spec.rb
219
237
  - spec/rolify/shared_contexts.rb
220
238
  - spec/rolify/shared_examples/shared_examples_for_add_role.rb
@@ -234,3 +252,4 @@ test_files:
234
252
  - spec/support/adapters/mongoid.yml
235
253
  - spec/support/data.rb
236
254
  - spec/support/schema.rb
255
+ has_rdoc:
@@ -1,49 +0,0 @@
1
- require 'rails/generators/migration'
2
-
3
- module Rolify
4
- module Generators
5
- class RoleGenerator < Rails::Generators::Base
6
- include Rails::Generators::Migration
7
-
8
- source_root File.expand_path('../templates', __FILE__)
9
- argument :role_cname, :type => :string, :default => "Role"
10
- argument :user_cname, :type => :string, :default => "User"
11
- argument :orm_adapter, :type => :string, :default => "active_record"
12
- #class_option :dynamic_shortcuts, :type => :boolean, :default => false
13
-
14
- desc "Generates a model with the given NAME and a migration file."
15
-
16
- def generate_role
17
- template "role-#{orm_adapter}.rb", "app/models/#{role_cname.underscore}.rb"
18
- inject_into_file(model_path, :after => inject_rolify_method) do
19
- " rolify" + (role_cname == "Role" ? "" : " :role_cname => '#{role_cname.camelize}'") + "\n"
20
- end
21
- end
22
-
23
- def copy_role_file
24
- template "initializer.rb", "config/initializers/rolify.rb"
25
- migration_template "migration.rb", "db/migrate/rolify_create_#{role_cname.tableize}" if orm_adapter == "active_record"
26
- end
27
-
28
- def model_path
29
- File.join("app", "models", "#{user_cname.underscore}.rb")
30
- end
31
-
32
- def self.next_migration_number(path)
33
- Time.now.utc.strftime("%Y%m%d%H%M%S")
34
- end
35
-
36
- def show_readme
37
- readme "README-#{orm_adapter}" if behavior == :invoke
38
- end
39
-
40
- def inject_rolify_method
41
- if orm_adapter == "active_record"
42
- /class #{user_cname.camelize}\n|class #{user_cname.camelize} .*\n/
43
- else
44
- /include Mongoid::Document\n|include Mongoid::Document .*\n/
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,11 +0,0 @@
1
- ===============================================================================
2
-
3
- Now, you just have to run the migration using rake command:
4
-
5
- rake db:migrate
6
-
7
- An initializer file has been created here: config/initializers/rolify.rb,
8
- you can change rolify settings to match your needs.
9
- Defaults values are commented out.
10
-
11
- ===============================================================================
@@ -1,21 +0,0 @@
1
- ===============================================================================
2
-
3
- An initializer file has been created here: config/initializers/rolify.rb, you
4
- can change rolify settings to match your needs.
5
- Defaults values are commented out.
6
-
7
- A Role class has been been created in app/models (with the name you gave as
8
- argument otherwise the default is role.rb), you can add your own business logic
9
- inside.
10
-
11
- Inside your User class (or the name you gave as argument otherwise the default
12
- is user.rb), rolify method has been inserted to provide rolify methods.
13
-
14
- Now, if you just have to run the migration using rake command:
15
-
16
- rake db:migrate
17
-
18
- and you will be able to add the resourcify method inside all models you want
19
- scoped by a role.
20
-
21
- ===============================================================================
@@ -1,19 +0,0 @@
1
- class RolifyCreate<%= role_cname.pluralize.camelize %> < ActiveRecord::Migration
2
- def change
3
- create_table(:<%= role_cname.tableize %>) do |t|
4
- t.string :name
5
- t.references :resource, :polymorphic => true
6
-
7
- t.timestamps
8
- end
9
-
10
- create_table(:<%= (user_cname.tableize + "_" + role_cname.tableize) %>, :id => false) do |t|
11
- t.references :<%= user_cname.underscore.singularize %>
12
- t.references :<%= role_cname.underscore.singularize %>
13
- end
14
-
15
- add_index(:<%= role_cname.tableize %>, :name)
16
- add_index(:<%= role_cname.tableize %>, [ :name, :resource_type, :resource_id ])
17
- add_index(:<%= "#{user_cname.tableize}_#{role_cname.tableize}" %>, [ :<%= user_cname.underscore.singularize %>_id, :<%= role_cname.underscore.singularize %>_id ])
18
- end
19
- end
@@ -1,6 +0,0 @@
1
- class <%= role_cname.camelize %> < ActiveRecord::Base
2
- has_and_belongs_to_many :<%= user_cname.tableize %>, :join_table => :<%= "#{user_cname.tableize}_#{role_cname.tableize}" %>
3
- belongs_to :resource, :polymorphic => true
4
-
5
- scopify
6
- end