roles_active_record 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 (67) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +13 -0
  5. data/LICENSE +20 -0
  6. data/README.markdown +178 -0
  7. data/Rakefile +28 -0
  8. data/VERSION +1 -0
  9. data/development.sqlite3 +0 -0
  10. data/lib/generators/active_record/roles/roles_generator.rb +46 -0
  11. data/lib/generators/active_record/roles_migration/roles_migration_generator.rb +54 -0
  12. data/lib/generators/active_record/roles_migration/templates/add_admin_flag_strategy.erb +14 -0
  13. data/lib/generators/active_record/roles_migration/templates/add_many_roles_strategy.erb +40 -0
  14. data/lib/generators/active_record/roles_migration/templates/add_one_role_strategy.erb +40 -0
  15. data/lib/generators/active_record/roles_migration/templates/add_role_string_strategy.erb +13 -0
  16. data/lib/generators/active_record/roles_migration/templates/add_roles_mask_to_users_migration.erb +13 -0
  17. data/lib/generators/active_record/setup/setup_generator.rb +40 -0
  18. data/lib/roles_active_record/base.rb +19 -0
  19. data/lib/roles_active_record/namespaces.rb +12 -0
  20. data/lib/roles_active_record/role.rb +24 -0
  21. data/lib/roles_active_record/strategy/multi/many_roles.rb +70 -0
  22. data/lib/roles_active_record/strategy/multi/roles_mask.rb +84 -0
  23. data/lib/roles_active_record/strategy/single/admin_flag.rb +53 -0
  24. data/lib/roles_active_record/strategy/single/one_role.rb +49 -0
  25. data/lib/roles_active_record/strategy/single/role_string.rb +51 -0
  26. data/lib/roles_active_record/strategy.rb +15 -0
  27. data/lib/roles_for_active_record.rb +13 -0
  28. data/lib/views/_multi_role_selector.erb.html +5 -0
  29. data/lib/views/_single_role_selector.erb.html +1 -0
  30. data/roles_active_record.gemspec +161 -0
  31. data/roles_for_ar.gemspec +165 -0
  32. data/sandbox/Rakefile +16 -0
  33. data/sandbox/add_role_to_users_migration.erb +13 -0
  34. data/sandbox/create_roles_migration.erb +12 -0
  35. data/sandbox/create_user_roles_migration.erb +13 -0
  36. data/sandbox/database.log +47 -0
  37. data/sandbox/database.yml +4 -0
  38. data/sandbox/development.sqlite3 +0 -0
  39. data/sandbox/migrate/201002508_create_roles.rb +11 -0
  40. data/sandbox/migrate/20102507_create_users.rb +11 -0
  41. data/sandbox/model_base.rb +46 -0
  42. data/sandbox/test.rb +13 -0
  43. data/spec/db/database.yml +4 -0
  44. data/spec/fixtures/many_roles_setup.rb +8 -0
  45. data/spec/fixtures/one_role_setup.rb +8 -0
  46. data/spec/migrations/admin_flag/004_add_admin_flag_to_users.rb +15 -0
  47. data/spec/migrations/many_roles/002_create_roles.rb +13 -0
  48. data/spec/migrations/many_roles/003_create_user_roles.rb +13 -0
  49. data/spec/migrations/one_role/002_create_roles.rb +12 -0
  50. data/spec/migrations/one_role/003_add_role_to_users.rb +13 -0
  51. data/spec/migrations/role_string/002_add_role_string_to_users.rb +13 -0
  52. data/spec/migrations/roles_mask/005_add_roles_mask_to_users.rb +13 -0
  53. data/spec/migrations/users/001_create_users.rb +11 -0
  54. data/spec/roles_active_record/admin_flag_spec.rb +71 -0
  55. data/spec/roles_active_record/generators/migration_spec_helper.rb +17 -0
  56. data/spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb +67 -0
  57. data/spec/roles_active_record/generators/roles_migration/many_roles_spec.rb +57 -0
  58. data/spec/roles_active_record/generators/roles_migration/one_role_spec.rb +56 -0
  59. data/spec/roles_active_record/generators/roles_migration/role_string_spec.rb +40 -0
  60. data/spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb +36 -0
  61. data/spec/roles_active_record/generators/setup_generator_spec.rb +40 -0
  62. data/spec/roles_active_record/many_roles_spec.rb +69 -0
  63. data/spec/roles_active_record/one_role_spec.rb +68 -0
  64. data/spec/roles_active_record/role_string_spec.rb +68 -0
  65. data/spec/roles_active_record/roles_mask_spec.rb +68 -0
  66. data/spec/spec_helper.rb +57 -0
  67. metadata +318 -0
