Class: AwesomeAnnotate::Model

Inherits:
Thor
  • Object
show all
Includes:
AnnotationBlock, RailsEnvironment, SchemaAnnotation, Thor::Actions
Defined in:
lib/awesome_annotate/model.rb

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Model

Returns a new instance of Model.



17
18
19
20
21
22
23
24
25
26
# File 'lib/awesome_annotate/model.rb', line 17

def initialize(params = {})
  super()
  @env_file_path = Pathname.new(params[:env_file_path] || 'config/environment.rb')
  @model_dir = Pathname.new(params[:model_dir] || 'app/models')
  @annotation_position = params[:annotation_position] || 'top'
  @exclude_model_files = params[:exclude_model_files] || []
  @include_indexes = params.fetch(:include_indexes, true)
  @exclude_columns = params[:exclude_columns] || []
  @include_column_defaults = params.fetch(:include_column_defaults, true)
end

Instance Method Details

#annotate(model_name) ⇒ Object



29
30
31
32
33
34
# File 'lib/awesome_annotate/model.rb', line 29

def annotate(model_name)
  raise 'Rails application path is required' unless @env_file_path.exist?

  load_rails_environment
  annotate_loaded_model(model_name)
end

#annotate_all(model_names = []) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/awesome_annotate/model.rb', line 37

def annotate_all(model_names = [])
  raise 'Rails application path is required' unless @env_file_path.exist?

  load_rails_environment

  if model_names.empty?
    discover_model_names.each { |model_name| annotate_discovered_model(model_name) }
  else
    model_names.each { |model_name| annotate_loaded_model(model_name) }
  end
end

#remove(model_name) ⇒ Object



50
51
52
53
54
# File 'lib/awesome_annotate/model.rb', line 50

def remove(model_name)
  file_path = model_file_path(model_name)

  remove_model_annotation(file_path)
end

#remove_all(model_names = []) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/awesome_annotate/model.rb', line 57

def remove_all(model_names = [])
  if model_names.empty?
    discovered_model_file_paths.each { |file_path| remove_model_annotation(file_path, report_missing: false) }
  else
    model_names.each { |model_name| remove(model_name) }
  end
end