cancancan 1.17.0 → 2.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cancancan.gemspec +4 -6
- data/lib/cancan.rb +2 -11
- data/lib/cancan/ability.rb +1 -1
- data/lib/cancan/controller_additions.rb +3 -24
- data/lib/cancan/controller_resource.rb +9 -25
- data/lib/cancan/matchers.rb +7 -1
- data/lib/cancan/model_adapters/active_record_4_adapter.rb +1 -3
- data/lib/cancan/model_adapters/active_record_adapter.rb +2 -2
- data/lib/cancan/rule.rb +2 -2
- data/lib/cancan/version.rb +1 -1
- metadata +22 -69
- data/.gitignore +0 -15
- data/.rspec +0 -1
- data/.rubocop.yml +0 -39
- data/.rubocop_todo.yml +0 -54
- data/.travis.yml +0 -39
- data/Appraisals +0 -105
- data/CHANGELOG.rdoc +0 -536
- data/CONTRIBUTING.md +0 -23
- data/Gemfile +0 -3
- data/LICENSE +0 -22
- data/README.md +0 -234
- data/Rakefile +0 -13
- data/gemfiles/activerecord_3.2.gemfile +0 -18
- data/gemfiles/activerecord_4.0.gemfile +0 -19
- data/gemfiles/activerecord_4.1.gemfile +0 -19
- data/gemfiles/activerecord_4.2.gemfile +0 -21
- data/gemfiles/activerecord_5.0.gemfile +0 -20
- data/gemfiles/mongoid_2.x.gemfile +0 -18
- data/gemfiles/sequel_3.x.gemfile +0 -18
- data/lib/cancan/inherited_resource.rb +0 -20
- data/lib/cancan/model_adapters/active_record_3_adapter.rb +0 -16
- data/lib/cancan/model_adapters/mongoid_adapter.rb +0 -80
- data/lib/cancan/model_adapters/sequel_adapter.rb +0 -87
- data/spec/README.rdoc +0 -27
- data/spec/cancan/ability_spec.rb +0 -553
- data/spec/cancan/controller_additions_spec.rb +0 -164
- data/spec/cancan/controller_resource_spec.rb +0 -645
- data/spec/cancan/exceptions_spec.rb +0 -58
- data/spec/cancan/inherited_resource_spec.rb +0 -71
- data/spec/cancan/matchers_spec.rb +0 -29
- data/spec/cancan/model_adapters/active_record_4_adapter_spec.rb +0 -160
- data/spec/cancan/model_adapters/active_record_adapter_spec.rb +0 -415
- data/spec/cancan/model_adapters/default_adapter_spec.rb +0 -7
- data/spec/cancan/model_adapters/mongoid_adapter_spec.rb +0 -246
- data/spec/cancan/model_adapters/sequel_adapter_spec.rb +0 -129
- data/spec/cancan/rule_spec.rb +0 -52
- data/spec/matchers.rb +0 -13
- data/spec/spec.opts +0 -2
- data/spec/spec_helper.rb +0 -27
- data/spec/support/ability.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf0604650f3cc8651f5960cedd2e857a023947d6
|
4
|
+
data.tar.gz: 1c4e56a7fa9915ef901f3e042645a2064edcfcc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3ec244830eb89b049fc102b85df7978b9162c52c4661b380fda28026e1af3c3edf85518f19b7eae5de528546980b61c95d4054d1c7a6d962dd4385cfe5bcfa7
|
7
|
+
data.tar.gz: 5a17a987ae0a3c8eaee50bff9b958fa66a572c88d1b460f77de7563a2a7a7ae178f587f3f790a39514a6661d9ef9f2845c90e19249197a55b6a3f7dc61c061cc
|
data/cancancan.gemspec
CHANGED
@@ -15,16 +15,14 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.platform = Gem::Platform::RUBY
|
16
16
|
s.license = 'MIT'
|
17
17
|
|
18
|
-
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
19
|
-
s.test_files = `git ls-files -- Appraisals {spec,features,gemfiles}/*`.split($INPUT_RECORD_SEPARATOR)
|
20
|
-
s.executables = `git ls-files -- bin/*`.split($INPUT_RECORD_SEPARATOR).map { |f| File.basename(f) }
|
18
|
+
s.files = `git ls-files lib init.rb cancancan.gemspec`.split($INPUT_RECORD_SEPARATOR)
|
21
19
|
s.require_paths = ['lib']
|
22
20
|
|
23
21
|
s.required_ruby_version = '>= 2.0.0'
|
24
22
|
|
25
23
|
s.add_development_dependency 'bundler', '~> 1.3'
|
26
24
|
s.add_development_dependency 'rubocop', '~> 0.46'
|
27
|
-
s.add_development_dependency 'rake', '~> 10.1.1'
|
28
|
-
s.add_development_dependency 'rspec', '~> 3.2.0'
|
29
|
-
s.add_development_dependency 'appraisal', '>= 2.0.0'
|
25
|
+
s.add_development_dependency 'rake', '~> 10.1', '>= 10.1.1'
|
26
|
+
s.add_development_dependency 'rspec', '~> 3.2', '>= 3.2.0'
|
27
|
+
s.add_development_dependency 'appraisal', '~> 2.0', '>= 2.0.0'
|
30
28
|
end
|
data/lib/cancan.rb
CHANGED
@@ -5,20 +5,11 @@ require 'cancan/controller_resource'
|
|
5
5
|
require 'cancan/controller_additions'
|
6
6
|
require 'cancan/model_additions'
|
7
7
|
require 'cancan/exceptions'
|
8
|
-
require 'cancan/inherited_resource'
|
9
8
|
|
10
9
|
require 'cancan/model_adapters/abstract_adapter'
|
11
10
|
require 'cancan/model_adapters/default_adapter'
|
12
11
|
|
13
12
|
if defined? ActiveRecord
|
14
|
-
require 'cancan/model_adapters/active_record_adapter'
|
15
|
-
|
16
|
-
ActiveRecord.version >= Gem::Version.new('4')
|
17
|
-
require 'cancan/model_adapters/active_record_4_adapter'
|
18
|
-
else
|
19
|
-
require 'cancan/model_adapters/active_record_3_adapter'
|
20
|
-
end
|
13
|
+
require 'cancan/model_adapters/active_record_adapter'
|
14
|
+
require 'cancan/model_adapters/active_record_4_adapter'
|
21
15
|
end
|
22
|
-
|
23
|
-
require 'cancan/model_adapters/mongoid_adapter' if defined?(Mongoid) && defined?(Mongoid::Document)
|
24
|
-
require 'cancan/model_adapters/sequel_adapter' if defined? Sequel
|
data/lib/cancan/ability.rb
CHANGED
@@ -256,8 +256,6 @@ module CanCan
|
|
256
256
|
# check_authorization :unless => :devise_controller?
|
257
257
|
#
|
258
258
|
def check_authorization(options = {})
|
259
|
-
method_name = active_support_4? ? :after_action : :after_filter
|
260
|
-
|
261
259
|
block = proc do |controller|
|
262
260
|
next if controller.instance_variable_defined?(:@_authorized)
|
263
261
|
next if options[:if] && !controller.send(options[:if])
|
@@ -267,7 +265,7 @@ module CanCan
|
|
267
265
|
'Add skip_authorization_check to bypass this check.'
|
268
266
|
end
|
269
267
|
|
270
|
-
send(
|
268
|
+
send(:after_action, options.slice(:only, :except), &block)
|
271
269
|
end
|
272
270
|
|
273
271
|
# Call this in the class of a controller to skip the check_authorization behavior on the actions.
|
@@ -278,32 +276,17 @@ module CanCan
|
|
278
276
|
#
|
279
277
|
# Any arguments are passed to the +before_action+ it triggers.
|
280
278
|
def skip_authorization_check(*args)
|
281
|
-
method_name = active_support_4? ? :before_action : :before_filter
|
282
279
|
block = proc { |controller| controller.instance_variable_set(:@_authorized, true) }
|
283
|
-
send(
|
284
|
-
end
|
285
|
-
|
286
|
-
def skip_authorization(*_args)
|
287
|
-
raise ImplementationRemoved,
|
288
|
-
'The CanCan skip_authorization method has been renamed to skip_authorization_check. '\
|
289
|
-
'Please update your code.'
|
280
|
+
send(:before_action, *args, &block)
|
290
281
|
end
|
291
282
|
|
292
283
|
def cancan_resource_class
|
293
|
-
|
294
|
-
InheritedResource
|
295
|
-
else
|
296
|
-
ControllerResource
|
297
|
-
end
|
284
|
+
ControllerResource
|
298
285
|
end
|
299
286
|
|
300
287
|
def cancan_skipper
|
301
288
|
@_cancan_skipper ||= { authorize: {}, load: {} }
|
302
289
|
end
|
303
|
-
|
304
|
-
def active_support_4?
|
305
|
-
ActiveSupport.respond_to?(:version) && ActiveSupport.version >= Gem::Version.new('4')
|
306
|
-
end
|
307
290
|
end
|
308
291
|
|
309
292
|
def self.included(base)
|
@@ -352,10 +335,6 @@ module CanCan
|
|
352
335
|
current_ability.authorize!(*args)
|
353
336
|
end
|
354
337
|
|
355
|
-
def unauthorized!(_message = nil)
|
356
|
-
raise ImplementationRemoved, 'The unauthorized! method has been removed from CanCan, use authorize! instead.'
|
357
|
-
end
|
358
|
-
|
359
338
|
# Creates and returns the current user's ability and caches it. If you
|
360
339
|
# want to override how the Ability is defined then this is the place.
|
361
340
|
# Just define the method in the controller to change behavior.
|
@@ -14,11 +14,7 @@ module CanCan
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.before_callback_name(options)
|
17
|
-
|
18
|
-
options.delete(:prepend) ? :prepend_before_action : :before_action
|
19
|
-
else
|
20
|
-
options.delete(:prepend) ? :prepend_before_filter : :before_filter
|
21
|
-
end
|
17
|
+
options.delete(:prepend) ? :prepend_before_action : :before_action
|
22
18
|
end
|
23
19
|
|
24
20
|
def initialize(controller, *args)
|
@@ -26,12 +22,6 @@ module CanCan
|
|
26
22
|
@params = controller.params
|
27
23
|
@options = args.extract_options!
|
28
24
|
@name = args.first
|
29
|
-
nested_err = 'The :nested option is no longer supported, instead use :through with separate load/authorize call.'
|
30
|
-
raise CanCan::ImplementationRemoved, nested_err if @options[:nested]
|
31
|
-
name_err = 'The :name option is no longer supported, instead pass the name as the first argument.'
|
32
|
-
raise CanCan::ImplementationRemoved, name_err if @options[:name]
|
33
|
-
resource_err = 'The :resource option has been renamed back to :class, use false if no class.'
|
34
|
-
raise CanCan::ImplementationRemoved, resource_err if @options[:resource]
|
35
25
|
end
|
36
26
|
|
37
27
|
def load_and_authorize_resource
|
@@ -138,7 +128,7 @@ module CanCan
|
|
138
128
|
end
|
139
129
|
|
140
130
|
def id_param
|
141
|
-
@params[id_param_key].to_s if @params[id_param_key]
|
131
|
+
@params[id_param_key].to_s if @params[id_param_key].present?
|
142
132
|
end
|
143
133
|
|
144
134
|
def id_param_key
|
@@ -205,13 +195,11 @@ module CanCan
|
|
205
195
|
|
206
196
|
def resource_base_through
|
207
197
|
if parent_resource
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
base = base.scoped if base.respond_to?(:scoped) && active_record_3?
|
214
|
-
base
|
198
|
+
if @options[:singleton]
|
199
|
+
resource_class
|
200
|
+
else
|
201
|
+
parent_resource.send(@options[:through_association] || name.to_s.pluralize)
|
202
|
+
end
|
215
203
|
elsif @options[:shallow]
|
216
204
|
resource_class
|
217
205
|
else
|
@@ -220,10 +208,6 @@ module CanCan
|
|
220
208
|
end
|
221
209
|
end
|
222
210
|
|
223
|
-
def active_record_3?
|
224
|
-
defined?(ActiveRecord) && ActiveRecord::VERSION::MAJOR == 3
|
225
|
-
end
|
226
|
-
|
227
211
|
def parent_name
|
228
212
|
@options[:through] && [@options[:through]].flatten.detect { |i| fetch_parent(i) }
|
229
213
|
end
|
@@ -313,11 +297,11 @@ module CanCan
|
|
313
297
|
end
|
314
298
|
|
315
299
|
def new_actions
|
316
|
-
[
|
300
|
+
%i[new create] + Array(@options[:new])
|
317
301
|
end
|
318
302
|
|
319
303
|
def save_actions
|
320
|
-
[
|
304
|
+
%i[create update]
|
321
305
|
end
|
322
306
|
|
323
307
|
private
|
data/lib/cancan/matchers.rb
CHANGED
@@ -9,7 +9,13 @@ end
|
|
9
9
|
|
10
10
|
Kernel.const_get(rspec_module)::Matchers.define :be_able_to do |*args|
|
11
11
|
match do |ability|
|
12
|
-
|
12
|
+
actions = args.first
|
13
|
+
if actions.is_a? Array
|
14
|
+
break false if actions.empty?
|
15
|
+
actions.all? { |action| ability.can?(action, *args[1..-1]) }
|
16
|
+
else
|
17
|
+
ability.can?(*args)
|
18
|
+
end
|
13
19
|
end
|
14
20
|
|
15
21
|
# Check that RSpec is < 2.99
|
@@ -8,9 +8,7 @@ module CanCan
|
|
8
8
|
|
9
9
|
# TODO: this should be private
|
10
10
|
def self.override_condition_matching?(subject, name, _value)
|
11
|
-
|
12
|
-
(ActiveRecord::VERSION::MAJOR > 4 || ActiveRecord::VERSION::MINOR >= 1) &&
|
13
|
-
subject.class.defined_enums.include?(name.to_s)
|
11
|
+
subject.class.defined_enums.include?(name.to_s)
|
14
12
|
end
|
15
13
|
|
16
14
|
# TODO: this should be private
|
data/lib/cancan/rule.rb
CHANGED
@@ -16,8 +16,8 @@ module CanCan
|
|
16
16
|
raise Error, both_block_and_hash_error if conditions.is_a?(Hash) && block
|
17
17
|
@match_all = action.nil? && subject.nil?
|
18
18
|
@base_behavior = base_behavior
|
19
|
-
@actions =
|
20
|
-
@subjects =
|
19
|
+
@actions = Array(action)
|
20
|
+
@subjects = Array(subject)
|
21
21
|
@conditions = conditions || {}
|
22
22
|
@block = block
|
23
23
|
end
|
data/lib/cancan/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cancancan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alessandro Rodi (Renuo AG)
|
@@ -46,6 +46,9 @@ dependencies:
|
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
48
|
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '10.1'
|
51
|
+
- - ">="
|
49
52
|
- !ruby/object:Gem::Version
|
50
53
|
version: 10.1.1
|
51
54
|
type: :development
|
@@ -53,6 +56,9 @@ dependencies:
|
|
53
56
|
version_requirements: !ruby/object:Gem::Requirement
|
54
57
|
requirements:
|
55
58
|
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '10.1'
|
61
|
+
- - ">="
|
56
62
|
- !ruby/object:Gem::Version
|
57
63
|
version: 10.1.1
|
58
64
|
- !ruby/object:Gem::Dependency
|
@@ -60,6 +66,9 @@ dependencies:
|
|
60
66
|
requirement: !ruby/object:Gem::Requirement
|
61
67
|
requirements:
|
62
68
|
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '3.2'
|
71
|
+
- - ">="
|
63
72
|
- !ruby/object:Gem::Version
|
64
73
|
version: 3.2.0
|
65
74
|
type: :development
|
@@ -67,12 +76,18 @@ dependencies:
|
|
67
76
|
version_requirements: !ruby/object:Gem::Requirement
|
68
77
|
requirements:
|
69
78
|
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '3.2'
|
81
|
+
- - ">="
|
70
82
|
- !ruby/object:Gem::Version
|
71
83
|
version: 3.2.0
|
72
84
|
- !ruby/object:Gem::Dependency
|
73
85
|
name: appraisal
|
74
86
|
requirement: !ruby/object:Gem::Requirement
|
75
87
|
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '2.0'
|
76
91
|
- - ">="
|
77
92
|
- !ruby/object:Gem::Version
|
78
93
|
version: 2.0.0
|
@@ -80,6 +95,9 @@ dependencies:
|
|
80
95
|
prerelease: false
|
81
96
|
version_requirements: !ruby/object:Gem::Requirement
|
82
97
|
requirements:
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '2.0'
|
83
101
|
- - ">="
|
84
102
|
- !ruby/object:Gem::Version
|
85
103
|
version: 2.0.0
|
@@ -90,41 +108,18 @@ executables: []
|
|
90
108
|
extensions: []
|
91
109
|
extra_rdoc_files: []
|
92
110
|
files:
|
93
|
-
- ".gitignore"
|
94
|
-
- ".rspec"
|
95
|
-
- ".rubocop.yml"
|
96
|
-
- ".rubocop_todo.yml"
|
97
|
-
- ".travis.yml"
|
98
|
-
- Appraisals
|
99
|
-
- CHANGELOG.rdoc
|
100
|
-
- CONTRIBUTING.md
|
101
|
-
- Gemfile
|
102
|
-
- LICENSE
|
103
|
-
- README.md
|
104
|
-
- Rakefile
|
105
111
|
- cancancan.gemspec
|
106
|
-
- gemfiles/activerecord_3.2.gemfile
|
107
|
-
- gemfiles/activerecord_4.0.gemfile
|
108
|
-
- gemfiles/activerecord_4.1.gemfile
|
109
|
-
- gemfiles/activerecord_4.2.gemfile
|
110
|
-
- gemfiles/activerecord_5.0.gemfile
|
111
|
-
- gemfiles/mongoid_2.x.gemfile
|
112
|
-
- gemfiles/sequel_3.x.gemfile
|
113
112
|
- init.rb
|
114
113
|
- lib/cancan.rb
|
115
114
|
- lib/cancan/ability.rb
|
116
115
|
- lib/cancan/controller_additions.rb
|
117
116
|
- lib/cancan/controller_resource.rb
|
118
117
|
- lib/cancan/exceptions.rb
|
119
|
-
- lib/cancan/inherited_resource.rb
|
120
118
|
- lib/cancan/matchers.rb
|
121
119
|
- lib/cancan/model_adapters/abstract_adapter.rb
|
122
|
-
- lib/cancan/model_adapters/active_record_3_adapter.rb
|
123
120
|
- lib/cancan/model_adapters/active_record_4_adapter.rb
|
124
121
|
- lib/cancan/model_adapters/active_record_adapter.rb
|
125
122
|
- lib/cancan/model_adapters/default_adapter.rb
|
126
|
-
- lib/cancan/model_adapters/mongoid_adapter.rb
|
127
|
-
- lib/cancan/model_adapters/sequel_adapter.rb
|
128
123
|
- lib/cancan/model_additions.rb
|
129
124
|
- lib/cancan/rule.rb
|
130
125
|
- lib/cancan/version.rb
|
@@ -132,23 +127,6 @@ files:
|
|
132
127
|
- lib/generators/cancan/ability/USAGE
|
133
128
|
- lib/generators/cancan/ability/ability_generator.rb
|
134
129
|
- lib/generators/cancan/ability/templates/ability.rb
|
135
|
-
- spec/README.rdoc
|
136
|
-
- spec/cancan/ability_spec.rb
|
137
|
-
- spec/cancan/controller_additions_spec.rb
|
138
|
-
- spec/cancan/controller_resource_spec.rb
|
139
|
-
- spec/cancan/exceptions_spec.rb
|
140
|
-
- spec/cancan/inherited_resource_spec.rb
|
141
|
-
- spec/cancan/matchers_spec.rb
|
142
|
-
- spec/cancan/model_adapters/active_record_4_adapter_spec.rb
|
143
|
-
- spec/cancan/model_adapters/active_record_adapter_spec.rb
|
144
|
-
- spec/cancan/model_adapters/default_adapter_spec.rb
|
145
|
-
- spec/cancan/model_adapters/mongoid_adapter_spec.rb
|
146
|
-
- spec/cancan/model_adapters/sequel_adapter_spec.rb
|
147
|
-
- spec/cancan/rule_spec.rb
|
148
|
-
- spec/matchers.rb
|
149
|
-
- spec/spec.opts
|
150
|
-
- spec/spec_helper.rb
|
151
|
-
- spec/support/ability.rb
|
152
130
|
homepage: https://github.com/CanCanCommunity/cancancan
|
153
131
|
licenses:
|
154
132
|
- MIT
|
@@ -164,38 +142,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
164
142
|
version: 2.0.0
|
165
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
144
|
requirements:
|
167
|
-
- - "
|
145
|
+
- - ">"
|
168
146
|
- !ruby/object:Gem::Version
|
169
|
-
version:
|
147
|
+
version: 1.3.1
|
170
148
|
requirements: []
|
171
149
|
rubyforge_project:
|
172
150
|
rubygems_version: 2.5.2
|
173
151
|
signing_key:
|
174
152
|
specification_version: 4
|
175
153
|
summary: Simple authorization solution for Rails.
|
176
|
-
test_files:
|
177
|
-
- Appraisals
|
178
|
-
- gemfiles/activerecord_3.2.gemfile
|
179
|
-
- gemfiles/activerecord_4.0.gemfile
|
180
|
-
- gemfiles/activerecord_4.1.gemfile
|
181
|
-
- gemfiles/activerecord_4.2.gemfile
|
182
|
-
- gemfiles/activerecord_5.0.gemfile
|
183
|
-
- gemfiles/mongoid_2.x.gemfile
|
184
|
-
- gemfiles/sequel_3.x.gemfile
|
185
|
-
- spec/README.rdoc
|
186
|
-
- spec/cancan/ability_spec.rb
|
187
|
-
- spec/cancan/controller_additions_spec.rb
|
188
|
-
- spec/cancan/controller_resource_spec.rb
|
189
|
-
- spec/cancan/exceptions_spec.rb
|
190
|
-
- spec/cancan/inherited_resource_spec.rb
|
191
|
-
- spec/cancan/matchers_spec.rb
|
192
|
-
- spec/cancan/model_adapters/active_record_4_adapter_spec.rb
|
193
|
-
- spec/cancan/model_adapters/active_record_adapter_spec.rb
|
194
|
-
- spec/cancan/model_adapters/default_adapter_spec.rb
|
195
|
-
- spec/cancan/model_adapters/mongoid_adapter_spec.rb
|
196
|
-
- spec/cancan/model_adapters/sequel_adapter_spec.rb
|
197
|
-
- spec/cancan/rule_spec.rb
|
198
|
-
- spec/matchers.rb
|
199
|
-
- spec/spec.opts
|
200
|
-
- spec/spec_helper.rb
|
201
|
-
- spec/support/ability.rb
|
154
|
+
test_files: []
|