@@ -0,0 +1,84 @@
1
+ module RoleStrategy::ActiveRecord
2
+ module RolesMask
3
+ def self.default_role_attribute
4
+ :roles_mask
5
+ end
6
+
7
+ def self.included base
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+ def role_attribute
13
+ strategy_class.roles_attribute_name.to_sym
14
+ end
15
+
16
+ def in_role(role)
17
+ mask = calc_index(role.to_s)
18
+ all.select do |user|
19
+ (user.send(role_attribute) & mask) > 0
20
+ end
21
+ end
22
+
23
+ def in_roles(*roles)
24
+ all.select do |user|
25
+ roles.flatten.any? do |role|
26
+ mask = calc_index(role.to_s)
27
+ (user.send(role_attribute) & mask) > 0
28
+ end
29
+ end
30
+ end
31
+
32
+ def calc_index(r)
33
+ 2**strategy_class.valid_roles.index(r.to_sym)
34
+ end
35
+ end
36
+
37
+ module Implementation
38
+ class Roles < ::Set # :nodoc:
39
+ attr_reader :model_instance
40
+
41
+ def initialize(sender, *roles)
42
+ super(*roles)
43
+ @model_instance = sender
44
+ end
45
+
46
+ def <<(role)
47
+ model_instance.roles = super.to_a
48
+ self
49
+ end
50
+ end
51
+
52
+ def role_attribute
53
+ strategy_class.roles_attribute_name
54
+ end
55
+
56
+ # assign roles
57
+ def roles=(*roles)
58
+ the_roles = (roles.flatten.map { |r| r.to_sym } & strategy_class.valid_roles)
59
+ value = the_roles.map{ |r| calc_index(r) }.inject{ |sum, bitvalue| sum + bitvalue }
60
+ puts "value: #{value}"
61
+ self.send "#{role_attribute}=", value
62
+ end
63
+ alias_method :role=, :roles=
64
+
65
+ # query assigned roles
66
+ def roles
67
+ strategy_class::Roles.new(self, strategy_class.valid_roles.reject { |r| ((self.send(role_attribute) || 0) & calc_index(r)).zero? })
68
+ end
69
+
70
+ def roles_list
71
+ roles.to_a
72
+ end
73
+
74
+ protected
75
+
76
+ def calc_index(r)
77
+ 2**strategy_class.valid_roles.index(r)
78
+ end
79
+ end
80
+
81
+ extend Roles::Generic::User::Configuration
82
+ configure
83
+ end
84
+ end
@@ -0,0 +1,53 @@
1
+ module RoleStrategy::ActiveRecord
2
+ module AdminFlag
3
+ def self.default_role_attribute
4
+ :admin_flag
5
+ end
6
+
7
+ def self.included base
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+ def role_attribute
13
+ strategy_class.roles_attribute_name.to_sym
14
+ end
15
+
16
+ def in_role(role_name)
17
+ case role_name.downcase.to_sym
18
+ when :admin
19
+ where(role_attribute => true)
20
+ else
21
+ where(role_attribute => false)
22
+ end
23
+ end
24
+ end
25
+
26
+ module Implementation
27
+ def role_attribute
28
+ strategy_class.roles_attribute_name
29
+ end
30
+
31
+ # assign roles
32
+ def roles=(*new_roles)
33
+ first_role = new_roles.flatten.first
34
+ if valid_role?(first_role)
35
+ self.send("#{role_attribute}=", new_roles.flatten.first.admin?)
36
+ else
37
+ raise ArgumentError, "The role #{first_role} is not a valid role"
38
+ end
39
+ end
40
+
41
+ # query assigned roles
42
+ def roles
43
+ role = self.send(role_attribute) ? strategy_class.admin_role_key : strategy_class.default_role_key
44
+ [role]
45
+ end
46
+ alias_method :roles_list, :roles
47
+
48
+ end # Implementation
49
+
50
+ extend Roles::Generic::User::Configuration
51
+ configure :num => :single
52
+ end
53
+ end
@@ -0,0 +1,49 @@
1
+ class Role < ActiveRecord::Base
2
+ scope :named, lambda{|role_names| where(:name.in => role_names.flatten)}
3
+ belongs_to :user
4
+ end
5
+
6
+ module RoleStrategy::ActiveRecord
7
+ module OneRole
8
+ def self.default_role_attribute
9
+ :one_role
10
+ end
11
+
12
+ def self.included base
13
+ base.extend Roles::Generic::Role::ClassMethods
14
+ base.extend ClassMethods
15
+ base.has_one :one_role, :foreign_key => :role_id, :class_name => 'Role'
16
+ end
17
+
18
+ module ClassMethods
19
+ def in_role(role_name)
20
+ in_roles(role_name)
21
+ end
22
+
23
+ def in_roles(*role_names)
24
+ joins(:one_role) & Role.named(role_names)
25
+ end
26
+ end
27
+
28
+ module Implementation
29
+ # assign roles
30
+ def roles=(*roles)
31
+ raise "Role class #{role_class} does not have a #find_role(role) method" if !role_class.respond_to? :find_role
32
+ first_role = roles.flatten.first
33
+ role_relation = role_class.find_role(first_role)
34
+ self.send("#{role_attribute}=", role_relation)
35
+ end
36
+ alias_method :role=, :roles=
37
+
38
+ # query assigned roles
39
+ def roles
40
+ [self.send(role_attribute).name.to_sym]
41
+ end
42
+ alias_method :roles_list, :roles
43
+
44
+ end
45
+
46
+ extend Roles::Generic::User::Configuration
47
+ configure :num => :single, :type => :role_class
48
+ end
49
+ end
@@ -0,0 +1,51 @@
1
+ module RoleStrategy::ActiveRecord
2
+ module RoleString
3
+ def self.default_role_attribute
4
+ :role_string
5
+ end
6
+
7
+ def self.included base
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+ def role_attribute
13
+ strategy_class.roles_attribute_name.to_sym
14
+ end
15
+
16
+ def in_role(role_name)
17
+ where(role_attribute => role_name)
18
+ end
19
+ end
20
+
21
+
22
+ module Implementation
23
+ def role_attribute
24
+ strategy_class.roles_attribute_name
25
+ end
26
+
27
+ # assign roles
28
+ def roles=(*roles)
29
+ self.role = roles.select_labels.first.to_s
30
+ end
31
+
32
+ def role= role_name
33
+ if role_name.kind_of_label? && valid_role?(role_name)
34
+ self.send("#{role_attribute}=", role_name.to_s)
35
+ end
36
+ end
37
+
38
+ # query assigned roles
39
+ def roles
40
+ role = self.send(role_attribute)
41
+ [role.to_sym]
42
+ end
43
+ alias_method :roles_list, :roles
44
+ end
45
+
46
+ extend Roles::Generic::User::Configuration
47
+ configure :num => :single
48
+ end
49
+ end
50
+
51
+
@@ -0,0 +1,15 @@
1
+ require 'sugar-high/file'
2
+ require 'sugar-high/array'
3
+
4
+ module Roles::Strategy
5
+ class << self
6
+ def role_dir
7
+ File.dirname(__FILE__)
8
+ end
9
+
10
+ def gem_name
11
+ :roles_active_record
12
+ end
13
+ end
14
+ end
15
+
@@ -0,0 +1,13 @@
1
+ require 'roles_generic'
2
+ require 'require_all'
3
+ require 'set'
4
+ require 'sugar-high/array'
5
+
6
+ require 'arel'
7
+ require 'meta_where'
8
+ require 'yaml'
9
+ require 'logger'
10
+
11
+ require 'roles_active_record/namespaces'
12
+ require 'roles_active_record/base'
13
+ require 'roles_active_record/strategy'
@@ -0,0 +1,5 @@
1
+ <% for role in User::ROLES %>
2
+ <%= check_box_tag "user[roles][]", role, @user.roles.include?(role) %>
3
+ <%=h role.humanize %><br />
4
+ <% end %>
5
+ <%= hidden_field_tag "user[roles][]", "" %>
@@ -0,0 +1 @@
1
+ <%= f.collection_select :role, User::ROLES, :to_s, :humanize %>
@@ -0,0 +1,161 @@
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{roles_active_record}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Kristian Mandrup"]
12
+ s.date = %q{2010-09-06}
13
+ s.description = %q{Makes it easy to set a role strategy on your User model in Active Record}
14
+ s.email = %q{kmandrup@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ ".rspec",
23
+ "Gemfile",
24
+ "LICENSE",
25
+ "README.markdown",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "development.sqlite3",
29
+ "lib/generators/active_record/roles/roles_generator.rb",
30
+ "lib/generators/active_record/roles_migration/roles_migration_generator.rb",
31
+ "lib/generators/active_record/roles_migration/templates/add_admin_flag_strategy.erb",
32
+ "lib/generators/active_record/roles_migration/templates/add_many_roles_strategy.erb",
33
+ "lib/generators/active_record/roles_migration/templates/add_one_role_strategy.erb",
34
+ "lib/generators/active_record/roles_migration/templates/add_role_string_strategy.erb",
35
+ "lib/generators/active_record/roles_migration/templates/add_roles_mask_to_users_migration.erb",
36
+ "lib/generators/active_record/setup/setup_generator.rb",
37
+ "lib/roles_active_record/base.rb",
38
+ "lib/roles_active_record/namespaces.rb",
39
+ "lib/roles_active_record/role.rb",
40
+ "lib/roles_active_record/strategy.rb",
41
+ "lib/roles_active_record/strategy/multi/many_roles.rb",
42
+ "lib/roles_active_record/strategy/multi/roles_mask.rb",
43
+ "lib/roles_active_record/strategy/single/admin_flag.rb",
44
+ "lib/roles_active_record/strategy/single/one_role.rb",
45
+ "lib/roles_active_record/strategy/single/role_string.rb",
46
+ "lib/roles_for_active_record.rb",
47
+ "lib/views/_multi_role_selector.erb.html",
48
+ "lib/views/_single_role_selector.erb.html",
49
+ "roles_active_record.gemspec",
50
+ "roles_for_ar.gemspec",
51
+ "sandbox/Rakefile",
52
+ "sandbox/add_role_to_users_migration.erb",
53
+ "sandbox/create_roles_migration.erb",
54
+ "sandbox/create_user_roles_migration.erb",
55
+ "sandbox/database.log",
56
+ "sandbox/database.yml",
57
+ "sandbox/development.sqlite3",
58
+ "sandbox/migrate/201002508_create_roles.rb",
59
+ "sandbox/migrate/20102507_create_users.rb",
60
+ "sandbox/model_base.rb",
61
+ "sandbox/test.rb",
62
+ "spec/db/database.yml",
63
+ "spec/fixtures/many_roles_setup.rb",
64
+ "spec/fixtures/one_role_setup.rb",
65
+ "spec/migrations/admin_flag/004_add_admin_flag_to_users.rb",
66
+ "spec/migrations/many_roles/002_create_roles.rb",
67
+ "spec/migrations/many_roles/003_create_user_roles.rb",
68
+ "spec/migrations/one_role/002_create_roles.rb",
69
+ "spec/migrations/one_role/003_add_role_to_users.rb",
70
+ "spec/migrations/role_string/002_add_role_string_to_users.rb",
71
+ "spec/migrations/roles_mask/005_add_roles_mask_to_users.rb",
72
+ "spec/migrations/users/001_create_users.rb",
73
+ "spec/roles_active_record/admin_flag_spec.rb",
74
+ "spec/roles_active_record/generators/migration_spec_helper.rb",
75
+ "spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
76
+ "spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
77
+ "spec/roles_active_record/generators/roles_migration/one_role_spec.rb",
78
+ "spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
79
+ "spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
80
+ "spec/roles_active_record/generators/setup_generator_spec.rb",
81
+ "spec/roles_active_record/many_roles_spec.rb",
82
+ "spec/roles_active_record/one_role_spec.rb",
83
+ "spec/roles_active_record/role_string_spec.rb",
84
+ "spec/roles_active_record/roles_mask_spec.rb",
85
+ "spec/spec_helper.rb"
86
+ ]
87
+ s.homepage = %q{http://github.com/kristianmandrup/roles_for_dm}
88
+ s.rdoc_options = ["--charset=UTF-8"]
89
+ s.require_paths = ["lib"]
90
+ s.rubygems_version = %q{1.3.7}
91
+ s.summary = %q{Implementation of Roles generic API for Active Record}
92
+ s.test_files = [
93
+ "spec/fixtures/many_roles_setup.rb",
94
+ "spec/fixtures/one_role_setup.rb",
95
+ "spec/migrations/admin_flag/004_add_admin_flag_to_users.rb",
96
+ "spec/migrations/many_roles/002_create_roles.rb",
97
+ "spec/migrations/many_roles/003_create_user_roles.rb",
98
+ "spec/migrations/one_role/002_create_roles.rb",
99
+ "spec/migrations/one_role/003_add_role_to_users.rb",
100
+ "spec/migrations/role_string/002_add_role_string_to_users.rb",
101
+ "spec/migrations/roles_mask/005_add_roles_mask_to_users.rb",
102
+ "spec/migrations/users/001_create_users.rb",
103
+ "spec/roles_active_record/admin_flag_spec.rb",
104
+ "spec/roles_active_record/generators/migration_spec_helper.rb",
105
+ "spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
106
+ "spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
107
+ "spec/roles_active_record/generators/roles_migration/one_role_spec.rb",
108
+ "spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
109
+ "spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
110
+ "spec/roles_active_record/generators/setup_generator_spec.rb",
111
+ "spec/roles_active_record/many_roles_spec.rb",
112
+ "spec/roles_active_record/one_role_spec.rb",
113
+ "spec/roles_active_record/role_string_spec.rb",
114
+ "spec/roles_active_record/roles_mask_spec.rb",
115
+ "spec/spec_helper.rb"
116
+ ]
117
+
118
+ if s.respond_to? :specification_version then
119
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
120
+ s.specification_version = 3
121
+
122
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
123
+ s.add_development_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
124
+ s.add_development_dependency(%q<database_cleaner>, ["~> 0.5.2"])
125
+ s.add_development_dependency(%q<generator-spec>, ["~> 0.4.5"])
126
+ s.add_runtime_dependency(%q<activerecord>, ["~> 3.0.0"])
127
+ s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0"])
128
+ s.add_runtime_dependency(%q<arel>, ["~> 1.0.0"])
129
+ s.add_runtime_dependency(%q<meta_where>, [">= 0.5.2"])
130
+ s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.2"])
131
+ s.add_runtime_dependency(%q<require_all>, ["~> 1.1.0"])
132
+ s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.3"])
133
+ s.add_runtime_dependency(%q<roles_generic>, ["~> 0.2.2"])
134
+ else
135
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
136
+ s.add_dependency(%q<database_cleaner>, ["~> 0.5.2"])
137
+ s.add_dependency(%q<generator-spec>, ["~> 0.4.5"])
138
+ s.add_dependency(%q<activerecord>, ["~> 3.0.0"])
139
+ s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
140
+ s.add_dependency(%q<arel>, ["~> 1.0.0"])
141
+ s.add_dependency(%q<meta_where>, [">= 0.5.2"])
142
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
143
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
144
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.3"])
145
+ s.add_dependency(%q<roles_generic>, ["~> 0.2.2"])
146
+ end
147
+ else
148
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
149
+ s.add_dependency(%q<database_cleaner>, ["~> 0.5.2"])
150
+ s.add_dependency(%q<generator-spec>, ["~> 0.4.5"])
151
+ s.add_dependency(%q<activerecord>, ["~> 3.0.0"])
152
+ s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
153
+ s.add_dependency(%q<arel>, ["~> 1.0.0"])
154
+ s.add_dependency(%q<meta_where>, [">= 0.5.2"])
155
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
156
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
157
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.3"])
158
+ s.add_dependency(%q<roles_generic>, ["~> 0.2.2"])
159
+ end
160
+ end
161
+
@@ -0,0 +1,165 @@
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{roles_for_ar}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Kristian Mandrup"]
12
+ s.date = %q{2010-09-06}
13
+ s.description = %q{Faciliatates adding a role strategy to your Active Record user model}
14
+ s.email = %q{kmandrup@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ ".rspec",
23
+ "Gemfile",
24
+ "LICENSE",
25
+ "README.markdown",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "development.sqlite3",
29
+ "lib/generators/active_record/roles/roles_generator.rb",
30
+ "lib/generators/active_record/roles_migration/roles_migration_generator.rb",
31
+ "lib/generators/active_record/roles_migration/templates/add_admin_flag_strategy.erb",
32
+ "lib/generators/active_record/roles_migration/templates/add_many_roles_strategy.erb",
33
+ "lib/generators/active_record/roles_migration/templates/add_one_role_strategy.erb",
34
+ "lib/generators/active_record/roles_migration/templates/add_role_string_strategy.erb",
35
+ "lib/generators/active_record/roles_migration/templates/add_roles_mask_to_users_migration.erb",
36
+ "lib/generators/active_record/setup/setup_generator.rb",
37
+ "lib/roles_active_record/base.rb",
38
+ "lib/roles_active_record/namespaces.rb",
39
+ "lib/roles_active_record/role.rb",
40
+ "lib/roles_active_record/strategy.rb",
41
+ "lib/roles_active_record/strategy/multi/many_roles.rb",
42
+ "lib/roles_active_record/strategy/multi/roles_mask.rb",
43
+ "lib/roles_active_record/strategy/single/admin_flag.rb",
44
+ "lib/roles_active_record/strategy/single/one_role.rb",
45
+ "lib/roles_active_record/strategy/single/role_string.rb",
46
+ "lib/roles_for_active_record.rb",
47
+ "lib/views/_multi_role_selector.erb.html",
48
+ "lib/views/_single_role_selector.erb.html",
49
+ "sandbox/Rakefile",
50
+ "sandbox/add_role_to_users_migration.erb",
51
+ "sandbox/create_roles_migration.erb",
52
+ "sandbox/create_user_roles_migration.erb",
53
+ "sandbox/database.log",
54
+ "sandbox/database.yml",
55
+ "sandbox/development.sqlite3",
56
+ "sandbox/migrate/201002508_create_roles.rb",
57
+ "sandbox/migrate/20102507_create_users.rb",
58
+ "sandbox/model_base.rb",
59
+ "sandbox/test.rb",
60
+ "spec/db/database.yml",
61
+ "spec/fixtures/many_roles_setup.rb",
62
+ "spec/fixtures/one_role_setup.rb",
63
+ "spec/migrations/admin_flag/004_add_admin_flag_to_users.rb",
64
+ "spec/migrations/many_roles/002_create_roles.rb",
65
+ "spec/migrations/many_roles/003_create_user_roles.rb",
66
+ "spec/migrations/one_role/002_create_roles.rb",
67
+ "spec/migrations/one_role/003_add_role_to_users.rb",
68
+ "spec/migrations/role_string/002_add_role_string_to_users.rb",
69
+ "spec/migrations/roles_mask/005_add_roles_mask_to_users.rb",
70
+ "spec/migrations/users/001_create_users.rb",
71
+ "spec/roles_active_record/admin_flag_spec.rb",
72
+ "spec/roles_active_record/generators/migration_spec_helper.rb",
73
+ "spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
74
+ "spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
75
+ "spec/roles_active_record/generators/roles_migration/one_role_spec.rb",
76
+ "spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
77
+ "spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
78
+ "spec/roles_active_record/generators/setup_generator_spec.rb",
79
+ "spec/roles_active_record/many_roles_spec.rb",
80
+ "spec/roles_active_record/one_role_spec.rb",
81
+ "spec/roles_active_record/role_string_spec.rb",
82
+ "spec/roles_active_record/roles_mask_spec.rb",
83
+ "spec/spec_helper.rb"
84
+ ]
85
+ s.homepage = %q{http://github.com/kristianmandrup/roles_for_dm}
86
+ s.rdoc_options = ["--charset=UTF-8"]
87
+ s.require_paths = ["lib"]
88
+ s.rubygems_version = %q{1.3.7}
89
+ s.summary = %q{Faciliatates adding a role strategy to your Active Record user model}
90
+ s.test_files = [
91
+ "spec/fixtures/many_roles_setup.rb",
92
+ "spec/fixtures/one_role_setup.rb",
93
+ "spec/migrations/admin_flag/004_add_admin_flag_to_users.rb",
94
+ "spec/migrations/many_roles/002_create_roles.rb",
95
+ "spec/migrations/many_roles/003_create_user_roles.rb",
96
+ "spec/migrations/one_role/002_create_roles.rb",
97
+ "spec/migrations/one_role/003_add_role_to_users.rb",
98
+ "spec/migrations/role_string/002_add_role_string_to_users.rb",
99
+ "spec/migrations/roles_mask/005_add_roles_mask_to_users.rb",
100
+ "spec/migrations/users/001_create_users.rb",
101
+ "spec/roles_active_record/admin_flag_spec.rb",
102
+ "spec/roles_active_record/generators/migration_spec_helper.rb",
103
+ "spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
104
+ "spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
105
+ "spec/roles_active_record/generators/roles_migration/one_role_spec.rb",
106
+ "spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
107
+ "spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
108
+ "spec/roles_active_record/generators/setup_generator_spec.rb",
109
+ "spec/roles_active_record/many_roles_spec.rb",
110
+ "spec/roles_active_record/one_role_spec.rb",
111
+ "spec/roles_active_record/role_string_spec.rb",
112
+ "spec/roles_active_record/roles_mask_spec.rb",
113
+ "spec/spec_helper.rb"
114
+ ]
115
+
116
+ if s.respond_to? :specification_version then
117
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
118
+ s.specification_version = 3
119
+
120
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
121
+ s.add_development_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
122
+ s.add_development_dependency(%q<yaml>, [">= 0"])
123
+ s.add_development_dependency(%q<logger>, [">= 0"])
124
+ s.add_development_dependency(%q<database_cleaner>, [">= 0"])
125
+ s.add_development_dependency(%q<generator_spec>, ["~> 0.4.5"])
126
+ s.add_runtime_dependency(%q<active_record>, ["~> 3.0.0"])
127
+ s.add_runtime_dependency(%q<arel>, ["~> 1.0.0"])
128
+ s.add_runtime_dependency(%q<meta_where>, [">= 0.5.2"])
129
+ s.add_runtime_dependency(%q<active_support>, ["~> 3.0.0"])
130
+ s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.2"])
131
+ s.add_runtime_dependency(%q<require_all>, ["~> 1.1.0"])
132
+ s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.3"])
133
+ s.add_runtime_dependency(%q<roles_generic>, ["~> 0.2.2"])
134
+ else
135
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
136
+ s.add_dependency(%q<yaml>, [">= 0"])
137
+ s.add_dependency(%q<logger>, [">= 0"])
138
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
139
+ s.add_dependency(%q<generator_spec>, ["~> 0.4.5"])
140
+ s.add_dependency(%q<active_record>, ["~> 3.0.0"])
141
+ s.add_dependency(%q<arel>, ["~> 1.0.0"])
142
+ s.add_dependency(%q<meta_where>, [">= 0.5.2"])
143
+ s.add_dependency(%q<active_support>, ["~> 3.0.0"])
144
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
145
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
146
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.3"])
147
+ s.add_dependency(%q<roles_generic>, ["~> 0.2.2"])
148
+ end
149
+ else
150
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
151
+ s.add_dependency(%q<yaml>, [">= 0"])
152
+ s.add_dependency(%q<logger>, [">= 0"])
153
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
154
+ s.add_dependency(%q<generator_spec>, ["~> 0.4.5"])
155
+ s.add_dependency(%q<active_record>, ["~> 3.0.0"])
156
+ s.add_dependency(%q<arel>, ["~> 1.0.0"])
157
+ s.add_dependency(%q<meta_where>, [">= 0.5.2"])
158
+ s.add_dependency(%q<active_support>, ["~> 3.0.0"])
159
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
160
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
161
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.3"])
162
+ s.add_dependency(%q<roles_generic>, ["~> 0.2.2"])
163
+ end
164
+ end
165
+
data/sandbox/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ require 'active_record'
2
+ require 'yaml'
3
+ require 'logger'
4
+
5
+ task :default => :migrate
6
+
7
+ desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
8
+ task :migrate => :environment do
9
+ folder = File.dirname(__FILE__) + '/migrate'
10
+ ActiveRecord::Migrator.migrate(folder, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
11
+ end
12
+
13
+ task :environment do
14
+ ActiveRecord::Base.establish_connection(YAML::load(File.open('database.yml')))
15
+ ActiveRecord::Base.logger = Logger.new(File.open('database.log', 'a'))
16
+ end
@@ -0,0 +1,13 @@
1
+ class AddRoleToUsers < ActiveRecord::Migration
2
+ def self.up
3
+ change_table :<%= table_name %> do |t|
4
+ t.integer :role_id
5
+ end
6
+ end
7
+
8
+ def self.down
9
+ change_table :<%= table_name %> do |t|
10
+ t.remove :role_id
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ class CreateRoles < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :roles do |t|
4
+ t.string :name
5
+ t.timestamps
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table :roles
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ class CreateUserRoles < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :<%= table_name.singularize %>_roles do |t|
4
+ t.integer :<%= table_name.singularize %>_id
5
+ t.integer :role_id
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :<%= table_name.singularize %>_roles
12
+ end
13
+ end