Class: Sidenotes::Railtie
- Inherits:
-
Rails::Railtie
- Object
- Rails::Railtie
- Sidenotes::Railtie
- 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
- .install_migrate_hooks ⇒ Object
- .print_drifts(verifier) ⇒ Object
- .print_missing_sidecars(verifier) ⇒ Object
- .print_pending_migrations(verifier) ⇒ Object
- .print_summary(verifier) ⇒ Object
- .print_verify_report(verifier) ⇒ Object
- .run_generate ⇒ Object
- .run_model ⇒ Object
- .run_verify ⇒ Object
Class Method Details
.install_migrate_hooks ⇒ Object
107 108 109 110 111 112 113 114 115 |
# File 'lib/sidenotes/railtie.rb', line 107 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 |
.print_drifts(verifier) ⇒ Object
85 86 87 88 89 90 91 |
# File 'lib/sidenotes/railtie.rb', line 85 def self.print_drifts(verifier) verifier.drifts.each do |drift| puts " #{File.basename(drift.sidecar_path)} - DRIFT:" drift.issues.each { |issue| puts " #{issue}" } puts end end |
.print_missing_sidecars(verifier) ⇒ Object
93 94 95 96 97 |
# File 'lib/sidenotes/railtie.rb', line 93 def self.print_missing_sidecars(verifier) verifier.missing_sidecars.each do |name| puts " #{name} - MISSING (model exists, no sidecar file)" end end |
.print_pending_migrations(verifier) ⇒ Object
77 78 79 80 81 82 83 |
# File 'lib/sidenotes/railtie.rb', line 77 def self.print_pending_migrations(verifier) puts ' PENDING MIGRATIONS detected (run `rails db:migrate` first):' verifier.pending_migrations.each do |m| puts " - #{m['version']} #{m['name']}" end puts end |
.print_summary(verifier) ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/sidenotes/railtie.rb', line 99 def self.print_summary(verifier) if verifier.drift? puts "#{verifier.issue_count} issue(s) found. Run `rake db:migrate && rake sidenotes:generate` to update." else puts 'All annotations are up to date.' end end |
.print_verify_report(verifier) ⇒ Object
67 68 69 70 71 72 73 74 75 |
# File 'lib/sidenotes/railtie.rb', line 67 def self.print_verify_report(verifier) puts "Checking #{verifier.checked_count} model annotations against database..." puts print_pending_migrations(verifier) if verifier.pending_migrations? print_drifts(verifier) print_missing_sidecars(verifier) print_summary(verifier) end |
.run_generate ⇒ Object
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_model ⇒ Object
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_verify ⇒ Object
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 |