canard 0.2.2 → 0.2.3
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.rdoc +3 -3
- data/Rakefile +2 -0
- data/lib/canard/abilities.rb +10 -4
- data/lib/canard/version.rb +1 -1
- data/lib/generators/canard/ability/ability_generator.rb +1 -1
- data/lib/generators/canard/ability/templates/abilities.rb.erb +1 -1
- data/test/abilities_test.rb +15 -0
- metadata +13 -13
data/README.rdoc
CHANGED
@@ -16,18 +16,18 @@ A User model with :admin and :manger roles would be defined:
|
|
16
16
|
Lets generate some abilities for the User.
|
17
17
|
|
18
18
|
$ rails g canard:ability user can:[read,create]:[account,statement] cannot:destroy:account
|
19
|
-
create abilities/users.rb
|
19
|
+
create app/abilities/users.rb
|
20
20
|
invoke rspec
|
21
21
|
create spec/abilities/user_spec.rb
|
22
22
|
|
23
23
|
Generates an ability folder in Rails root and an associated spec;
|
24
24
|
|
25
|
-
abilities/
|
25
|
+
app.abilities/
|
26
26
|
users.rb
|
27
27
|
spec/abilities/
|
28
28
|
users_spec.rb
|
29
29
|
|
30
|
-
The resulting abilities/users.rb will look something like this;
|
30
|
+
The resulting app/abilities/users.rb will look something like this;
|
31
31
|
|
32
32
|
abilities_for(:user) do
|
33
33
|
|
data/Rakefile
CHANGED
data/lib/canard/abilities.rb
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
module Canard
|
2
2
|
class Abilities
|
3
3
|
|
4
|
-
@definitions
|
5
|
-
@
|
4
|
+
@definitions = {}
|
5
|
+
@default_path = 'app/abilities'
|
6
6
|
|
7
7
|
class << self
|
8
8
|
|
9
|
-
attr_accessor :
|
9
|
+
attr_accessor :default_path
|
10
|
+
|
11
|
+
attr_writer :definition_paths
|
10
12
|
|
11
13
|
attr_reader :definitions
|
12
14
|
|
15
|
+
def definition_paths
|
16
|
+
@definition_paths ||= [@default_path]
|
17
|
+
end
|
18
|
+
|
13
19
|
def for(name, &block)
|
14
20
|
raise ArgumentError.new('No block of ability definitions given') unless block_given?
|
15
21
|
@definitions[name.to_sym] = block
|
@@ -19,4 +25,4 @@ module Canard
|
|
19
25
|
|
20
26
|
end
|
21
27
|
|
22
|
-
end
|
28
|
+
end
|
data/lib/canard/version.rb
CHANGED
@@ -7,7 +7,7 @@ module Canard
|
|
7
7
|
argument :ability_definitions, :type => :array, :default => [], :banner => "can:[read,update]:[user,account] cannot:[create,destroy]:user"
|
8
8
|
|
9
9
|
def generate_ability
|
10
|
-
template "abilities.rb.erb",
|
10
|
+
template "abilities.rb.erb", Abilities.default_path + "/#{file_name.pluralize}.rb"
|
11
11
|
end
|
12
12
|
|
13
13
|
hook_for :test_framework, :as => 'ability'
|
data/test/abilities_test.rb
CHANGED
@@ -24,6 +24,21 @@ describe 'Canard::Abilities' do
|
|
24
24
|
|
25
25
|
end
|
26
26
|
|
27
|
+
describe "default_path" do
|
28
|
+
|
29
|
+
it "defaults to app/abilities" do
|
30
|
+
subject.default_path.must_equal 'app/abilities'
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can be changhed" do
|
34
|
+
subject.default_path = 'other_abilities'
|
35
|
+
|
36
|
+
subject.default_path.must_equal 'other_abilities'
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
end
|
41
|
+
|
27
42
|
describe "define" do
|
28
43
|
|
29
44
|
it "adds the block to the definitions" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-12 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
16
|
-
requirement: &
|
16
|
+
requirement: &2157009700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2157009700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &2157009160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2157009160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activerecord
|
38
|
-
requirement: &
|
38
|
+
requirement: &2157008240 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2157008240
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &2157007780 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2157007780
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: cancan
|
60
|
-
requirement: &
|
60
|
+
requirement: &2157007360 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2157007360
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: role_model
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156992120 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156992120
|
80
80
|
description: Wraps CanCan and RoleModel up to make role based authorisation really
|
81
81
|
easy in Rails 3.x.
|
82
82
|
email:
|