roles_generic 0.1.1 → 0.2.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.
- data/README.markdown +63 -207
 - data/Rakefile +6 -4
 - data/VERSION +1 -1
 - data/lib/generators/roles_model/roles/roles_generator.rb +4 -2
 - data/lib/roles_generic/base.rb +11 -15
 - data/lib/roles_generic/generic/role.rb +18 -0
 - data/lib/roles_generic/generic/{class_methods.rb → user/class_methods.rb} +2 -3
 - data/lib/roles_generic/generic/{util.rb → user/configuration.rb} +6 -6
 - data/lib/roles_generic/generic/{implementation.rb → user/implementation.rb} +1 -1
 - data/lib/roles_generic/generic/user.rb +22 -0
 - data/lib/roles_generic/generic.rb +3 -68
 - data/lib/roles_generic/namespaces.rb +13 -0
 - data/lib/roles_generic/{many_roles.rb → strategy/multi/many_roles.rb} +3 -4
 - data/lib/roles_generic/{role_strings.rb → strategy/multi/role_strings.rb} +9 -3
 - data/lib/roles_generic/{roles_mask.rb → strategy/multi/roles_mask.rb} +2 -2
 - data/lib/roles_generic/{roles_string.rb → strategy/multi/roles_string.rb} +2 -4
 - data/lib/roles_generic/{admin_flag.rb → strategy/single/admin_flag.rb} +2 -2
 - data/lib/roles_generic/{one_role.rb → strategy/single/one_role.rb} +3 -4
 - data/lib/roles_generic/{role_string.rb → strategy/single/role_string.rb} +2 -2
 - data/lib/roles_generic/strategy.rb +26 -0
 - data/lib/roles_generic.rb +8 -1
 - data/roles_generic.gemspec +124 -0
 - data/spec/generators/admin_flag_generator_spec.rb +2 -2
 - data/spec/generators/many_roles_generator_spec.rb +1 -1
 - data/spec/generators/one_role_generator_spec.rb +1 -1
 - data/spec/generators/role_string_generator_spec.rb +1 -1
 - data/spec/generators/role_strings_generator_spec.rb +1 -1
 - data/spec/generators/roles_mask_generator_spec.rb +1 -1
 - data/spec/generators/roles_string_generator_spec.rb +1 -1
 - data/spec/roles_generic/admin_flag_spec.rb +3 -3
 - data/spec/roles_generic/many_roles_spec.rb +4 -3
 - data/spec/roles_generic/one_role_spec.rb +4 -3
 - data/spec/roles_generic/role_string_spec.rb +3 -3
 - data/spec/roles_generic/role_strings_spec.rb +3 -3
 - data/spec/roles_generic/roles_mask_spec.rb +3 -3
 - data/spec/roles_generic/roles_string_spec.rb +3 -3
 - data/spec/spec_helper.rb +1 -1
 - data/wiki/strategies/admin_flag.textile +20 -0
 - data/wiki/strategies/many_roles.textile +48 -0
 - data/wiki/strategies/one_role.textile +40 -0
 - data/wiki/strategies/role_string.textile +20 -0
 - data/wiki/strategies/role_strings.textile +20 -0
 - data/wiki/strategies/roles_mask.textile +20 -0
 - data/wiki/strategies/roles_string.textile +20 -0
 - metadata +61 -22
 - data/lib/roles_generic/extensions/core_ext.rb +0 -19
 - data/lib/roles_generic/role/class_methods.rb +0 -20
 
| 
         @@ -1,6 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RoleModels::Generic
         
     | 
| 
      
 1 
     | 
    
         
            +
            module RoleStrategy::Generic
         
     | 
| 
       4 
2 
     | 
    
         
             
              module RolesString    
         
     | 
| 
       5 
3 
     | 
    
         
             
                def self.default_role_attribute
         
     | 
| 
       6 
4 
     | 
    
         
             
                  :roles_string
         
     | 
| 
         @@ -20,7 +18,7 @@ module RoleModels::Generic 
     | 
|
| 
       20 
18 
     | 
    
         
             
                  alias_method :roles_list, :roles
         
     | 
| 
       21 
19 
     | 
    
         
             
                end
         
     | 
| 
       22 
20 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                extend  
     | 
| 
      
 21 
     | 
    
         
            +
                extend Roles::Generic::User::Configuration
         
     | 
| 
       24 
22 
     | 
    
         
             
                configure            
         
     | 
