cancannible 0.0.2 → 1.0.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.
- checksums.yaml +8 -8
- data/.travis.yml +10 -0
- data/Appraisals +11 -0
- data/Gemfile +1 -3
- data/README.md +20 -2
- data/cancannible.gemspec +3 -3
- data/gemfiles/rails_3.gemfile +10 -0
- data/gemfiles/rails_3.gemfile.lock +98 -0
- data/gemfiles/rails_4.gemfile +10 -0
- data/gemfiles/rails_4.gemfile.lock +103 -0
- data/lib/cancannible/grantee.rb +8 -14
- data/lib/cancannible/version.rb +1 -1
- data/lib/generators/cancannible/templates/cancannible_initializer.rb +1 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/models.rb +1 -1
- data/spec/unit/grantee_spec.rb +5 -1
- metadata +20 -15
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
ZjFkNmJkNGYzODQ2NDRkZDJlODM0M2UyYjY2OTNlODJjMWIzNjU1Yw==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
YzhmMDIxNGY3Y2NkOThiMDEzYzI2ODU5NTA1ZDMyMDA3NWQ1YzdjYQ==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MTc3ZGNlOTU1NzliNGFlNjBjOTk0ZGVmZDMyNzg4ODBlYTkxNGM4Njg3Mjdi
|
|
10
|
+
NDlkYjc0ZDg3NDRkZDIzMjkzMjRhOGQxZTQ4N2JiZDI1MjAxMWE4NzQ3ZmY5
|
|
11
|
+
NGFjZTYxYWM4Yzg0NGNlMWM3NGMzZTgxNjIxZWE5OThjNTAyMGE=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
YzQzYzU4ZDEzZmRjZWZmNTZkYmVkNzExNzQxN2UyODNmNjc4ZWUzNTE2ZTZm
|
|
14
|
+
MzhmNDE2NjQwN2YyMzcwMDg5OTg5MGY1OGNiZjQyNDRmM2EyNjJmOGYxZGUw
|
|
15
|
+
ZjY1MjI2NmNhNTBkM2UyNjg4MTA1MGI3ZWIwNWFmYWE5MTY2NGM=
|
data/.travis.yml
CHANGED
data/Appraisals
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -7,16 +7,17 @@ Cancannible is a gem that extends CanCan with a range of capabilities:
|
|
|
7
7
|
* permissions inheritance (so that, for example, a User can inherit permissions from Roles and/or Groups)
|
|
8
8
|
* caching of abilities (so that they don't need to be recalculated on each web request)
|
|
9
9
|
* general-purpose access refinements (so that, for example, CanCan will automatically enforce multi-tenant or other security restrictions)
|
|
10
|
+
* battle-tested with Rails 3.2
|
|
11
|
+
* tested with Rails 4 (but limited experience in the field?)
|
|
10
12
|
|
|
11
13
|
## Limitations
|
|
12
|
-
Cancannible's origin was in a web application that's been in production for over
|
|
14
|
+
Cancannible's origin was in a web application that's been in production for over 4 years.
|
|
13
15
|
This gem is an initial refactoring as a separate component. It continues to be used in production, but
|
|
14
16
|
there are some limitations and constraints that will ideally be removed or changed over time:
|
|
15
17
|
|
|
16
18
|
* It only supports ActiveRecord for permissions storage (specifically, it has been tested with PostgreSQL and SQLite)
|
|
17
19
|
* It currently assumes permissions are stored in a Permission model with a specific structure
|
|
18
20
|
* It works with the [CanCan](https://github.com/ryanb/cancan) gem. It has not yet been tested with the new [CanCanCan](https://github.com/CanCanCommunity/cancancan) gem.
|
|
19
|
-
* It assumes and is only tested with Rails 3.2. Not yet with Rails 4.
|
|
20
21
|
* It assumes your CanCan rules are setup with the default `Ability` class
|
|
21
22
|
|
|
22
23
|
|
|
@@ -120,6 +121,23 @@ For example, this is a simple scheme using Redis:
|
|
|
120
121
|
end
|
|
121
122
|
|
|
122
123
|
|
|
124
|
+
## Testing the gem
|
|
125
|
+
|
|
126
|
+
The RSpec test suite runs as the default rake task:
|
|
127
|
+
|
|
128
|
+
rake
|
|
129
|
+
# same as:
|
|
130
|
+
rake spec
|
|
131
|
+
|
|
132
|
+
For convenience, guard is included in the development gem environment, so you can start automatic testing-on-change:
|
|
133
|
+
|
|
134
|
+
bundle exec guard
|
|
135
|
+
|
|
136
|
+
[Appraisal](https://github.com/thoughtbot/appraisal) is also included to run tests across Rails 3 and 4 environments:
|
|
137
|
+
|
|
138
|
+
appraisal rake spec
|
|
139
|
+
|
|
140
|
+
|
|
123
141
|
## Contributing
|
|
124
142
|
|
|
125
143
|
1. Fork it ( https://github.com/evendis/cancannible/fork )
|
data/cancannible.gemspec
CHANGED
|
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
spec.add_runtime_dependency "activesupport", "
|
|
22
|
-
spec.add_runtime_dependency "activemodel", "
|
|
21
|
+
spec.add_runtime_dependency "activesupport", ">= 3.2.1"
|
|
22
|
+
spec.add_runtime_dependency "activemodel", ">= 3.2.1"
|
|
23
23
|
spec.add_runtime_dependency "cancan", "~> 1.6"
|
|
24
24
|
|
|
25
|
-
spec.add_development_dependency "activerecord", "
|
|
25
|
+
spec.add_development_dependency "activerecord", ">= 3.2.1"
|
|
26
26
|
spec.add_development_dependency "sqlite3", "~> 1.3"
|
|
27
27
|
spec.add_development_dependency "bundler", "~> 1.6"
|
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: ../
|
|
3
|
+
specs:
|
|
4
|
+
cancannible (1.0.0)
|
|
5
|
+
activemodel (>= 3.2.1)
|
|
6
|
+
activesupport (>= 3.2.1)
|
|
7
|
+
cancan (~> 1.6)
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
activemodel (3.2.19)
|
|
13
|
+
activesupport (= 3.2.19)
|
|
14
|
+
builder (~> 3.0.0)
|
|
15
|
+
activerecord (3.2.19)
|
|
16
|
+
activemodel (= 3.2.19)
|
|
17
|
+
activesupport (= 3.2.19)
|
|
18
|
+
arel (~> 3.0.2)
|
|
19
|
+
tzinfo (~> 0.3.29)
|
|
20
|
+
activesupport (3.2.19)
|
|
21
|
+
i18n (~> 0.6, >= 0.6.4)
|
|
22
|
+
multi_json (~> 1.0)
|
|
23
|
+
appraisal (1.0.2)
|
|
24
|
+
bundler
|
|
25
|
+
rake
|
|
26
|
+
thor (>= 0.14.0)
|
|
27
|
+
arel (3.0.3)
|
|
28
|
+
builder (3.0.4)
|
|
29
|
+
cancan (1.6.10)
|
|
30
|
+
celluloid (0.16.0)
|
|
31
|
+
timers (~> 4.0.0)
|
|
32
|
+
coderay (1.1.0)
|
|
33
|
+
diff-lcs (1.2.5)
|
|
34
|
+
ffi (1.9.6)
|
|
35
|
+
formatador (0.2.5)
|
|
36
|
+
guard (2.10.5)
|
|
37
|
+
formatador (>= 0.2.4)
|
|
38
|
+
listen (~> 2.7)
|
|
39
|
+
lumberjack (~> 1.0)
|
|
40
|
+
nenv (~> 0.1)
|
|
41
|
+
pry (>= 0.9.12)
|
|
42
|
+
thor (>= 0.18.1)
|
|
43
|
+
guard-compat (1.2.0)
|
|
44
|
+
guard-rspec (4.5.0)
|
|
45
|
+
guard (~> 2.1)
|
|
46
|
+
guard-compat (~> 1.1)
|
|
47
|
+
rspec (>= 2.99.0, < 4.0)
|
|
48
|
+
hitimes (1.2.2)
|
|
49
|
+
i18n (0.7.0)
|
|
50
|
+
listen (2.8.4)
|
|
51
|
+
celluloid (>= 0.15.2)
|
|
52
|
+
rb-fsevent (>= 0.9.3)
|
|
53
|
+
rb-inotify (>= 0.9)
|
|
54
|
+
lumberjack (1.0.9)
|
|
55
|
+
method_source (0.8.2)
|
|
56
|
+
multi_json (1.10.1)
|
|
57
|
+
nenv (0.1.1)
|
|
58
|
+
pry (0.10.1)
|
|
59
|
+
coderay (~> 1.1.0)
|
|
60
|
+
method_source (~> 0.8.1)
|
|
61
|
+
slop (~> 3.4)
|
|
62
|
+
rake (10.4.2)
|
|
63
|
+
rb-fsevent (0.9.4)
|
|
64
|
+
rb-inotify (0.9.5)
|
|
65
|
+
ffi (>= 0.5.0)
|
|
66
|
+
rspec (3.1.0)
|
|
67
|
+
rspec-core (~> 3.1.0)
|
|
68
|
+
rspec-expectations (~> 3.1.0)
|
|
69
|
+
rspec-mocks (~> 3.1.0)
|
|
70
|
+
rspec-core (3.1.7)
|
|
71
|
+
rspec-support (~> 3.1.0)
|
|
72
|
+
rspec-expectations (3.1.2)
|
|
73
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
74
|
+
rspec-support (~> 3.1.0)
|
|
75
|
+
rspec-mocks (3.1.3)
|
|
76
|
+
rspec-support (~> 3.1.0)
|
|
77
|
+
rspec-support (3.1.2)
|
|
78
|
+
slop (3.6.0)
|
|
79
|
+
sqlite3 (1.3.10)
|
|
80
|
+
thor (0.19.1)
|
|
81
|
+
timers (4.0.1)
|
|
82
|
+
hitimes
|
|
83
|
+
tzinfo (0.3.40)
|
|
84
|
+
|
|
85
|
+
PLATFORMS
|
|
86
|
+
ruby
|
|
87
|
+
|
|
88
|
+
DEPENDENCIES
|
|
89
|
+
activemodel (~> 3.2)
|
|
90
|
+
activerecord (~> 3.2)
|
|
91
|
+
activesupport (~> 3.2)
|
|
92
|
+
appraisal
|
|
93
|
+
bundler (~> 1.6)
|
|
94
|
+
cancannible!
|
|
95
|
+
guard-rspec (~> 4.0)
|
|
96
|
+
rake (~> 10.0)
|
|
97
|
+
rspec (~> 3.0)
|
|
98
|
+
sqlite3 (~> 1.3)
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: ../
|
|
3
|
+
specs:
|
|
4
|
+
cancannible (1.0.0)
|
|
5
|
+
activemodel (>= 3.2.1)
|
|
6
|
+
activesupport (>= 3.2.1)
|
|
7
|
+
cancan (~> 1.6)
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
activemodel (4.2.0)
|
|
13
|
+
activesupport (= 4.2.0)
|
|
14
|
+
builder (~> 3.1)
|
|
15
|
+
activerecord (4.2.0)
|
|
16
|
+
activemodel (= 4.2.0)
|
|
17
|
+
activesupport (= 4.2.0)
|
|
18
|
+
arel (~> 6.0)
|
|
19
|
+
activesupport (4.2.0)
|
|
20
|
+
i18n (~> 0.7)
|
|
21
|
+
json (~> 1.7, >= 1.7.7)
|
|
22
|
+
minitest (~> 5.1)
|
|
23
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
24
|
+
tzinfo (~> 1.1)
|
|
25
|
+
appraisal (1.0.2)
|
|
26
|
+
bundler
|
|
27
|
+
rake
|
|
28
|
+
thor (>= 0.14.0)
|
|
29
|
+
arel (6.0.0)
|
|
30
|
+
builder (3.2.2)
|
|
31
|
+
cancan (1.6.10)
|
|
32
|
+
celluloid (0.16.0)
|
|
33
|
+
timers (~> 4.0.0)
|
|
34
|
+
coderay (1.1.0)
|
|
35
|
+
diff-lcs (1.2.5)
|
|
36
|
+
ffi (1.9.6)
|
|
37
|
+
formatador (0.2.5)
|
|
38
|
+
guard (2.10.5)
|
|
39
|
+
formatador (>= 0.2.4)
|
|
40
|
+
listen (~> 2.7)
|
|
41
|
+
lumberjack (~> 1.0)
|
|
42
|
+
nenv (~> 0.1)
|
|
43
|
+
pry (>= 0.9.12)
|
|
44
|
+
thor (>= 0.18.1)
|
|
45
|
+
guard-compat (1.2.0)
|
|
46
|
+
guard-rspec (4.5.0)
|
|
47
|
+
guard (~> 2.1)
|
|
48
|
+
guard-compat (~> 1.1)
|
|
49
|
+
rspec (>= 2.99.0, < 4.0)
|
|
50
|
+
hitimes (1.2.2)
|
|
51
|
+
i18n (0.7.0)
|
|
52
|
+
json (1.8.1)
|
|
53
|
+
listen (2.8.4)
|
|
54
|
+
celluloid (>= 0.15.2)
|
|
55
|
+
rb-fsevent (>= 0.9.3)
|
|
56
|
+
rb-inotify (>= 0.9)
|
|
57
|
+
lumberjack (1.0.9)
|
|
58
|
+
method_source (0.8.2)
|
|
59
|
+
minitest (5.5.0)
|
|
60
|
+
nenv (0.1.1)
|
|
61
|
+
pry (0.10.1)
|
|
62
|
+
coderay (~> 1.1.0)
|
|
63
|
+
method_source (~> 0.8.1)
|
|
64
|
+
slop (~> 3.4)
|
|
65
|
+
rake (10.4.2)
|
|
66
|
+
rb-fsevent (0.9.4)
|
|
67
|
+
rb-inotify (0.9.5)
|
|
68
|
+
ffi (>= 0.5.0)
|
|
69
|
+
rspec (3.1.0)
|
|
70
|
+
rspec-core (~> 3.1.0)
|
|
71
|
+
rspec-expectations (~> 3.1.0)
|
|
72
|
+
rspec-mocks (~> 3.1.0)
|
|
73
|
+
rspec-core (3.1.7)
|
|
74
|
+
rspec-support (~> 3.1.0)
|
|
75
|
+
rspec-expectations (3.1.2)
|
|
76
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
77
|
+
rspec-support (~> 3.1.0)
|
|
78
|
+
rspec-mocks (3.1.3)
|
|
79
|
+
rspec-support (~> 3.1.0)
|
|
80
|
+
rspec-support (3.1.2)
|
|
81
|
+
slop (3.6.0)
|
|
82
|
+
sqlite3 (1.3.10)
|
|
83
|
+
thor (0.19.1)
|
|
84
|
+
thread_safe (0.3.4)
|
|
85
|
+
timers (4.0.1)
|
|
86
|
+
hitimes
|
|
87
|
+
tzinfo (1.2.2)
|
|
88
|
+
thread_safe (~> 0.1)
|
|
89
|
+
|
|
90
|
+
PLATFORMS
|
|
91
|
+
ruby
|
|
92
|
+
|
|
93
|
+
DEPENDENCIES
|
|
94
|
+
activemodel (> 4)
|
|
95
|
+
activerecord (> 4)
|
|
96
|
+
activesupport (> 4)
|
|
97
|
+
appraisal
|
|
98
|
+
bundler (~> 1.6)
|
|
99
|
+
cancannible!
|
|
100
|
+
guard-rspec (~> 4.0)
|
|
101
|
+
rake (~> 10.0)
|
|
102
|
+
rspec (~> 3.0)
|
|
103
|
+
sqlite3 (~> 1.3)
|
data/lib/cancannible/grantee.rb
CHANGED
|
@@ -23,21 +23,15 @@ module Cancannible::Grantee
|
|
|
23
23
|
resource_id = resource.try(:id)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
# This looks ugly, but it avoid version-specific issues with find_by*/find_or_initialize_by* methods
|
|
27
|
+
permission = where(asserted: asserted, ability: ability, resource_id: resource_id, resource_type: resource_type).first
|
|
28
|
+
permission ||= where(asserted: !asserted, ability: ability, resource_id: resource_id, resource_type: resource_type).first
|
|
29
|
+
permission ||= new(asserted: asserted, ability: ability, resource_id: resource_id, resource_type: resource_type)
|
|
30
|
+
permission.asserted = asserted
|
|
31
|
+
permission.save!
|
|
32
|
+
|
|
33
|
+
proxy_association.owner.instance_variable_set :@abilities, nil # invalidate the owner's ability collection
|
|
34
34
|
|
|
35
|
-
# if Rails.version =~ /3\.0/ # the rails 3.0 way
|
|
36
|
-
# proxy_owner.instance_variable_set :@permissions, nil # invalidate the owner's permissions collection
|
|
37
|
-
# proxy_owner.instance_variable_set :@abilities, nil # invalidate the owner's ability collection
|
|
38
|
-
# else
|
|
39
|
-
proxy_association.owner.instance_variable_set :@abilities, nil # invalidate the owner's ability collection
|
|
40
|
-
# end
|
|
41
35
|
permission
|
|
42
36
|
end
|
|
43
37
|
end
|
data/lib/cancannible/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
|
@@ -6,7 +6,7 @@ require 'sqlite3'
|
|
|
6
6
|
|
|
7
7
|
# Requires supporting files with custom matchers and macros, etc,
|
|
8
8
|
# in ./support/ and its subdirectories.
|
|
9
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
|
9
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each {|f| require f}
|
|
10
10
|
|
|
11
11
|
RSpec.configure do |config|
|
|
12
12
|
config.before do
|
data/spec/support/models.rb
CHANGED
|
@@ -29,7 +29,7 @@ class RolesUsers < ActiveRecord::Base
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
class Role < ActiveRecord::Base
|
|
32
|
-
has_many :roles_users, :
|
|
32
|
+
has_many :roles_users, class_name: 'RolesUsers'
|
|
33
33
|
has_many :users, through: :roles_users
|
|
34
34
|
|
|
35
35
|
include Cancannible::Grantee
|
data/spec/unit/grantee_spec.rb
CHANGED
|
@@ -43,9 +43,13 @@ describe Cancannible::Grantee do
|
|
|
43
43
|
context "when permission is not asserted" do
|
|
44
44
|
it { should be_truthy }
|
|
45
45
|
end
|
|
46
|
-
context "when
|
|
46
|
+
context "when :can already asserted" do
|
|
47
47
|
before { grantee.can(:read, resource) }
|
|
48
48
|
it { should be_falsey }
|
|
49
|
+
context "and then reset as :cannot" do
|
|
50
|
+
before { grantee.cannot(:read, resource) }
|
|
51
|
+
it { should be_truthy }
|
|
52
|
+
end
|
|
49
53
|
end
|
|
50
54
|
context "when permission is asserted" do
|
|
51
55
|
before { grantee.cannot(:read, resource) }
|
metadata
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cancannible
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Paul Gallagher
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2015-01-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ! '>='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 3.2.1
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ! '>='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 3.2.1
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: activemodel
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ! '>='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 3.2.1
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - ! '>='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 3.2.1
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: cancan
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -56,16 +56,16 @@ dependencies:
|
|
|
56
56
|
name: activerecord
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - ! '>='
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 3.2.1
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - ! '>='
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: 3.2.1
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: sqlite3
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -147,12 +147,17 @@ files:
|
|
|
147
147
|
- .gitignore
|
|
148
148
|
- .rspec
|
|
149
149
|
- .travis.yml
|
|
150
|
+
- Appraisals
|
|
150
151
|
- Gemfile
|
|
151
152
|
- Guardfile
|
|
152
153
|
- LICENSE.txt
|
|
153
154
|
- README.md
|
|
154
155
|
- Rakefile
|
|
155
156
|
- cancannible.gemspec
|
|
157
|
+
- gemfiles/rails_3.gemfile
|
|
158
|
+
- gemfiles/rails_3.gemfile.lock
|
|
159
|
+
- gemfiles/rails_4.gemfile
|
|
160
|
+
- gemfiles/rails_4.gemfile.lock
|
|
156
161
|
- lib/cancannible.rb
|
|
157
162
|
- lib/cancannible/config.rb
|
|
158
163
|
- lib/cancannible/grantee.rb
|
|
@@ -192,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
192
197
|
version: '0'
|
|
193
198
|
requirements: []
|
|
194
199
|
rubyforge_project:
|
|
195
|
-
rubygems_version: 2.
|
|
200
|
+
rubygems_version: 2.4.5
|
|
196
201
|
signing_key:
|
|
197
202
|
specification_version: 4
|
|
198
203
|
summary: Dynamic, configurable permissions for CanCan
|