devisable 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.
Files changed (66) hide show
  1. data/Devisable.gemspec +117 -0
  2. data/Gemfile +13 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.rdoc +111 -0
  5. data/Rakefile +56 -0
  6. data/VERSION +1 -0
  7. data/lib/generators/devisable/USAGE +57 -0
  8. data/lib/generators/devisable/devisable_generator.rb +484 -0
  9. data/lib/generators/devisable/templates/app/controllers/registrations_controller.erb +19 -0
  10. data/lib/generators/devisable/templates/app/controllers/users_controller.erb +152 -0
  11. data/lib/generators/devisable/templates/app/controllers/welcome_controller.erb +11 -0
  12. data/lib/generators/devisable/templates/app/helpers/roles_helper.erb +63 -0
  13. data/lib/generators/devisable/templates/app/models/permission.erb +12 -0
  14. data/lib/generators/devisable/templates/app/models/role.erb +5 -0
  15. data/lib/generators/devisable/templates/app/views/roles/_form.erb +29 -0
  16. data/lib/generators/devisable/templates/app/views/roles/edit.erb +6 -0
  17. data/lib/generators/devisable/templates/app/views/roles/index.erb +28 -0
  18. data/lib/generators/devisable/templates/app/views/roles/new.erb +5 -0
  19. data/lib/generators/devisable/templates/app/views/roles/show.erb +10 -0
  20. data/lib/generators/devisable/templates/app/views/shared/_admin_nav.erb +7 -0
  21. data/lib/generators/devisable/templates/app/views/users/_form.erb +23 -0
  22. data/lib/generators/devisable/templates/app/views/users/edit.erb +6 -0
  23. data/lib/generators/devisable/templates/app/views/users/index.erb +27 -0
  24. data/lib/generators/devisable/templates/app/views/users/new.erb +5 -0
  25. data/lib/generators/devisable/templates/app/views/users/show.erb +55 -0
  26. data/lib/generators/devisable/templates/app/views/welcome/welcome_index.erb +3 -0
  27. data/lib/generators/devisable/templates/config/initializers/devise_initializer.erb +239 -0
  28. data/lib/generators/devisable/templates/cucumber/_rake_partial.rb +19 -0
  29. data/lib/generators/devisable/templates/cucumber/devise.feature +78 -0
  30. data/lib/generators/devisable/templates/cucumber/role.feature +79 -0
  31. data/lib/generators/devisable/templates/cucumber/step_definitions/authentication_steps.rb +33 -0
  32. data/lib/generators/devisable/templates/cucumber/step_definitions/generic_steps.rb +23 -0
  33. data/lib/generators/devisable/templates/cucumber/step_definitions/role_steps.rb +32 -0
  34. data/lib/generators/devisable/templates/cucumber/step_definitions/user_steps.rb +30 -0
  35. data/lib/generators/devisable/templates/cucumber/support/_env_partial.rb +57 -0
  36. data/lib/generators/devisable/templates/cucumber/support/_paths_partial.rb +20 -0
  37. data/lib/generators/devisable/templates/cucumber/user.feature +45 -0
  38. data/lib/generators/devisable/templates/partials/_ability_class.rb +53 -0
  39. data/lib/generators/devisable/templates/partials/_access_denied_flash.rb +4 -0
  40. data/lib/generators/devisable/templates/partials/_accessible_permissions_controller.rb +8 -0
  41. data/lib/generators/devisable/templates/partials/_accessible_permissions_model.rb +43 -0
  42. data/lib/generators/devisable/templates/partials/_application_controller_methods.erb +3 -0
  43. data/lib/generators/devisable/templates/partials/_application_controller_methods2.erb +11 -0
  44. data/lib/generators/devisable/templates/partials/_application_current_tab.rb +8 -0
  45. data/lib/generators/devisable/templates/partials/_application_flash.html.erb +4 -0
  46. data/lib/generators/devisable/templates/partials/_environments_development.erb +10 -0
  47. data/lib/generators/devisable/templates/partials/_login_links.erb +18 -0
  48. data/lib/generators/devisable/templates/partials/_migration_down.rb +2 -0
  49. data/lib/generators/devisable/templates/partials/_migration_up.rb +7 -0
  50. data/lib/generators/devisable/templates/partials/_oauth_user_table_fields.erb +1 -0
  51. data/lib/generators/devisable/templates/partials/_permission_equals.rb +8 -0
  52. data/lib/generators/devisable/templates/partials/_permission_manage.js +18 -0
  53. data/lib/generators/devisable/templates/partials/_role_permission.rb +72 -0
  54. data/lib/generators/devisable/templates/partials/_roles_index_delete.erb +7 -0
  55. data/lib/generators/devisable/templates/partials/_user_model_methods.erb +21 -0
  56. data/lib/generators/devisable/templates/partials/_user_role.rb +7 -0
  57. data/lib/generators/devisable/templates/spec/helpers/roles_helper_spec.erb +50 -0
  58. data/lib/generators/devisable/templates/spec/models/ability_spec.erb +69 -0
  59. data/lib/generators/devisable/templates/spec/models/permission_spec.erb +22 -0
  60. data/lib/generators/devisable/templates/spec/models/role_spec.erb +45 -0
  61. data/lib/generators/devisable/templates/spec/models/user_spec.erb +65 -0
  62. data/pkg/devisable-0.1.0.gem +0 -0
  63. data/pkg/devise_generator-0.1.0.gem +0 -0
  64. data/test/helper.rb +18 -0
  65. data/test/test_devise_generator.rb +7 -0
  66. metadata +169 -0