| 
       25 
23 
     | 
    
         
             
              end
         
     | 
| 
       26 
24 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module  
     | 
| 
      
 1 
     | 
    
         
            +
            module RoleStrategy::Generic
         
     | 
| 
       2 
2 
     | 
    
         
             
              module AdminFlag    
         
     | 
| 
       3 
3 
     | 
    
         
             
                def self.default_role_attribute
         
     | 
| 
       4 
4 
     | 
    
         
             
                  :admin_flag
         
     | 
| 
         @@ -20,7 +20,7 @@ module RoleModels::Generic 
     | 
|
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                end # Implementation
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                extend  
     | 
| 
      
 23 
     | 
    
         
            +
                extend extend Roles::Generic::User::Configuration
         
     | 
| 
       24 
24 
     | 
    
         
             
                configure :num => :single
         
     | 
| 
       25 
25 
     | 
    
         
             
              end   
         
     | 
| 
       26 
26 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'roles_generic/role/class_methods'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'set'
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            module  
     | 
| 
      
 3 
     | 
    
         
            +
            module RoleStrategy::Generic
         
     | 
| 
       5 
4 
     | 
    
         
             
              module OneRole
         
     | 
| 
       6 
5 
     | 
    
         
             
                def self.default_role_attribute
         
     | 
| 
       7 
6 
     | 
    
         
             
                  :one_role
         
     | 
| 
         @@ -30,11 +29,11 @@ module RoleModels::Generic 
     | 
|
| 
       30 
29 
     | 
    
         
             
                  end      
         
     | 
| 
       31 
30 
     | 
    
         
             
                end
         
     | 
| 
       32 
31 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                extend  
     | 
| 
      
 32 
     | 
    
         
            +
                extend Roles::Generic::User::Configuration
         
     | 
| 
       34 
33 
     | 
    
         
             
                configure :num => :single, :type => :role_class
         
     | 
| 
       35 
34 
     | 
    
         | 
| 
       36 
35 
     | 
    
         
             
                def self.included(base)
         
     | 
| 
       37 
     | 
    
         
            -
                  base.extend  
     | 
| 
      
 36 
     | 
    
         
            +
                  base.extend Roles::Generic::Role::ClassMethods
         
     | 
| 
       38 
37 
     | 
    
         
             
                end      
         
     | 
| 
       39 
38 
     | 
    
         
             
              end  
         
     | 
| 
       40 
39 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'set'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            module  
     | 
| 
      
 3 
     | 
    
         
            +
            module RoleStrategy::Generic
         
     | 
| 
       4 
4 
     | 
    
         
             
              module RoleString    
         
     | 
| 
       5 
5 
     | 
    
         
             
                def self.default_role_attribute
         
     | 
| 
       6 
6 
     | 
    
         
             
                  :role_string
         
     | 
| 
         @@ -23,7 +23,7 @@ module RoleModels::Generic 
     | 
|
| 
       23 
23 
     | 
    
         
             
                  alias_method :roles_list, :roles
         
     | 
| 
       24 
24 
     | 
    
         
             
                end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                extend  
     | 
| 
      
 26 
     | 
    
         
            +
                extend Roles::Generic::User::Configuration
         
     | 
| 
       27 
27 
     | 
    
         
             
                configure :num => :single
         
     | 
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'sugar-high/file'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sugar-high/array'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Roles::Strategy
         
     | 
| 
      
 5 
     | 
    
         
            +
              def self.role_strategies cardinality
         
     | 
| 
      
 6 
     | 
    
         
            +
                pattern = File.dirname(__FILE__) + "/strategy/#{cardinality}/*.rb"
         
     | 
| 
      
 7 
     | 
    
         
            +
                Dir.glob(pattern).file_names(:rb).to_symbols
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              def self.has_strategy? cardinality, strategy
         
     | 
| 
      
 11 
     | 
    
         
            +
                role_strategies(cardinality).include?(strategy)
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
              
         
     | 
| 
      
 14 
     | 
    
         
            +
              def self.cardinality strategy
         
     | 
| 
      
 15 
     | 
    
         
            +
                [:single, :multi].each do |cardinality|             
         
     | 
| 
      
 16 
     | 
    
         
            +
                  return cardinality if has_strategy?(cardinality, strategy)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                raise ArgumentError, "Strategy #{strategy}  is not registered as either a single or multi cardinality role strategy"
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end           
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            def use_roles_strategy strategy
         
     | 
