Class: LintFu::Rails::ModelApplicationBuilder

Inherits:
ModelElementBuilder show all
Defined in:
lib/lint_fu/rails/model_application_builder.rb

Instance Attribute Summary

Attributes inherited from ModelElementBuilder

#model_elements, #namespace

Instance Method Summary collapse

Methods inherited from ModelElementBuilder

#process_class, #process_module

Constructor Details

#initialize(fs_root) ⇒ ModelApplicationBuilder

Returns a new instance of ModelApplicationBuilder.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/lint_fu/rails/model_application_builder.rb', line 4

def initialize(fs_root)
  super()
  
  application = ModelApplication.new(fs_root)

  models_dir = File.join(fs_root, 'app', 'models')
  builder = ActiveRecord::ModelModelBuilder.new
  #TODO ensure the Rails app is using ActiveRecord
  Dir.glob(File.join(models_dir, '**', '*.rb')).each do |f|
    sexp = Parser.parse_ruby(f)
    builder.process(sexp)
  end
  builder.model_elements.each { |elem| application.add_submodel(elem) }

  controllers_dir = File.join(fs_root, 'app', 'controllers')
  builder = ActionPack::ModelControllerBuilder.new
  Dir.glob(File.join(controllers_dir, '**', '*.rb')).each do |f|
    contents = File.read(f)
    sexp = RubyParser.new.parse(contents)
    sexp.file = f
    builder.process(sexp)
  end
  builder.model_elements.each { |elem| application.add_submodel(elem) }

  self.model_elements << application        
end