troles 0.5.0 → 0.5.1

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 (77) hide show
  1. data/Gemfile.lock +1 -1
  2. data/README.textile +75 -16
  3. data/VERSION +1 -1
  4. data/lib/trole/adapters/active_record/config.rb +3 -3
  5. data/lib/trole/adapters/mongoid/config.rb +5 -5
  6. data/lib/trole/config.rb +2 -2
  7. data/lib/trole_groups.rb +10 -0
  8. data/lib/trole_groups/READ THIS.textile +4 -0
  9. data/lib/trole_groups/Rolegroups design.textile +218 -0
  10. data/lib/trole_groups/adapters/active_record.rb +8 -0
  11. data/lib/trole_groups/adapters/active_record/config.rb +0 -0
  12. data/lib/trole_groups/adapters/active_record/storage.rb +0 -0
  13. data/lib/trole_groups/adapters/active_record/strategy.rb +11 -0
  14. data/lib/trole_groups/adapters/mongoid.rb +8 -0
  15. data/lib/trole_groups/adapters/mongoid/config.rb +0 -0
  16. data/lib/trole_groups/api.rb +29 -0
  17. data/lib/trole_groups/api/cache.rb +13 -0
  18. data/lib/trole_groups/api/config.rb +4 -0
  19. data/lib/trole_groups/api/core.rb +50 -0
  20. data/lib/trole_groups/api/event.rb +29 -0
  21. data/lib/trole_groups/api/read.rb +56 -0
  22. data/lib/trole_groups/api/validation.rb +44 -0
  23. data/lib/trole_groups/api/write.rb +60 -0
  24. data/lib/trole_groups/config.rb +134 -0
  25. data/lib/trole_groups/config/schema.rb +65 -0
  26. data/lib/trole_groups/config/schema/helpers.rb +11 -0
  27. data/lib/trole_groups/config/schema/role_group_helpers.rb +11 -0
  28. data/lib/trole_groups/config/valid_role_groups.rb +21 -0
  29. data/lib/trole_groups/macros.rb +42 -0
  30. data/lib/trole_groups/macros/configuration.rb +89 -0
  31. data/lib/trole_groups/macros/configuration/base_loader.rb +35 -0
  32. data/lib/trole_groups/macros/configuration/config_loader.rb +19 -0
  33. data/lib/trole_groups/macros/configuration/storage_loader.rb +20 -0
  34. data/lib/trole_groups/macros/configuration/strategy_loader.rb +38 -0
  35. data/lib/trole_groups/macros/static_roles.rb +9 -0
  36. data/lib/trole_groups/macros/strategy_options.rb +21 -0
  37. data/lib/trole_groups/operations.rb +25 -0
  38. data/lib/trole_groups/operations/read.rb +36 -0
  39. data/lib/trole_groups/operations/write.rb +42 -0
  40. data/lib/trole_groups/storage.rb +27 -0
  41. data/lib/trole_groups/storage/base_many.rb +93 -0
  42. data/lib/trole_groups/storage/embed_many.rb +58 -0
  43. data/lib/trole_groups/storage/ref_many.rb +47 -0
  44. data/lib/trole_groups/strategy.rb +30 -0
  45. data/lib/troles/adapters/active_record/config.rb +32 -9
  46. data/lib/troles/adapters/mongoid/config.rb +7 -7
  47. data/lib/troles/common/api/core.rb +1 -1
  48. data/lib/troles/common/config.rb +49 -14
  49. data/lib/troles/common/config/schema.rb +17 -23
  50. data/lib/troles/common/config/schema/helpers.rb +77 -0
  51. data/lib/troles/common/config/schema/role_helpers.rb +27 -0
  52. data/lib/troles/common/config/static_roles.rb +4 -4
  53. data/lib/troles/common/macros.rb +4 -4
  54. data/lib/troles/common/macros/configuration.rb +8 -8
  55. data/lib/troles/common/macros/strategy_options.rb +4 -4
  56. data/lib/troles/common/storage.rb +1 -0
  57. data/lib/troles/config.rb +2 -2
  58. data/lib/troles/storage/ref_many.rb +2 -3
  59. data/spec/active_record/models/ref_many.rb +3 -0
  60. data/spec/active_record/strategies/many/ref_many_spec.rb +2 -1
  61. data/spec/generic/models/role.rb +2 -1
  62. data/spec/trole_groups/api/core_api_spec.rb +14 -0
  63. data/spec/trole_groups/api/read_api_spec.rb +36 -0
  64. data/spec/trole_groups/api/write_api_spec.rb +19 -0
  65. data/spec/trole_groups/api_spec.rb +27 -0
  66. data/spec/trole_groups/generic/models.rb +3 -0
  67. data/spec/trole_groups/generic/models/role_group.rb +44 -0
  68. data/spec/trole_groups/generic/models/user.rb +9 -0
  69. data/spec/trole_groups/strategies/ref_many.rb +51 -0
  70. data/spec/trole_groups/strategy_helper.rb +9 -0
  71. data/spec/trole_groups_spec.rb +11 -0
  72. data/spec/trole_spec_helper.rb +9 -0
  73. data/spec/troles/api_spec.rb +12 -18
  74. data/troles.gemspec +52 -4
  75. metadata +85 -37
  76. data/development.sqlite3 +0 -0
  77. data/lib/troles/common/config/schema_helpers.rb +0 -95