| 
      
 23 
     | 
    
         
            +
              cardinality = Roles::Strategy.cardinality(strategy)
         
     | 
| 
      
 24 
     | 
    
         
            +
              require "roles_generic/strategy/#{cardinality}/#{strategy}"
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
    
        data/lib/roles_generic.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,124 @@ 
     | 
|
| 
      
 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_generic}
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.2.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-04}
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.description = %q{Generic role strategies sharing the same API. Easy to insert in any 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 
     | 
    
         
            +
                 "LICENSE",
         
     | 
| 
      
 24 
     | 
    
         
            +
                 "README.markdown",
         
     | 
| 
      
 25 
     | 
    
         
            +
                 "Rakefile",
         
     | 
| 
      
 26 
     | 
    
         
            +
                 "VERSION",
         
     | 
| 
      
 27 
     | 
    
         
            +
                 "lib/generators/roles_model/roles/roles_generator.rb",
         
     | 
| 
      
 28 
     | 
    
         
            +
                 "lib/roles_generic.rb",
         
     | 
| 
      
 29 
     | 
    
         
            +
                 "lib/roles_generic/base.rb",
         
     | 
| 
      
 30 
     | 
    
         
            +
                 "lib/roles_generic/generic.rb",
         
     | 
| 
      
 31 
     | 
    
         
            +
                 "lib/roles_generic/generic/role.rb",
         
     | 
| 
      
 32 
     | 
    
         
            +
                 "lib/roles_generic/generic/user.rb",
         
     | 
| 
      
 33 
     | 
    
         
            +
                 "lib/roles_generic/generic/user/class_methods.rb",
         
     | 
| 
      
 34 
     | 
    
         
            +
                 "lib/roles_generic/generic/user/configuration.rb",
         
     | 
| 
      
 35 
     | 
    
         
            +
                 "lib/roles_generic/generic/user/implementation.rb",
         
     | 
| 
      
 36 
     | 
    
         
            +
                 "lib/roles_generic/namespaces.rb",
         
     | 
| 
      
 37 
     | 
    
         
            +
                 "lib/roles_generic/strategy.rb",
         
     | 
| 
      
 38 
     | 
    
         
            +
                 "lib/roles_generic/strategy/multi/many_roles.rb",
         
     | 
| 
      
 39 
     | 
    
         
            +
                 "lib/roles_generic/strategy/multi/role_strings.rb",
         
     | 
| 
      
 40 
     | 
    
         
            +
                 "lib/roles_generic/strategy/multi/roles_mask.rb",
         
     | 
| 
      
 41 
     | 
    
         
            +
                 "lib/roles_generic/strategy/multi/roles_string.rb",
         
     | 
| 
      
 42 
     | 
    
         
            +
                 "lib/roles_generic/strategy/single/admin_flag.rb",
         
     | 
| 
      
 43 
     | 
    
         
            +
                 "lib/roles_generic/strategy/single/one_role.rb",
         
     | 
| 
      
 44 
     | 
    
         
            +
                 "lib/roles_generic/strategy/single/role_string.rb",
         
     | 
| 
      
 45 
     | 
    
         
            +
                 "roles_generic.gemspec",
         
     | 
| 
      
 46 
     | 
    
         
            +
                 "spec/generator_spec_helper.rb",
         
     | 
| 
      
 47 
     | 
    
         
            +
                 "spec/generators/admin_flag_generator_spec.rb",
         
     | 
| 
      
 48 
     | 
    
         
            +
                 "spec/generators/many_roles_generator_spec.rb",
         
     | 
| 
      
 49 
     | 
    
         
            +
                 "spec/generators/one_role_generator_spec.rb",
         
     | 
| 
      
 50 
     | 
    
         
            +
                 "spec/generators/role_string_generator_spec.rb",
         
     | 
| 
      
 51 
     | 
    
         
            +
                 "spec/generators/role_strings_generator_spec.rb",
         
     | 
| 
      
 52 
     | 
    
         
            +
                 "spec/generators/roles_mask_generator_spec.rb",
         
     | 
| 
      
 53 
     | 
    
         
            +
                 "spec/generators/roles_string_generator_spec.rb",
         
     | 
| 
      
 54 
     | 
    
         
            +
                 "spec/model/role.rb",
         
     | 
| 
      
 55 
     | 
    
         
            +
                 "spec/roles_generic/admin_flag_spec.rb",
         
     | 
| 
      
 56 
     | 
    
         
            +
                 "spec/roles_generic/many_roles_spec.rb",
         
     | 
| 
      
 57 
     | 
    
         
            +
                 "spec/roles_generic/one_role_spec.rb",
         
     | 
| 
      
 58 
     | 
    
         
            +
                 "spec/roles_generic/role_string_spec.rb",
         
     | 
| 
      
 59 
     | 
    
         
            +
                 "spec/roles_generic/role_strings_spec.rb",
         
     | 
| 
      
 60 
     | 
    
         
            +
                 "spec/roles_generic/roles_mask_spec.rb",
         
     | 
| 
      
 61 
     | 
    
         
            +
                 "spec/roles_generic/roles_string_spec.rb",
         
     | 
| 
      
 62 
     | 
    
         
            +
                 "spec/spec_helper.rb",
         
     | 
| 
      
 63 
     | 
    
         
            +
                 "wiki/strategies/admin_flag.textile",
         
     | 
| 
      
 64 
     | 
    
         
            +
                 "wiki/strategies/many_roles.textile",
         
     | 
| 
      
 65 
     | 
    
         
            +
                 "wiki/strategies/one_role.textile",
         
     | 
| 
      
 66 
     | 
    
         
            +
                 "wiki/strategies/role_string.textile",
         
     | 
| 
      
 67 
     | 
    
         
            +
                 "wiki/strategies/role_strings.textile",
         
     | 
| 
      
 68 
     | 
    
         
            +
                 "wiki/strategies/roles_mask.textile",
         
     | 
| 
      
 69 
     | 
    
         
            +
                 "wiki/strategies/roles_string.textile"
         
     | 
| 
      
 70 
     | 
    
         
            +
              ]
         
     | 
