Class: Brakeman::AppTree
- Inherits:
-
Object
- Object
- Brakeman::AppTree
- Defined in:
- lib/brakeman/app_tree.rb
Constant Summary collapse
- VIEW_EXTENSIONS =
%w[html.erb html.haml rhtml js.erb html.slim].join(",")
Instance Attribute Summary collapse
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Class Method Summary collapse
Instance Method Summary collapse
- #controller_paths ⇒ Object
- #exists?(path) ⇒ Boolean
- #expand_path(path) ⇒ Object
-
#initialize(root, init_options = {}) ⇒ AppTree
constructor
A new instance of AppTree.
- #initializer_paths ⇒ Object
- #layout_exists?(name) ⇒ Boolean
- #lib_paths ⇒ Object
- #model_paths ⇒ Object
-
#path_exists?(path) ⇒ Boolean
This is a pair for #read_path.
- #read(path) ⇒ Object
-
#read_path(path) ⇒ Object
This variation requires full paths instead of paths based off the project root.
- #template_paths ⇒ Object
Constructor Details
Instance Attribute Details
#root ⇒ Object (readonly)
Returns the value of attribute root.
7 8 9 |
# File 'lib/brakeman/app_tree.rb', line 7 def root @root end |
Class Method Details
.from_options(options) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/brakeman/app_tree.rb', line 9 def self.() root = File. [:app_path] # Convert files into Regexp for matching = {} if [:skip_files] [:skip_files] = regex_for_paths([:skip_files]) end if [:only_files] [:only_files] = regex_for_paths([:only_files]) end [:additional_libs_path] = [:additional_libs_path] new(root, ) end |
Instance Method Details
#controller_paths ⇒ Object
90 91 92 |
# File 'lib/brakeman/app_tree.rb', line 90 def controller_paths @controller_paths ||= find_paths("app/**/controllers") end |
#exists?(path) ⇒ Boolean
77 78 79 |
# File 'lib/brakeman/app_tree.rb', line 77 def exists?(path) File.exist?(File.join(@root, path)) end |
#expand_path(path) ⇒ Object
61 62 63 |
# File 'lib/brakeman/app_tree.rb', line 61 def (path) File.(path, @root) end |
#initializer_paths ⇒ Object
86 87 88 |
# File 'lib/brakeman/app_tree.rb', line 86 def initializer_paths @initializer_paths ||= find_paths("config/initializers") end |
#layout_exists?(name) ⇒ Boolean
102 103 104 105 |
# File 'lib/brakeman/app_tree.rb', line 102 def layout_exists?(name) pattern = "#{@root}/{engines/*/,}app/views/layouts/#{name}.html.{erb,haml,slim}" !Dir.glob(pattern).empty? end |
#lib_paths ⇒ Object
107 108 109 110 111 |
# File 'lib/brakeman/app_tree.rb', line 107 def lib_paths @lib_files ||= find_paths("lib").reject { |path| path.include? "/generators/" or path.include? "lib/tasks/" } + find_additional_lib_paths + find_helper_paths end |
#model_paths ⇒ Object
94 95 96 |
# File 'lib/brakeman/app_tree.rb', line 94 def model_paths @model_paths ||= find_paths("app/**/models") end |
#path_exists?(path) ⇒ Boolean
This is a pair for #read_path. Again, would like to kill these
82 83 84 |
# File 'lib/brakeman/app_tree.rb', line 82 def path_exists?(path) File.exist?(path) end |
#read(path) ⇒ Object
65 66 67 |
# File 'lib/brakeman/app_tree.rb', line 65 def read(path) File.read(File.join(@root, path)) end |
#read_path(path) ⇒ Object
This variation requires full paths instead of paths based off the project root. I’d prefer to get all the code outside of AppTree using project-root based paths (e.g. app/models/user.rb) instead of full paths, but I suspect it’s an incompatible change.
73 74 75 |
# File 'lib/brakeman/app_tree.rb', line 73 def read_path(path) File.read(path) end |
#template_paths ⇒ Object
98 99 100 |
# File 'lib/brakeman/app_tree.rb', line 98 def template_paths @template_paths ||= find_paths("app/**/views", "*.{#{VIEW_EXTENSIONS}}") end |