rolify 3.3.0.rc2 → 3.3.0.rc3
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/Rakefile +13 -1
- data/lib/generators/active_record/rolify_generator.rb +50 -0
- data/lib/generators/{rolify/role/templates/README-active_record → active_record/templates/README} +0 -0
- data/lib/generators/active_record/templates/migration.rb +19 -0
- data/lib/generators/mongoid/rolify_generator.rb +51 -0
- data/lib/generators/{rolify/role → mongoid}/templates/README-mongoid +0 -0
- data/lib/generators/rolify/rolify_generator.rb +35 -0
- data/lib/generators/rolify/{role/templates → templates}/README +0 -0
- data/lib/generators/rolify/{role/templates → templates}/initializer.rb +2 -2
- data/lib/generators/rolify/templates/role-active_record.rb +11 -0
- data/lib/generators/rolify/{role/templates → templates}/role-mongoid.rb +0 -0
- data/lib/generators/rolify/user_generator.rb +39 -0
- data/lib/rolify/version.rb +1 -1
- data/spec/generators/rolify/{role/role_generator_spec.rb → rolify_generator_spec.rb} +115 -13
- data/spec/generators_helper.rb +14 -0
- data/spec/rolify/shared_examples/shared_examples_for_scopes.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- metadata +18 -13
- data/lib/generators/rolify/role/role_generator.rb +0 -52
- data/lib/generators/rolify/role/templates/migration.rb +0 -19
- data/lib/generators/rolify/role/templates/role-active_record.rb +0 -6
data/Rakefile
CHANGED
|
@@ -5,5 +5,17 @@ task :default => :spec
|
|
|
5
5
|
|
|
6
6
|
desc "Run all specs"
|
|
7
7
|
task "spec" do
|
|
8
|
-
|
|
8
|
+
Rake::Task['generators'].invoke
|
|
9
|
+
return_code1 = $?.exitstatus
|
|
10
|
+
Rake::Task['rolify'].invoke
|
|
11
|
+
return_code2 = $?.exitstatus
|
|
12
|
+
fail if return_code1 != 0 || return_code2 != 0
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
task "generators" do
|
|
16
|
+
system "bundle exec rspec spec/generators"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
task "rolify" do
|
|
20
|
+
system "bundle exec rspec spec/rolify"
|
|
9
21
|
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'rails/generators/active_record'
|
|
2
|
+
require 'active_support/core_ext'
|
|
3
|
+
|
|
4
|
+
module ActiveRecord
|
|
5
|
+
module Generators
|
|
6
|
+
class RolifyGenerator < ActiveRecord::Generators::Base
|
|
7
|
+
source_root File.expand_path("../templates", __FILE__)
|
|
8
|
+
|
|
9
|
+
argument :user_cname, :type => :string, :default => "User", :banner => "User"
|
|
10
|
+
|
|
11
|
+
def generate_model
|
|
12
|
+
invoke "active_record:model", [ name ], :migration => false
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def inject_role_class
|
|
16
|
+
inject_into_class(model_path, class_name, model_content)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def copy_rolify_migration
|
|
20
|
+
migration_template "migration.rb", "db/migrate/rolify_create_#{table_name}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def join_table
|
|
24
|
+
user_cname.constantize.table_name + "_" + table_name
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def user_reference
|
|
28
|
+
user_cname.demodulize.underscore
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def role_reference
|
|
32
|
+
class_name.demodulize.underscore
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def model_path
|
|
36
|
+
File.join("app", "models", "#{file_path}.rb")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def model_content
|
|
40
|
+
content = <<RUBY
|
|
41
|
+
has_and_belongs_to_many :%{user_cname}, :join_table => :%{join_table}
|
|
42
|
+
belongs_to :resource, :polymorphic => true
|
|
43
|
+
|
|
44
|
+
scopify
|
|
45
|
+
RUBY
|
|
46
|
+
content % { :user_cname => user_cname.constantize.table_name, :join_table => "#{user_cname.constantize.table_name}_#{table_name}"}
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/lib/generators/{rolify/role/templates/README-active_record → active_record/templates/README}
RENAMED
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class RolifyCreate<%= table_name.camelize %> < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table(:<%= table_name %>) do |t|
|
|
4
|
+
t.string :name
|
|
5
|
+
t.references :resource, :polymorphic => true
|
|
6
|
+
|
|
7
|
+
t.timestamps
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
create_table(:<%= join_table %>, :id => false) do |t|
|
|
11
|
+
t.references :<%= user_reference %>
|
|
12
|
+
t.references :<%= role_reference %>
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
add_index(:<%= table_name %>, :name)
|
|
16
|
+
add_index(:<%= table_name %>, [ :name, :resource_type, :resource_id ])
|
|
17
|
+
add_index(:<%= join_table %>, [ :<%= user_reference %>_id, :<%= role_reference %>_id ])
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'rails/generators/mongoid_generator'
|
|
2
|
+
require 'active_support/core_ext'
|
|
3
|
+
|
|
4
|
+
module Mongoid
|
|
5
|
+
module Generators
|
|
6
|
+
class RolifyGenerator < Rails::Generators::NamedBase
|
|
7
|
+
source_root File.expand_path("../templates", __FILE__)
|
|
8
|
+
|
|
9
|
+
argument :user_cname, :type => :string, :default => "User", :banner => "User"
|
|
10
|
+
|
|
11
|
+
def generate_model
|
|
12
|
+
invoke "mongoid:model", [ name ]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def inject_role_class
|
|
16
|
+
inject_into_file(model_path, model_contents, :after => "include Mongoid::Document\n")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def user_reference
|
|
20
|
+
user_cname.demodulize.underscore
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def role_reference
|
|
24
|
+
class_name.demodulize.underscore
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def model_path
|
|
28
|
+
File.join("app", "models", "#{file_path}.rb")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def model_contents
|
|
32
|
+
content = <<RUBY
|
|
33
|
+
has_and_belongs_to_many :%{user_cname}
|
|
34
|
+
belongs_to :resource, :polymorphic => true
|
|
35
|
+
|
|
36
|
+
field :name, :type => String
|
|
37
|
+
|
|
38
|
+
index({
|
|
39
|
+
:name => 1,
|
|
40
|
+
:resource_type => 1,
|
|
41
|
+
:resource_id => 1
|
|
42
|
+
},
|
|
43
|
+
{ :unique => true})
|
|
44
|
+
|
|
45
|
+
scopify
|
|
46
|
+
RUBY
|
|
47
|
+
content % { :user_cname => user_cname.constantize.table_name }
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Rolify
|
|
2
|
+
module Generators
|
|
3
|
+
class RolifyGenerator < Rails::Generators::NamedBase
|
|
4
|
+
Rails::Generators::ResourceHelpers
|
|
5
|
+
|
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
7
|
+
argument :user_cname, :type => :string, :default => "User"
|
|
8
|
+
|
|
9
|
+
namespace :rolify
|
|
10
|
+
hook_for :orm, :required => true
|
|
11
|
+
|
|
12
|
+
desc "Generates a model with the given NAME and a migration file."
|
|
13
|
+
|
|
14
|
+
def self.start(args, config)
|
|
15
|
+
user_cname = args.size > 1 ? args[1] : "User"
|
|
16
|
+
args.insert(1, user_cname) # 0 being the view name
|
|
17
|
+
super
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def inject_user_class
|
|
21
|
+
invoke "rolify:user", [ user_cname, class_name ], :orm => options.orm
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def copy_initializer_file
|
|
25
|
+
template "initializer.rb", "config/initializers/rolify.rb"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def show_readme
|
|
29
|
+
if behavior == :invoke
|
|
30
|
+
readme "README"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Rolify.configure<%= "(\"#{
|
|
1
|
+
Rolify.configure<%= "(\"#{class_name.camelize.to_s}\")" if class_name != "Role" %> do |config|
|
|
2
2
|
# By default ORM adapter is ActiveRecord. uncomment to use mongoid
|
|
3
|
-
<%= "# " if
|
|
3
|
+
<%= "# " if options.orm == :active_record || !options.orm %>config.use_mongoid
|
|
4
4
|
|
|
5
5
|
# Dynamic shortcuts for User class (user.is_admin? like methods). Default is: false
|
|
6
6
|
# Enable this feature _after_ running rake db:migrate as it relies on the roles table
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class <%= role_cname.camelize %> < ActiveRecord::Base
|
|
2
|
+
<% if need_table_prefix?(role_cname) %>
|
|
3
|
+
def self.table_name_prefix
|
|
4
|
+
<%= table_prefix(role_cname) %>_
|
|
5
|
+
end
|
|
6
|
+
<% end %>
|
|
7
|
+
has_and_belongs_to_many :<%= user_cname.tableize %>, :join_table => :<%= "#{table_name(user_cname, true)}_#{table_name(role_cname, true)}" %>
|
|
8
|
+
belongs_to :resource, :polymorphic => true
|
|
9
|
+
|
|
10
|
+
scopify
|
|
11
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'rails/generators/migration'
|
|
2
|
+
require 'active_support/core_ext'
|
|
3
|
+
|
|
4
|
+
module Rolify
|
|
5
|
+
module Generators
|
|
6
|
+
class UserGenerator < Rails::Generators::NamedBase
|
|
7
|
+
argument :role_cname, :type => :string, :default => "Role"
|
|
8
|
+
class_option :orm, :type => :string, :default => "active_record"
|
|
9
|
+
|
|
10
|
+
desc "Inject rolify method in the User class."
|
|
11
|
+
|
|
12
|
+
def inject_user_content
|
|
13
|
+
inject_into_file(model_path, :after => inject_rolify_method) do
|
|
14
|
+
" rolify#{role_association}\n"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def inject_rolify_method
|
|
19
|
+
if options.orm == :active_record
|
|
20
|
+
/class #{class_name.camelize}\n|class #{class_name.camelize} .*\n|class #{class_name.demodulize.camelize}\n|class #{class_name.demodulize.camelize} .*\n/
|
|
21
|
+
else
|
|
22
|
+
/include Mongoid::Document\n|include Mongoid::Document .*\n/
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def model_path
|
|
27
|
+
File.join("app", "models", "#{file_path}.rb")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def role_association
|
|
31
|
+
if role_cname != "Role"
|
|
32
|
+
" :role_cname => '#{role_cname.camelize}'"
|
|
33
|
+
else
|
|
34
|
+
""
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/lib/rolify/version.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'generators_helper'
|
|
2
2
|
|
|
3
3
|
# Generators are not automatically loaded by Rails
|
|
4
|
-
require 'generators/rolify/
|
|
4
|
+
require 'generators/rolify/rolify_generator'
|
|
5
5
|
|
|
6
|
-
describe Rolify::Generators::
|
|
6
|
+
describe Rolify::Generators::RolifyGenerator do
|
|
7
7
|
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
|
8
|
-
destination File.expand_path("
|
|
8
|
+
destination File.expand_path("../../../../tmp", __FILE__)
|
|
9
9
|
teardown :cleanup_destination_root
|
|
10
10
|
|
|
11
11
|
before {
|
|
@@ -16,15 +16,19 @@ describe Rolify::Generators::RoleGenerator do
|
|
|
16
16
|
FileUtils.rm_rf destination_root
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
describe '
|
|
20
|
-
before(:all) { arguments
|
|
19
|
+
describe 'specifying only Role class name' do
|
|
20
|
+
before(:all) { arguments %w(Role) }
|
|
21
21
|
|
|
22
22
|
before {
|
|
23
23
|
capture(:stdout) {
|
|
24
24
|
generator.create_file "app/models/user.rb" do
|
|
25
|
-
|
|
25
|
+
<<-RUBY
|
|
26
|
+
class User < ActiveRecord::Base
|
|
27
|
+
end
|
|
28
|
+
RUBY
|
|
26
29
|
end
|
|
27
30
|
}
|
|
31
|
+
require File.join(destination_root, "app/models/user.rb")
|
|
28
32
|
run_generator
|
|
29
33
|
}
|
|
30
34
|
|
|
@@ -58,7 +62,7 @@ describe Rolify::Generators::RoleGenerator do
|
|
|
58
62
|
end
|
|
59
63
|
end
|
|
60
64
|
|
|
61
|
-
describe 'specifying
|
|
65
|
+
describe 'specifying User and Role class names' do
|
|
62
66
|
before(:all) { arguments %w(AdminRole AdminUser) }
|
|
63
67
|
|
|
64
68
|
before {
|
|
@@ -67,6 +71,7 @@ describe Rolify::Generators::RoleGenerator do
|
|
|
67
71
|
"class AdminUser < ActiveRecord::Base\nend"
|
|
68
72
|
end
|
|
69
73
|
}
|
|
74
|
+
require File.join(destination_root, "app/models/admin_user.rb")
|
|
70
75
|
run_generator
|
|
71
76
|
}
|
|
72
77
|
|
|
@@ -79,7 +84,7 @@ describe Rolify::Generators::RoleGenerator do
|
|
|
79
84
|
it { should contain "# config.use_mongoid" }
|
|
80
85
|
end
|
|
81
86
|
|
|
82
|
-
describe 'app/models/
|
|
87
|
+
describe 'app/models/admin_role.rb' do
|
|
83
88
|
subject { file('app/models/admin_role.rb') }
|
|
84
89
|
|
|
85
90
|
it { should exist }
|
|
@@ -103,21 +108,74 @@ describe Rolify::Generators::RoleGenerator do
|
|
|
103
108
|
end
|
|
104
109
|
end
|
|
105
110
|
|
|
106
|
-
describe 'specifying
|
|
107
|
-
before(:all) { arguments
|
|
111
|
+
describe 'specifying namespaced User and Role class names' do
|
|
112
|
+
before(:all) { arguments %w(Admin::Role Admin::User) }
|
|
113
|
+
|
|
114
|
+
before {
|
|
115
|
+
capture(:stdout) {
|
|
116
|
+
generator.create_file "app/models/admin/user.rb" do
|
|
117
|
+
<<-RUBY
|
|
118
|
+
module Admin
|
|
119
|
+
class User < ActiveRecord::Base
|
|
120
|
+
self.table_name_prefix = 'admin_'
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
RUBY
|
|
124
|
+
end
|
|
125
|
+
}
|
|
126
|
+
require File.join(destination_root, "app/models/admin/user.rb")
|
|
127
|
+
run_generator
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
describe 'config/initializers/rolify.rb' do
|
|
131
|
+
subject { file('config/initializers/rolify.rb') }
|
|
132
|
+
|
|
133
|
+
it { should exist }
|
|
134
|
+
it { should contain "Rolify.configure(\"Admin::Role\") do |config|"}
|
|
135
|
+
it { should contain "# config.use_dynamic_shortcuts" }
|
|
136
|
+
it { should contain "# config.use_mongoid" }
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
describe 'app/models/admin/role.rb' do
|
|
140
|
+
subject { file('app/models/admin/role.rb') }
|
|
141
|
+
|
|
142
|
+
it { should exist }
|
|
143
|
+
it { should contain "class Admin::Role < ActiveRecord::Base" }
|
|
144
|
+
it { should contain "has_and_belongs_to_many :admin_users, :join_table => :admin_users_admin_roles" }
|
|
145
|
+
it { should contain "belongs_to :resource, :polymorphic => true" }
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
describe 'app/models/admin/user.rb' do
|
|
149
|
+
subject { file('app/models/admin/user.rb') }
|
|
150
|
+
|
|
151
|
+
it { should contain /class User < ActiveRecord::Base\n rolify :role_cname => 'Admin::Role'\n/ }
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
describe 'migration file' do
|
|
155
|
+
subject { migration_file('db/migrate/rolify_create_admin_roles.rb') }
|
|
156
|
+
|
|
157
|
+
it { should be_a_migration }
|
|
158
|
+
it { should contain "create_table(:admin_roles)" }
|
|
159
|
+
it { should contain "create_table(:admin_users_admin_roles, :id => false) do" }
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
describe 'specifying ORM adapter' do
|
|
164
|
+
before(:all) { arguments [ "Role", "User", "--orm=mongoid" ] }
|
|
108
165
|
|
|
109
166
|
before {
|
|
110
167
|
capture(:stdout) {
|
|
111
168
|
generator.create_file "app/models/user.rb" do
|
|
112
|
-
<<-
|
|
169
|
+
<<-RUBY
|
|
113
170
|
class User
|
|
114
171
|
include Mongoid::Document
|
|
115
172
|
|
|
116
173
|
field :login, :type => String
|
|
117
174
|
end
|
|
118
|
-
|
|
175
|
+
RUBY
|
|
119
176
|
end
|
|
120
177
|
}
|
|
178
|
+
require File.join(destination_root, "app/models/user.rb")
|
|
121
179
|
run_generator
|
|
122
180
|
}
|
|
123
181
|
|
|
@@ -149,4 +207,48 @@ CLASS
|
|
|
149
207
|
it { should contain /class User\n include Mongoid::Document\n rolify\n/ }
|
|
150
208
|
end
|
|
151
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
|
|
152
254
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require "bundler/setup"
|
|
3
|
+
|
|
4
|
+
require 'rolify'
|
|
5
|
+
require 'rolify/matchers'
|
|
6
|
+
require 'rails/all'
|
|
7
|
+
|
|
8
|
+
module TestApp
|
|
9
|
+
class Application < ::Rails::Application
|
|
10
|
+
config.root = File.dirname(__FILE__)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
require 'ammeter/init'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require "rolify/shared_contexts"
|
|
2
2
|
|
|
3
3
|
shared_examples_for "Role.scopes" do |param_name, param_method|
|
|
4
|
-
before(:
|
|
4
|
+
before(:each) do
|
|
5
5
|
role_class.destroy_all
|
|
6
6
|
end
|
|
7
7
|
|
|
@@ -28,7 +28,7 @@ shared_examples_for "Role.scopes" do |param_name, param_method|
|
|
|
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.should == [ visitor_role, zombie_role, anonymous_role ] }
|
|
31
|
+
it { subject.roles.instance_scoped.all.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
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rolify
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.3.0.
|
|
4
|
+
version: 3.3.0.rc3
|
|
5
5
|
prerelease: 6
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-02-
|
|
12
|
+
date: 2013-02-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: sqlite3
|
|
@@ -204,14 +204,17 @@ files:
|
|
|
204
204
|
- README.md
|
|
205
205
|
- Rakefile
|
|
206
206
|
- UPGRADE.rdoc
|
|
207
|
-
- lib/generators/
|
|
208
|
-
- lib/generators/
|
|
209
|
-
- lib/generators/
|
|
210
|
-
- lib/generators/
|
|
211
|
-
- lib/generators/
|
|
212
|
-
- lib/generators/rolify/
|
|
213
|
-
- lib/generators/rolify/
|
|
214
|
-
- lib/generators/rolify/
|
|
207
|
+
- lib/generators/active_record/rolify_generator.rb
|
|
208
|
+
- lib/generators/active_record/templates/README
|
|
209
|
+
- lib/generators/active_record/templates/migration.rb
|
|
210
|
+
- lib/generators/mongoid/rolify_generator.rb
|
|
211
|
+
- lib/generators/mongoid/templates/README-mongoid
|
|
212
|
+
- lib/generators/rolify/rolify_generator.rb
|
|
213
|
+
- lib/generators/rolify/templates/README
|
|
214
|
+
- lib/generators/rolify/templates/initializer.rb
|
|
215
|
+
- lib/generators/rolify/templates/role-active_record.rb
|
|
216
|
+
- lib/generators/rolify/templates/role-mongoid.rb
|
|
217
|
+
- lib/generators/rolify/user_generator.rb
|
|
215
218
|
- lib/rolify.rb
|
|
216
219
|
- lib/rolify/adapters/active_record/resource_adapter.rb
|
|
217
220
|
- lib/rolify/adapters/active_record/role_adapter.rb
|
|
@@ -230,7 +233,8 @@ files:
|
|
|
230
233
|
- lib/rolify/utils.rb
|
|
231
234
|
- lib/rolify/version.rb
|
|
232
235
|
- rolify.gemspec
|
|
233
|
-
- spec/generators/rolify/
|
|
236
|
+
- spec/generators/rolify/rolify_generator_spec.rb
|
|
237
|
+
- spec/generators_helper.rb
|
|
234
238
|
- spec/rolify/config_spec.rb
|
|
235
239
|
- spec/rolify/custom_spec.rb
|
|
236
240
|
- spec/rolify/matchers_spec.rb
|
|
@@ -276,12 +280,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
276
280
|
version: 1.3.1
|
|
277
281
|
requirements: []
|
|
278
282
|
rubyforge_project: rolify
|
|
279
|
-
rubygems_version: 1.8.
|
|
283
|
+
rubygems_version: 1.8.25
|
|
280
284
|
signing_key:
|
|
281
285
|
specification_version: 3
|
|
282
286
|
summary: Roles library with resource scoping
|
|
283
287
|
test_files:
|
|
284
|
-
- spec/generators/rolify/
|
|
288
|
+
- spec/generators/rolify/rolify_generator_spec.rb
|
|
289
|
+
- spec/generators_helper.rb
|
|
285
290
|
- spec/rolify/config_spec.rb
|
|
286
291
|
- spec/rolify/custom_spec.rb
|
|
287
292
|
- spec/rolify/matchers_spec.rb
|
|
@@ -1,52 +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
|
-
if behavior == :invoke
|
|
38
|
-
readme "README"
|
|
39
|
-
readme "README-#{orm_adapter}"
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def inject_rolify_method
|
|
44
|
-
if orm_adapter == "active_record"
|
|
45
|
-
/class #{user_cname.camelize}\n|class #{user_cname.camelize} .*\n/
|
|
46
|
-
else
|
|
47
|
-
/include Mongoid::Document\n|include Mongoid::Document .*\n/
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
@@ -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
|