| 
      
 71 
     | 
    
         
            +
              s.homepage = %q{http://github.com/kristianmandrup/roles_for_mm}
         
     | 
| 
      
 72 
     | 
    
         
            +
              s.rdoc_options = ["--charset=UTF-8"]
         
     | 
| 
      
 73 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
      
 74 
     | 
    
         
            +
              s.rubygems_version = %q{1.3.7}
         
     | 
| 
      
 75 
     | 
    
         
            +
              s.summary = %q{Generic role strategies sharing the same API}
         
     | 
| 
      
 76 
     | 
    
         
            +
              s.test_files = [
         
     | 
| 
      
 77 
     | 
    
         
            +
                "spec/generator_spec_helper.rb",
         
     | 
| 
      
 78 
     | 
    
         
            +
                 "spec/generators/admin_flag_generator_spec.rb",
         
     | 
| 
      
 79 
     | 
    
         
            +
                 "spec/generators/many_roles_generator_spec.rb",
         
     | 
| 
      
 80 
     | 
    
         
            +
                 "spec/generators/one_role_generator_spec.rb",
         
     | 
| 
      
 81 
     | 
    
         
            +
                 "spec/generators/role_string_generator_spec.rb",
         
     | 
| 
      
 82 
     | 
    
         
            +
                 "spec/generators/role_strings_generator_spec.rb",
         
     | 
| 
      
 83 
     | 
    
         
            +
                 "spec/generators/roles_mask_generator_spec.rb",
         
     | 
| 
      
 84 
     | 
    
         
            +
                 "spec/generators/roles_string_generator_spec.rb",
         
     | 
| 
      
 85 
     | 
    
         
            +
                 "spec/model/role.rb",
         
     | 
| 
      
 86 
     | 
    
         
            +
                 "spec/roles_generic/admin_flag_spec.rb",
         
     | 
| 
      
 87 
     | 
    
         
            +
                 "spec/roles_generic/many_roles_spec.rb",
         
     | 
| 
      
 88 
     | 
    
         
            +
                 "spec/roles_generic/one_role_spec.rb",
         
     | 
| 
      
 89 
     | 
    
         
            +
                 "spec/roles_generic/role_string_spec.rb",
         
     | 
| 
      
 90 
     | 
    
         
            +
                 "spec/roles_generic/role_strings_spec.rb",
         
     | 
| 
      
 91 
     | 
    
         
            +
                 "spec/roles_generic/roles_mask_spec.rb",
         
     | 
| 
      
 92 
     | 
    
         
            +
                 "spec/roles_generic/roles_string_spec.rb",
         
     | 
| 
      
 93 
     | 
    
         
            +
                 "spec/spec_helper.rb"
         
     | 
| 
      
 94 
     | 
    
         
            +
              ]
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
              if s.respond_to? :specification_version then
         
     | 
| 
      
 97 
     | 
    
         
            +
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         
     | 
| 
      
 98 
     | 
    
         
            +
                s.specification_version = 3
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         
     | 
| 
      
 101 
     | 
    
         
            +
                  s.add_development_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
         
     | 
| 
      
 102 
     | 
    
         
            +
                  s.add_development_dependency(%q<generator-spec>, ["~> 0.5.1"])
         
     | 
| 
      
 103 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<require_all>, ["~> 1.1.0"])
         
     | 
