7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/rail_verdict/rails_context/resolvers/policy_resolver.rb', line 7
def self.for(repository_root:, kind:, path:, constant:)
return [] unless %w[model controller].include?(kind)
return [] if constant.nil? || constant.empty?
base_name = constant.split("::").last.to_s
snake = underscore(base_name)
dir_parts = constant.split("::")[0...-1].map { |part| underscore(part) }
relative_dir = dir_parts.empty? ? "" : "#{dir_parts.join('/')}/"
repo_relative = "app/policies/#{relative_dir}#{snake}_policy.rb"
full = File.join(repository_root, repo_relative)
return [] unless safe_exists?(repository_root, full)
[{ "path" => repo_relative, "relationship" => "policy", "confidence" => "conventional", "provenance" => "file_exists:#{repo_relative}" }]
rescue StandardError
[]
end
|