Class: Sidenotes::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/sidenotes/railtie.rb

Constant Summary collapse

MIGRATE_TASKS =
%w[db:migrate db:migrate:up db:migrate:down db:rollback].freeze

Class Method Summary collapse

Class Method Details

.install_migrate_hooksObject



88
89
90
91
92
93
94
95
96
# File 'lib/sidenotes/railtie.rb', line 88

def self.install_migrate_hooks
  MIGRATE_TASKS.each do |task_name|
    next unless Rake::Task.task_defined?(task_name)

    Rake::Task[task_name].enhance do
      Rake::Task['sidenotes:generate'].invoke if Rake::Task.task_defined?('sidenotes:generate')
    end
  end
end


67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/sidenotes/railtie.rb', line 67

def self.print_verify_report(verifier)
  puts "Checking #{verifier.checked_count} model annotations against database..."
  puts

  verifier.drifts.each do |drift|
    puts "  #{File.basename(drift.sidecar_path)} - DRIFT:"
    drift.issues.each { |issue| puts "    #{issue}" }
    puts
  end

  verifier.missing_sidecars.each do |name|
    puts "  #{name} - MISSING (model exists, no sidecar file)"
  end

  if verifier.drift?
    puts "#{verifier.issue_count} issue(s) found. Run `rake sidenotes:generate` to update."
  else
    puts 'All annotations are up to date.'
  end
end

.run_generateObject



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/sidenotes/railtie.rb', line 34

def self.run_generate
  generator = Sidenotes::Generator.new
  generator.generate_all

  puts "Sidenotes: Generated #{generator.models_generated.size} annotation(s)"
  generator.models_generated.each { |m| puts "  #{m}" }

  return unless generator.models_skipped.any?

  puts "Skipped #{generator.models_skipped.size} model(s):"
  generator.models_skipped.each { |m| puts "  #{m} (skipped)" }
end

.run_modelObject



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/sidenotes/railtie.rb', line 47

def self.run_model
  model_name = ENV.fetch('MODEL', nil)
  abort 'Usage: rake sidenotes:model MODEL=User' unless model_name

  generator = Sidenotes::Generator.new
  path = generator.generate_for(model_name)

  if path
    puts "Sidenotes: Generated #{path}"
  else
    puts "Sidenotes: Could not generate annotation for #{model_name}"
  end
end

.run_verifyObject



61
62
63
64
65
# File 'lib/sidenotes/railtie.rb', line 61

def self.run_verify
  verifier = Sidenotes::Verifier.new.verify_all
  print_verify_report(verifier)
  exit(1) if verifier.drift?
end