| 
      
 104 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0"])
         
     | 
| 
      
 105 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.2"])
         
     | 
| 
      
 106 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<rails3_artifactor>, ["~> 0.1.1"])
         
     | 
| 
      
 107 
     | 
    
         
            +
                else
         
     | 
| 
      
 108 
     | 
    
         
            +
                  s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
         
     | 
| 
      
 109 
     | 
    
         
            +
                  s.add_dependency(%q<generator-spec>, ["~> 0.5.1"])
         
     | 
| 
      
 110 
     | 
    
         
            +
                  s.add_dependency(%q<require_all>, ["~> 1.1.0"])
         
     | 
| 
      
 111 
     | 
    
         
            +
                  s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
         
     | 
| 
      
 112 
     | 
    
         
            +
                  s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
         
     | 
| 
      
 113 
     | 
    
         
            +
                  s.add_dependency(%q<rails3_artifactor>, ["~> 0.1.1"])
         
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
              else
         
     | 
| 
      
 116 
     | 
    
         
            +
                s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
         
     | 
| 
      
 117 
     | 
    
         
            +
                s.add_dependency(%q<generator-spec>, ["~> 0.5.1"])
         
     | 
| 
      
 118 
     | 
    
         
            +
                s.add_dependency(%q<require_all>, ["~> 1.1.0"])
         
     | 
| 
      
 119 
     | 
    
         
            +
                s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
         
     | 
| 
      
 120 
     | 
    
         
            +
                s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
         
     | 
| 
      
 121 
     | 
    
         
            +
                s.add_dependency(%q<rails3_artifactor>, ["~> 0.1.1"])
         
     | 
| 
      
 122 
     | 
    
         
            +
              end
         
     | 
| 
      
 123 
     | 
    
         
            +
            end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require 'generator_spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require_generator :roles_model => :roles
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            describe 'role strategy generator: admin_flag' do
         
     | 
| 
         @@ -30,7 +30,7 @@ describe 'role strategy generator: admin_flag' do 
     | 
|
| 
       30 
30 
     | 
    
         
             
                    puts "arguments: #{arguments}"
         
     | 
| 
       31 
31 
     | 
    
         
             
                    g.run_generator arguments.args
         
     | 
| 
       32 
32 
     | 
    
         
             
                    g.should generate_model :user do |clazz|
         
     | 
| 
       33 
     | 
    
         
            -
                      clazz.should include_module ' 
     | 
| 
      
 33 
     | 
    
         
            +
                      clazz.should include_module 'Roles::Generic'
         
     | 
| 
       34 
34 
     | 
    
         
             
                      puts "clazz: #{clazz}"        
         
     | 
| 
       35 
35 
     | 
    
         
             
                      clazz.should have_call :roles, :args => ':admin, :user'
         
     | 
| 
       36 
36 
     | 
    
         
             
                      clazz.should have_call :role_strategy, :args => ":#{strategy}"        
         
     | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            use_roles_strategy :admin_flag
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            class User
         
     | 
| 
       5 
     | 
    
         
            -
              include  
     | 
| 
      
 5 
     | 
    
         
            +
              include Roles::Generic 
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              attr_accessor :name, :admin_flag 
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
         @@ -1,9 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            use_roles_strategy :many_roles
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       3 
4 
     | 
    
         
             
            require 'model/role'
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            class User
         
     | 
| 
       6 
     | 
    
         
            -
              include  
     | 
| 
      
 7 
     | 
    
         
            +
              include Roles::Generic 
         
     | 
| 
       7 
8 
     | 
    
         
             
              role_strategy :many_roles, :default
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
              role_class :role   
         
     | 