@@ -0,0 +1,7 @@
1
+ <td>
2
+ <%% if role.users.length > 0 %>
3
+ <span title="Roles with associated users cannot be deleted">Delete</span>
4
+ <%% else %>
5
+ <%%= link_to_if(can?(:delete, Role), 'Destroy', role, :confirm => 'Are you sure?', :method => :delete) %></td>
6
+ <%% end %>
7
+ </td>
@@ -0,0 +1,21 @@
1
+ validate :username_or_email_exists
2
+
3
+ # Used for validation. Validates whether a username or email exists because one is required.
4
+ def username_or_email_exists
5
+ if username.blank? && email.blank?
6
+ self.errors.add(:email, "or Username is required.")
7
+ end
8
+ end
9
+
10
+ # Returns the user's email or username depending on which is set
11
+ # @return [String] Return username unless it is blank, then return email
12
+ def display_name
13
+ return self.username.blank? ? self.email : self.username
14
+ end
15
+
16
+ class << self
17
+ # Join to the user role habtm table that restricts output to super admins
18
+ def superadmins
19
+ joins("join roles_users on users.id = roles_users.user_id").where("roles_users.role_id = (select id from roles where name = 'SuperAdmin')");
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ # Determines whether or not a user has a role
2
+ #
3
+ # @param role Name of the role to search for
4
+ # @return [Boolean] True if the user has the specified role
5
+ def role?(role)
6
+ return !!self.roles.find_by_name(role.to_s.camelize)
7
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ # Specs in this file have access to a helper object that includes
4
+ # the RolesHelper. For example:
5
+ #
6
+ # describe RolesHelper do
7
+ # describe "string concat" do
8
+ # it "concats two strings with spaces" do
9
+ # helper.concat_strings("this","that").should == "this that"
10
+ # end
11
+ # end
12
+ # end
13
+ describe RolesHelper do
14
+ #pending "add some examples to (or delete) #{__FILE__}"
15
+
16
+ describe "#permission_checkboxes" do
17
+ it "should contain a model that has controllers" do
18
+ @role = Role.new
19
+ output = permissions_checkboxes(@role, :permission_ids, Role.accessible_permissions, @role.id)
20
+ output['<th>Roles</th>'].should_not == nil
21
+ output['<th>Users</th>'].should_not == nil
22
+ end
23
+
24
+ it "should not contain a model that does not have a controller" do
25
+ @role = Role.new
26
+ output = permissions_checkboxes(@role, :permission_ids, Role.accessible_permissions, @role.id)
27
+ output['<th>Ability</th>'].should == nil
28
+ end
29
+
30
+ it "should not contain a model that does not have a controller" do
31
+ @role = Role.new
32
+ output = permissions_checkboxes(@role, :permission_ids, Role.accessible_permissions, @role.id)
33
+ output['<th>Ability</th>'].should == nil
34
+ end
35
+ end
36
+
37
+ describe "#habtm_checkboxes" do
38
+ it "should contain all roles" do
39
+ Role.new({:name => 'SuperAdmin'}).save
40
+ Role.new({:name => 'Admin'}).save
41
+ Role.new({:name => 'GeneralUser'}).save
42
+ @user = User.new({:email => 'test@tester.com'})
43
+ @accessible_roles = Role.all
44
+ output = habtm_checkboxes(@user, :role_ids, @accessible_roles, :name)
45
+ output['SuperAdmin</label>'].should_not == nil
46
+ output['Admin</label>'].should_not == nil
47
+ output['GeneralUser</label>'].should_not == nil
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ability do
4
+
5
+ before(:each) do
6
+ @role = Role.new({
7
+ :name => 'SuperAdmin'
8
+ })
9
+
10
+ @role2 = Role.new({
11
+ :name => 'RoleUser'
12
+ })
13
+
14
+ @user = User.new({:email => 'fred@testsite.com'})
15
+ @user2 = User.new({:email => 'terry@testsite.com'})
16
+ @user.roles << @role
17
+ @user2.roles << @role2
18
+
19
+ @role.permissions << Permission.new({:model => 'Role',:ability => 'Add'})
20
+ @role.permissions << Permission.new({:model => 'Role',:ability => 'Edit'})
21
+ @role.permissions << Permission.new({:model => 'Role',:ability => 'Delete'})
22
+ @role.permissions << Permission.new({:model => 'Role',:ability => 'View'})
23
+ @role.save
24
+ @user.save
25
+ @user_ability = Ability.new(@user)
26
+
27
+ @role2 = Role.new({
28
+ :name => 'RoleUser'
29
+ })
30
+
31
+ @user2 = User.new({:email => 'terry@testsite.com'})
32
+ @user2.roles << @role2
33
+ @role2.permissions << Permission.new({:model => 'Role',:ability => 'add'})
34
+ @role2.permissions << Permission.new({:model => 'Role',:ability => 'edit'})
35
+ @role2.permissions << Permission.new({:model => 'Role',:ability => 'delete'})
36
+ @role2.permissions << Permission.new({:model => 'Role',:ability => 'View'})
37
+ @role2.save
38
+ @user2.save
39
+ @user_ability2 = Ability.new(@user2)
40
+
41
+ end
42
+
43
+ it "SuperAdmin Can Edit/add/delete/ Roles and Users" do
44
+ @user_ability.can?(:view, Role).should be_true
45
+ @user_ability.can?(:add, Role).should be_true
46
+ @user_ability.can?(:edit, Role).should be_true
47
+ @user_ability.can?(:delete, Role).should be_true
48
+
49
+ @user_ability.can?(:view, User).should be_true
50
+ @user_ability.can?(:add, User).should be_true
51
+ @user_ability.can?(:edit, User).should be_true
52
+ @user_ability.can?(:delete, User).should be_true
53
+ end
54
+
55
+ it "User with Role Permissions Can Edit/add/delete/ Roles" do
56
+ @user_ability2.can?(:view, Role).should be_true
57
+ @user_ability2.can?(:add, Role).should be_true
58
+ @user_ability2.can?(:edit, Role).should be_true
59
+ @user_ability2.can?(:delete, Role).should be_true
60
+ end
61
+
62
+ it "User with Role Permissions Can NOT Edit/add/delete/ User" do
63
+ @user_ability2.can?(:view, User).should be_false
64
+ @user_ability2.can?(:add, User).should be_false
65
+ @user_ability2.can?(:edit, User).should be_false
66
+ @user_ability2.can?(:delete, User).should be_false
67
+ end
68
+
69
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Permission do
4
+ before(:each) do
5
+ @permission_1 = Permission.new({:role_id => 1,:model => 'Role'})
6
+ @permission_2 = Permission.new({:role_id => 1,:model => 'Role'})
7
+ @permission_3 = Permission.new({:role_id => 2,:model => 'Role'})
8
+ @permission_4 = Permission.new({:role_id => 1,:model => 'User'})
9
+ end
10
+
11
+ it "should be equal if the role and model are the same" do
12
+ (@permission_1 == @permission_2).should be_true
13
+ end
14
+
15
+ it "should NOT be equal if the roles are different" do
16
+ (@permission_1 == @permission_3).should be_false
17
+ end
18
+
19
+ it "should NOT be equal if the models are different" do
20
+ (@permission_1 == @permission_4).should be_false
21
+ end
22
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ module RoleSpecHelper
4
+ def valid_role_attributes
5
+ {
6
+ :name => "Super Admin"
7
+ }
8
+ end
9
+ end
10
+
11
+ describe Role do
12
+ include RoleSpecHelper
13
+
14
+ before(:each) do
15
+ @role = Role.new
16
+ @role2 = Role.new({
17
+ :name => 'Scott'
18
+ })
19
+ @user = User.new({:email => 'fred@testsite.com'})
20
+ @permission = Permission.new({:model => 'User',:ability => 'Add'})
21
+ end
22
+
23
+ it "should require a name" do
24
+ @role.should_not be_valid
25
+ end
26
+
27
+ it "should be valid with a name" do
28
+ @role2.should be_valid
29
+ end
30
+
31
+ it "should have many users" do
32
+ @role2.users << @user
33
+ @role2.save
34
+ (@role2.users.length > 0).should be_true
35
+ end
36
+
37
+ it "should have many permissions" do
38
+ @role2.permissions << @permission
39
+ @role2.save
40
+ (@role2.permissions.length > 0).should be_true
41
+ end
42
+
43
+
44
+
45
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe User do
4
+ before(:each) do
5
+ @role = Role.new({
6
+ :name => 'Admin'
7
+ })
8
+ @role2 = Role.new({
9
+ :name => 'SuperAdmin'
10
+ })
11
+ @role.save
12
+ @role2.save
13
+ @user = User.new({:email => 'fred@testsite.com'})
14
+ @user2 = User.new({:email => 'fred2@testsite.com',:username => 'fred2'})
15
+ @user3 = User.new({:username => 'fred3'})
16
+ @user4 = User.new()
17
+ @user.roles << @role
18
+ @user.save
19
+ @user2.roles << @role2
20
+ @user2.save
21
+ end
22
+
23
+ it "should have the role Admin if assigned the Admin Role" do
24
+ @user.role?('Admin').should be_true
25
+ end
26
+
27
+ it "should not have the role SuperAdmin if assigned the Admin Role" do
28
+ @user.role?('SuperAdmin').should be_false
29
+ end
30
+
31
+ it "should have username fred@testsite.com if there is no username" do
32
+ (@user.display_name == 'fred@testsite.com').should be_true
33
+ end
34
+
35
+ it "should have username fred if there is a username and an email" do
36
+ (@user2.display_name == 'fred2').should be_true
37
+ end
38
+
39
+ it "should have username fred if there is a username and no email" do
40
+ @user2.email = ''
41
+ (@user2.display_name == 'fred2').should be_true
42
+ end
43
+
44
+ it "should only show Fred2 for the superadmins" do
45
+ User.superadmins.include?(@user2).should be_true
46
+ User.superadmins.include?(@user).should be_false
47
+ end
48
+
49
+ it "should require a username or email" do
50
+ @user4.should_not be_valid
51
+ end
52
+
53
+ it "should be valid with a username" do
54
+ @user3.should be_valid
55
+ end
56
+
57
+ it "should be valid with an email" do
58
+ @user.should be_valid
59
+ end
60
+
61
+ it "should be valid with a username and email" do
62
+ @user2.should be_valid
63
+ end
64
+
65
+ end
Binary file
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'devise_generator'
16
+
17
+ class Test::Unit::TestCase
18
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestDeviseGenerator < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,169 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: devisable
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Scott Sampson
9
+ - Jeremiah Hemphill
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-03-23 00:00:00 -04:00
15
+ default_executable:
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: shoulda
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :development
26
+ prerelease: false
27
+ version_requirements: *id001
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 1.0.0
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: *id002
39
+ - !ruby/object:Gem::Dependency
40
+ name: jeweler
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 1.5.2
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: *id003
50
+ - !ruby/object:Gem::Dependency
51
+ name: rcov
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ type: :development
59
+ prerelease: false
60
+ version_requirements: *id004
61
+ description: Generates initial code for a devise install. Gives the options for oauth, using cancan, and creating a user tool to manage the users.
62
+ email: scott@cloudspace.com
63
+ executables: []
64
+
65
+ extensions: []
66
+
67
+ extra_rdoc_files:
68
+ - LICENSE.txt
69
+ - README.rdoc
70
+ files:
71
+ - Devisable.gemspec
72
+ - Gemfile
73
+ - LICENSE.txt
74
+ - README.rdoc
75
+ - Rakefile
76
+ - VERSION
77
+ - lib/generators/devisable/USAGE
78
+ - lib/generators/devisable/devisable_generator.rb
79
+ - lib/generators/devisable/templates/app/controllers/registrations_controller.erb
80
+ - lib/generators/devisable/templates/app/controllers/users_controller.erb
81
+ - lib/generators/devisable/templates/app/controllers/welcome_controller.erb
82
+ - lib/generators/devisable/templates/app/helpers/roles_helper.erb
83
+ - lib/generators/devisable/templates/app/models/permission.erb
84
+ - lib/generators/devisable/templates/app/models/role.erb
85
+ - lib/generators/devisable/templates/app/views/roles/_form.erb
86
+ - lib/generators/devisable/templates/app/views/roles/edit.erb
87
+ - lib/generators/devisable/templates/app/views/roles/index.erb
88
+ - lib/generators/devisable/templates/app/views/roles/new.erb
89
+ - lib/generators/devisable/templates/app/views/roles/show.erb
90
+ - lib/generators/devisable/templates/app/views/shared/_admin_nav.erb
91
+ - lib/generators/devisable/templates/app/views/users/_form.erb
92
+ - lib/generators/devisable/templates/app/views/users/edit.erb
93
+ - lib/generators/devisable/templates/app/views/users/index.erb
94
+ - lib/generators/devisable/templates/app/views/users/new.erb
95
+ - lib/generators/devisable/templates/app/views/users/show.erb
96
+ - lib/generators/devisable/templates/app/views/welcome/welcome_index.erb
97
+ - lib/generators/devisable/templates/config/initializers/devise_initializer.erb
98
+ - lib/generators/devisable/templates/cucumber/_rake_partial.rb
99
+ - lib/generators/devisable/templates/cucumber/devise.feature
100
+ - lib/generators/devisable/templates/cucumber/role.feature
101
+ - lib/generators/devisable/templates/cucumber/step_definitions/authentication_steps.rb
102
+ - lib/generators/devisable/templates/cucumber/step_definitions/generic_steps.rb
103
+ - lib/generators/devisable/templates/cucumber/step_definitions/role_steps.rb
104
+ - lib/generators/devisable/templates/cucumber/step_definitions/user_steps.rb
105
+ - lib/generators/devisable/templates/cucumber/support/_env_partial.rb
106
+ - lib/generators/devisable/templates/cucumber/support/_paths_partial.rb
107
+ - lib/generators/devisable/templates/cucumber/user.feature
108
+ - lib/generators/devisable/templates/partials/_ability_class.rb
109
+ - lib/generators/devisable/templates/partials/_access_denied_flash.rb
110
+ - lib/generators/devisable/templates/partials/_accessible_permissions_controller.rb
111
+ - lib/generators/devisable/templates/partials/_accessible_permissions_model.rb
112
+ - lib/generators/devisable/templates/partials/_application_controller_methods.erb
113
+ - lib/generators/devisable/templates/partials/_application_controller_methods2.erb
114
+ - lib/generators/devisable/templates/partials/_application_current_tab.rb
115
+ - lib/generators/devisable/templates/partials/_application_flash.html.erb
116
+ - lib/generators/devisable/templates/partials/_environments_development.erb
117
+ - lib/generators/devisable/templates/partials/_login_links.erb
118
+ - lib/generators/devisable/templates/partials/_migration_down.rb
119
+ - lib/generators/devisable/templates/partials/_migration_up.rb
120
+ - lib/generators/devisable/templates/partials/_oauth_user_table_fields.erb
121
+ - lib/generators/devisable/templates/partials/_permission_equals.rb
122
+ - lib/generators/devisable/templates/partials/_permission_manage.js
123
+ - lib/generators/devisable/templates/partials/_role_permission.rb
124
+ - lib/generators/devisable/templates/partials/_roles_index_delete.erb
125
+ - lib/generators/devisable/templates/partials/_user_model_methods.erb
126
+ - lib/generators/devisable/templates/partials/_user_role.rb
127
+ - lib/generators/devisable/templates/spec/helpers/roles_helper_spec.erb
128
+ - lib/generators/devisable/templates/spec/models/ability_spec.erb
129
+ - lib/generators/devisable/templates/spec/models/permission_spec.erb
130
+ - lib/generators/devisable/templates/spec/models/role_spec.erb
131
+ - lib/generators/devisable/templates/spec/models/user_spec.erb
132
+ - pkg/devisable-0.1.0.gem
133
+ - pkg/devise_generator-0.1.0.gem
134
+ - test/helper.rb
135
+ - test/test_devise_generator.rb
136
+ has_rdoc: true
137
+ homepage: http://github.com/scottsampson/devisable
138
+ licenses:
139
+ - MIT
140
+ post_install_message:
141
+ rdoc_options: []
142
+
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ hash: -2899734110513776136
151
+ segments:
152
+ - 0
153
+ version: "0"
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: "0"
160
+ requirements: []
161
+
162
+ rubyforge_project:
163
+ rubygems_version: 1.6.2
164
+ signing_key:
165
+ specification_version: 3
166
+ summary: Generates a complete devise install including cancan, and oauth
167
+ test_files:
168
+ - test/helper.rb
169
+ - test/test_devise_generator.rb