data/development.sqlite3 DELETED
Binary file
@@ -1,95 +0,0 @@
1
- module Troles::Common
2
- class Config
3
- module SchemaHelpers
4
- def valid_field_name? name
5
- return false if !name || name.empty?
6
- raise ArgumentException, "Role field must not be named role or roles as these names are reserved by troles!" if [:role, :roles].include? name.to_sym
7
- true
8
- end
9
-
10
- def boolean? value
11
- [true, false].include? value
12
- end
13
-
14
- # TODO: Needs extraction into helper module!
15
-
16
- def belongs_to_for from, to, options = {}
17
- make_relationship :belongs_to, from, to, options
18
- end
19
-
20
- def has_many_for from, to, options = {}
21
- make_relationship :has_many, from, to, options
22
- end
23
-
24
- def has_one_for from, to, options = {}
25
- make_relationship :has_one, from, to, options
26
- end
27
-
28
- # To setup sth like this:
29
- #
30
- # class UserAccount < ActiveRecord::Base
31
- # has_and_belongs_to_many :troles, :class_name => 'Role'
32
- # end
33
- #
34
- # class Role < ActiveRecord::Base
35
- # has_and_belongs_to_many :user_accounts, :class_name => 'User'
36
- # end
37
- def has_and_belongs_many from, to, options = {}
38
- make_relationship :has_and_belongs_to_many, from, to, :key => role_field
39
- make_relationship :has_and_belongs_to_many, to, from, options
40
- end
41
-
42
- def get_model_type class_name
43
- return :user if class_name == clazz
44
- return :role if class_name == role_model
45
- raise "Not a known model: #{class_name}"
46
- end
47
-
48
- # options:
49
- # - :opts, extras options, fx to set the :through relationship
50
- # - :key (usually to enforce use of role_field as key name)
51
- def make_relationship type, from, to, options = {}
52
- # puts "type: #{type}, #{from}, #{to}"
53
- from_type = get_model_type from
54
- to_type = get_model_type to
55
-
56
- model_key = options[:key] ? options[:key] : send("#{from_type}_key")
57
-
58
- class_name = send "#{to_type}_class_name"
59
-
60
- options = {:class_name => class_name}
61
- options.merge!(options[:opts]) if options[:opts]
62
- puts "#{from}.#{type} :#{model_key}, #{options.inspect}" if log_on?
63
- from.send(type, model_key, options)
64
- end
65
-
66
- def user_class_name
67
- clazz.to_s
68
- end
69
-
70
- def user_key
71
- make_key user_class_name
72
- end
73
-
74
- def join_class_name
75
- join_model.to_s
76
- end
77
-
78
- def join_key
79
- make_key join_class_name
80
- end
81
-
82
- def role_class_name
83
- role_model.to_s
84
- end
85
-
86
- def role_key
87
- make_key role_class_name
88
- end
89
-
90
- def make_key name
91
- name.gsub(/::/, '__').underscore.pluralize
92
- end
93
- end
94
- end
95
- end