| 
         @@ -1,9 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            use_roles_strategy :one_role
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       3 
4 
     | 
    
         
             
            require 'model/role'
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            class User
         
     | 
| 
       6 
     | 
    
         
            -
              include  
     | 
| 
      
 7 
     | 
    
         
            +
              include Roles::Generic 
         
     | 
| 
       7 
8 
     | 
    
         
             
              role_strategy :one_role, :default
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
              role_class :role   
         
     | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            use_roles_strategy :role_string
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            class User
         
     | 
| 
       5 
     | 
    
         
            -
              include  
     | 
| 
      
 5 
     | 
    
         
            +
              include Roles::Generic 
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              attr_accessor :name, :role_string
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            use_roles_strategy :role_strings
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            class User
         
     | 
| 
       5 
     | 
    
         
            -
              include  
     | 
| 
      
 5 
     | 
    
         
            +
              include Roles::Generic 
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              attr_accessor :name, :role_strings
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            use_roles_strategy :roles_mask
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            class User
         
     | 
| 
       5 
     | 
    
         
            -
              include  
     | 
| 
      
 5 
     | 
    
         
            +
              include Roles::Generic 
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              attr_accessor :name, :roles_mask
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            use_roles_strategy :roles_string
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            class User
         
     | 
| 
       5 
     | 
    
         
            -
              include  
     | 
| 
      
 5 
     | 
    
         
            +
              include Roles::Generic 
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              attr_accessor :name, :roles_string
         
     | 
| 
       8 
8 
     | 
    
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h2. Example : admin_flag
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Creates and uses a binary field 'admin_flag', which when true signals that this user is an administrator and otherwise a normal user.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 6 
     | 
    
         
            +
              class User
         
     | 
| 
      
 7 
     | 
    
         
            +
                include RoleModels::Generic 
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                attr_accessor :name, :admin_flag 
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                role_strategy :admin_flag, :default
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                roles :admin, :user
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def initialize name, *new_roles
         
     | 
| 
      
 16 
     | 
    
         
            +
                  self.name = name
         
     | 
| 
      
 17 
     | 
    
         
            +
                  self.roles = new_roles
         
     | 
| 
      
 18 
     | 
    
         
            +
                end 
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            </pre>
         
     | 
| 
         @@ -0,0 +1,48 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h2. Example : many_roles
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Creates and uses a single relation to a Role model for each user
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 6 
     | 
    
         
            +
              class Role
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :name
         
     | 
| 
      
 8 
     | 
    
         
            +
              
         
     | 
| 
      
 9 
     | 
    
         
            +
                def self.find_role role_name    
         
     | 
| 
      
 10 
     | 
    
         
            +
                  roles.to_a.select{|r| r.name == role_name}.first
         
     | 
| 
      
 11 
     | 
    
         
            +
                end  
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def self.find_roles *role_names
         
     | 
| 
      
 14 
     | 
    
         
            +
                  result = Set.new
         
     | 
| 
      
 15 
     | 
    
         
            +
                  role_names.flatten.each do |role_name| 
         
     | 
| 
      
 16 
     | 
    
         
            +
                    found_role = find_role(role_name)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    result << found_role if found_role
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  result
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attr_accessor :roles
         
     | 
| 
      
 24 
     | 
    
         
            +
                end    
         
     | 
| 
      
 25 
     | 
    
         
            +
              
         
     | 
| 
      
 26 
     | 
    
         
            +
                def initialize name
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @name = name
         
     | 
| 
      
 28 
     | 
    
         
            +
                  self.class.roles ||= Set.new
         
     | 
| 
      
 29 
     | 
    
         
            +
                  self.class.roles << self
         
     | 
| 
      
 30 
     | 
    
         
            +
                end  
         
     | 
| 
      
 31 
     | 
    
         
            +
              end     
         
     | 
| 
      
 32 
     | 
    
         
            +
              
         
     | 
| 
      
 33 
     | 
    
         
            +
              class User
         
     | 
| 
      
 34 
     | 
    
         
            +
                include RoleModels::Generic 
         
     | 
| 
      
 35 
     | 
    
         
            +
                role_strategy :many_roles, :default
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                role_class :role   
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                attr_accessor :name, :many_roles
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                roles :admin, :user 
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def initialize name, *new_roles
         
     | 
| 
      
 44 
     | 
    
         
            +
                  self.name = name
         
     | 
| 
      
 45 
     | 
    
         
            +
                  self.roles = new_roles
         
     | 
| 
      
 46 
     | 
    
         
            +
                end 
         
     | 
| 
      
 47 
     | 
    
         
            +
              end  
         
     | 
| 
      
 48 
     | 
    
         
            +
            </pre>
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h2. Example : one_role
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Creates and uses a single relation to a Role model for each user
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 6 
     | 
    
         
            +
              class Role
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :name
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def self.find_role role_name    
         
     | 
| 
      
 10 
     | 
    
         
            +
                  roles.to_a.select{|r| r.name == role_name}.first
         
     | 
| 
      
 11 
     | 
    
         
            +
                end  
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 14 
     | 
    
         
            +
                  attr_accessor :roles
         
     | 
| 
      
 15 
     | 
    
         
            +
                end    
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def initialize name
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @name = name
         
     | 
| 
      
 19 
     | 
    
         
            +
                  self.class.roles ||= Set.new
         
     | 
| 
      
 20 
     | 
    
         
            +
                  self.class.roles << self
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              class User
         
     | 
| 
      
 26 
     | 
    
         
            +
                include RoleModels::Generic 
         
     | 
| 
      
 27 
     | 
    
         
            +
                role_strategy :one_role, :default
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                role_class :role   
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                attr_accessor :name, :one_role
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                roles :admin, :user 
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def initialize name, *new_roles
         
     | 
| 
      
 36 
     | 
    
         
            +
                  self.name = name
         
     | 
| 
      
 37 
     | 
    
         
            +
                  self.roles = new_roles
         
     | 
| 
      
 38 
     | 
    
         
            +
                end 
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            </pre>
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h2. Example : role_string
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Creates and uses a single role name, a string
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 6 
     | 
    
         
            +
              class User
         
     | 
| 
      
 7 
     | 
    
         
            +
                include RoleModels::Generic 
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                attr_accessor :name, :role_string
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                role_strategy :role_string, :default
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                roles :admin, :user
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def initialize name, *new_roles
         
     | 
| 
      
 16 
     | 
    
         
            +
                  self.name = name
         
     | 
| 
      
 17 
     | 
    
         
            +
                  self.roles = new_roles
         
     | 
| 
      
 18 
     | 
    
         
            +
                end 
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            </pre>
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h2. Example : role_strings
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Creates and uses an Set of role names as strings
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 6 
     | 
    
         
            +
              class User
         
     | 
| 
      
 7 
     | 
    
         
            +
                include RoleModels::Generic 
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                attr_accessor :name, :role_strings
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                role_strategy :role_strings, :default
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                roles :admin, :user
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def initialize name, *new_roles
         
     | 
| 
      
 16 
     | 
    
         
            +
                  self.name = name
         
     | 
| 
      
 17 
     | 
    
         
            +
                  self.roles = new_roles
         
     | 
| 
      
 18 
     | 
    
         
            +
                end 
         
     | 
| 
      
 19 
     | 
    
         
            +
              end  
         
     | 
| 
      
 20 
     | 
    
         
            +
            </pre>
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h2. Example : roles_mask
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Creates and uses an Integer field where each on bit signifies a role
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 6 
     | 
    
         
            +
              class User
         
     | 
| 
      
 7 
     | 
    
         
            +
                include RoleModels::Generic 
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                attr_accessor :name, :roles_mask
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                role_strategy :roles_mask, :default
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                roles :admin, :user
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def initialize name, *new_roles
         
     | 
| 
      
 16 
     | 
    
         
            +
                  self.name = name
         
     | 
| 
      
 17 
     | 
    
         
            +
                  self.roles = new_roles
         
     | 
| 
      
 18 
     | 
    
         
            +
                end 
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            </pre>
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h2. Example : roles_string
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Creates and uses single comma separated String of role names
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 6 
     | 
    
         
            +
              class User
         
     | 
| 
      
 7 
     | 
    
         
            +
                include RoleModels::Generic 
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                attr_accessor :name, :roles_string
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                role_strategy :roles_string, :default
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                roles :admin, :user
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def initialize name, *new_roles
         
     | 
| 
      
 16 
     | 
    
         
            +
                  self.name = name
         
     | 
| 
      
 17 
     | 
    
         
            +
                  self.roles = new_roles
         
     | 
| 
      
 18 
     | 
    
         
            +
                end 
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            </pre>
         
     |